From 9be4af55521d653cfb1c5037412e937f800888c7 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Sun, 8 Jan 2017 18:52:14 +0000 Subject: Types fix, first pass Deeper fixes need to be done if the avltree.h API ever changes. --- src/minutils/s6-devd.c | 7 ++- src/minutils/s6-logwatch.c | 21 ++++---- src/minutils/s6-ps.c | 26 +++++----- src/minutils/s6-ps.h | 46 ++++++++++------- src/minutils/s6-swapoff.c | 5 +- src/minutils/s6-uevent-listener.c | 4 +- src/minutils/s6-uevent-spawner.c | 11 ++-- src/minutils/s6-umount.c | 3 +- src/minutils/s6ps_grcache.c | 15 +++--- src/minutils/s6ps_otree.c | 2 + src/minutils/s6ps_pfield.c | 104 +++++++++++++++++++------------------- src/minutils/s6ps_pwcache.c | 11 ++-- src/minutils/s6ps_statparse.c | 39 ++++++++++---- src/minutils/s6ps_ttycache.c | 41 +++++---------- src/minutils/s6ps_wchan.c | 27 +++++----- 15 files changed, 192 insertions(+), 170 deletions(-) diff --git a/src/minutils/s6-devd.c b/src/minutils/s6-devd.c index 74f2d41..58508a5 100644 --- a/src/minutils/s6-devd.c +++ b/src/minutils/s6-devd.c @@ -1,5 +1,6 @@ /* ISC license. */ +#include #include #include #include @@ -11,7 +12,8 @@ static inline int check_targ (char const *s) { - unsigned int t = 0, pos = 0 ; + size_t pos = 0 ; + unsigned int t = 0 ; pos += uint_scan(s + pos, &t) ; if (s[pos] && s[pos++] != ':') return 0 ; if (!t) return 1 ; @@ -50,7 +52,8 @@ int main (int argc, char const *const *argv, char const *const *envp) if (!argc) strerr_dieusage(100, USAGE) ; { - unsigned int m = 0, pos = 0 ; + size_t pos = 0 ; + unsigned int m = 0 ; char fmt[UINT_FMT * 3] ; char const *newargv[argc + 15] ; newargv[m++] = S6_LINUX_UTILS_BINPREFIX "s6-uevent-listener" ; diff --git a/src/minutils/s6-logwatch.c b/src/minutils/s6-logwatch.c index a2c493d..66ff442 100644 --- a/src/minutils/s6-logwatch.c +++ b/src/minutils/s6-logwatch.c @@ -1,5 +1,6 @@ /* ISC license. */ +#include #include #include #include @@ -36,15 +37,15 @@ static void X (void) strerr_diefu1x(101, "follow file state changes (race condition triggered). Sorry.") ; } -static unsigned long nbcat (int fdcurrent) +static size_t nbcat (int fdcurrent) { char buf[N+1] ; buffer b = BUFFER_INIT(&buffer_read, fdcurrent, buf, N+1) ; siovec_t v[2] ; - unsigned long bytes = 0 ; + size_t bytes = 0 ; for (;;) { - int r = sanitize_read(buffer_fill(&b)) ; + ssize_t r = sanitize_read(buffer_fill(&b)) ; if (!r) break ; if (r < 0) { @@ -85,8 +86,8 @@ int main (int argc, char const *const *argv) if (chdir(dir) < 0) strerr_diefu2sys(111, "chdir to ", dir) ; { iopause_fd x[1] = { { -1, IOPAUSE_READ, 0 } } ; + size_t pos = 0 ; int fdcurrent = -1 ; - unsigned long pos = 0 ; int w ; bstate_t state = B_TAILING ; x[0].fd = inotify_init() ; @@ -103,20 +104,20 @@ int main (int argc, char const *const *argv) for (;;) { - int r ; + int rr ; if (!bufalloc_flush(bufalloc_1)) strerr_diefu1sys(111, "write to stdout") ; - r = iopause(x, 1, 0, 0) ; - if (r < 0) strerr_diefu1sys(111, "iopause") ; + rr = iopause(x, 1, 0, 0) ; + if (rr < 0) strerr_diefu1sys(111, "iopause") ; if (x[0].revents & IOPAUSE_READ) { char iebuf[IESIZE] ; while (bufalloc_len(bufalloc_1) < maxlen) { - unsigned int i = 0 ; - r = sanitize_read(fd_read(x[0].fd, iebuf, IESIZE)) ; + size_t i = 0 ; + ssize_t r = sanitize_read(fd_read(x[0].fd, iebuf, IESIZE)) ; if (r < 0) strerr_diefu1sys(111, "read from inotify fd") ; if (!r) break ; - while (i < (unsigned int)r) + while (i < (size_t)r) { struct inotify_event *ie = (struct inotify_event *)(iebuf + i) ; if ((ie->wd != w) || !ie->len || str_diff(ie->name, "current")) goto cont ; diff --git a/src/minutils/s6-ps.c b/src/minutils/s6-ps.c index f4f06bd..2b435bc 100644 --- a/src/minutils/s6-ps.c +++ b/src/minutils/s6-ps.c @@ -49,7 +49,7 @@ void *left_dtok (unsigned int d, void *x) { - return (void *)&genalloc_s(diuint, (genalloc *)x)[d].left ; + return (void *)&genalloc_s(dius_t, (genalloc *)x)[d].left ; } int uint_cmp (void const *a, void const *b, void *x) @@ -81,7 +81,7 @@ static inline unsigned int fieldscan (char const *s, pfield_t *list, uint64 *fbf int cont = 1 ; for (; cont ; n++) { - unsigned int len = str_chr(s, ',') ; + size_t len = str_chr(s, ',') ; register pfield_t i = 0 ; if (!len) strerr_dief3x(100, "invalid", " (empty)", " field for -o option") ; if (!s[len]) cont = 0 ; @@ -103,9 +103,9 @@ static inline unsigned int fieldscan (char const *s, pfield_t *list, uint64 *fbf return n ; } -static int slurpit (unsigned int dirfd, stralloc *data, char const *buf, char const *what, unsigned int *len) +static int slurpit (unsigned int dirfd, stralloc *data, char const *buf, char const *what, size_t *len) { - unsigned int start = data->len ; + size_t start = data->len ; int fd = open_readat(dirfd, what) ; if (fd < 0) return 0 ; if (!slurp(data, fd)) strerr_diefu4sys(111, "slurp ", buf, "/", what) ; @@ -119,10 +119,10 @@ int main (int argc, char const *const *argv) genalloc pscans = GENALLOC_ZERO ; /* array of pscan_t */ pfield_t fieldlist[PFIELD_PHAIL] = { PFIELD_USER, PFIELD_PID, PFIELD_TTY, PFIELD_STATE, PFIELD_START, PFIELD_ARGS } ; uint64 fbf = (1 << PFIELD_USER) | (1 << PFIELD_PID) | (1 << PFIELD_TTY) | (1 << PFIELD_STATE) | (1 << PFIELD_START) | (1 << PFIELD_ARGS) ; - unsigned int mypos = 0 ; + size_t mypos = 0 ; unsigned int nfields = 6 ; pscan_t *p ; - unsigned int n ; + size_t n ; unsigned int spacing = 2 ; int flagtree = 0 ; char const *wchanfile = 0 ; @@ -211,7 +211,7 @@ int main (int argc, char const *const *argv) { int needstatdir = !!(fbf & ((1 << PFIELD_USER) | (1 << PFIELD_GROUP))) ; - unsigned int mypid = getpid() ; + pid_t mypid = getpid() ; DIR *dir = opendir("/proc") ; direntry *d ; char buf[25] = "/proc/" ; @@ -220,11 +220,13 @@ int main (int argc, char const *const *argv) for (;;) { pscan_t pscan = PSCAN_ZERO ; + uint64 u ; int dirfd ; errno = 0 ; d = readdir(dir) ; if (!d) break ; - if (!uint0_scan(d->d_name, &pscan.pid)) continue ; + if (!uint640_scan(d->d_name, &u)) continue ; + pscan.pid = u ; strcpy(buf+6, d->d_name) ; dirfd = open_read(buf) ; if (dirfd < 0) continue ; @@ -320,9 +322,9 @@ int main (int argc, char const *const *argv) } { - unsigned int fmtpos[n][nfields] ; - unsigned int fmtlen[n][nfields] ; - unsigned int maxlen[nfields] ; + size_t fmtpos[n][nfields] ; + size_t fmtlen[n][nfields] ; + size_t maxlen[nfields] ; unsigned int maxspaces = 0 ; for (i = 0 ; i < nfields ; i++) maxlen[i] = str_len(s6ps_fieldheaders[fieldlist[i]]) ; for (i = 0 ; i < n ; i++) @@ -349,7 +351,7 @@ int main (int argc, char const *const *argv) for (i = 0 ; i < nfields ; i++) { register unsigned int rightformatted = !!(((uint64)1 << fieldlist[i]) & RIGHTFORMATTED) ; - register unsigned int len = str_len(s6ps_fieldheaders[fieldlist[i]]) ; + register size_t len = str_len(s6ps_fieldheaders[fieldlist[i]]) ; if (rightformatted && (buffer_put(buffer_1, spaces, maxlen[i] - len) < (int)(maxlen[i] - len))) goto nowrite ; if (buffer_put(buffer_1, s6ps_fieldheaders[fieldlist[i]], len) < (int)len) diff --git a/src/minutils/s6-ps.h b/src/minutils/s6-ps.h index 3e7d84a..3e5508c 100644 --- a/src/minutils/s6-ps.h +++ b/src/minutils/s6-ps.h @@ -4,12 +4,22 @@ #define _S6PS_H_ #include -#include +#include #include #include #include #include + +typedef struct dius_s dius_t, *dius_t_ref ; +struct dius_s +{ + unsigned int left ; + size_t right ; +} ; +#define DIUS_ZERO { .left = 0, .right = 0 } + + /* pfield: the output fields */ typedef enum pfield_e pfield_t, *pfield_t_ref ; @@ -60,20 +70,20 @@ typedef struct pscan_s pscan_t, *pscan_t_ref ; struct pscan_s { stralloc data ; - unsigned int pid ; + pid_t pid ; signed int height ; - unsigned int statlen ; - unsigned int commlen ; - unsigned int cmdlen ; - unsigned int envlen ; + size_t statlen ; + size_t commlen ; + size_t cmdlen ; + size_t envlen ; uid_t uid ; gid_t gid ; - uint32 ppid ; + pid_t ppid ; unsigned int state ; - uint32 pgrp ; - uint32 session ; - uint32 ttynr ; - int tpgid ; + pid_t pgrp ; + pid_t session ; + dev_t ttynr ; + pid_t tpgid ; uint64 utime ; uint64 stime ; uint64 cutime ; @@ -86,9 +96,9 @@ struct pscan_s uint64 rss ; uint64 rsslim ; uint64 wchan ; - uint32 cpuno ; - uint32 rtprio ; - uint32 policy ; + uint32_t cpuno ; + uint32_t rtprio ; + uint32_t policy ; } ; #define PSCAN_ZERO \ @@ -130,7 +140,7 @@ extern void s6ps_otree (pscan_t *, unsigned int, avltreen *, unsigned int *) ; extern int s6ps_compute_boottime (pscan_t *, unsigned int) ; -typedef int pfieldfmt_func_t (pscan_t *, unsigned int *, unsigned int *) ; +typedef int pfieldfmt_func_t (pscan_t *, size_t *, size_t *) ; typedef pfieldfmt_func_t *pfieldfmt_func_t_ref ; extern pfieldfmt_func_t_ref *s6ps_pfield_fmt ; @@ -139,13 +149,13 @@ extern void *left_dtok (unsigned int, void *) ; extern int uint_cmp (void const *, void const *, void *) ; extern int s6ps_pwcache_init (void) ; extern void s6ps_pwcache_finish (void) ; -extern int s6ps_pwcache_lookup (stralloc *, unsigned int) ; +extern int s6ps_pwcache_lookup (stralloc *, uid_t) ; extern int s6ps_grcache_init (void) ; extern void s6ps_grcache_finish (void) ; -extern int s6ps_grcache_lookup (stralloc *, unsigned int) ; +extern int s6ps_grcache_lookup (stralloc *, gid_t) ; extern int s6ps_ttycache_init (void) ; extern void s6ps_ttycache_finish (void) ; -extern int s6ps_ttycache_lookup (stralloc *, uint32) ; +extern int s6ps_ttycache_lookup (stralloc *, dev_t) ; extern int s6ps_wchan_init (char const *) ; extern void s6ps_wchan_finish (void) ; extern int s6ps_wchan_lookup (stralloc *, uint64) ; diff --git a/src/minutils/s6-swapoff.c b/src/minutils/s6-swapoff.c index 1067040..80df1ec 100644 --- a/src/minutils/s6-swapoff.c +++ b/src/minutils/s6-swapoff.c @@ -1,5 +1,6 @@ /* ISC license. */ +#include #include #include #include @@ -12,7 +13,7 @@ extern int swapoff (char const *) ; #define USAGE "s6-swapoff device s6-swapoff -a" -#define BUFSIZE 4096 +#define BUFSIZE 4095 static int swapoffall ( ) { @@ -27,7 +28,7 @@ static int swapoffall ( ) if (skagetln(&b, &sa, '\n') < 0) strerr_diefu1sys(111, "skagetln") ; for (;;) { - unsigned int n ; + size_t n ; sa.len = 0 ; r = skagetln(&b, &sa, '\n') ; if (r < 0) strerr_diefu1sys(111, "skagetln") ; diff --git a/src/minutils/s6-uevent-listener.c b/src/minutils/s6-uevent-listener.c index f6e9c4b..d620081 100644 --- a/src/minutils/s6-uevent-listener.c +++ b/src/minutils/s6-uevent-listener.c @@ -36,7 +36,7 @@ static pid_t pid ; static inline int fd_recvmsg (int fd, struct msghdr *hdr) { - int r ; + ssize_t r ; do r = recvmsg(fd, hdr, MSG_DONTWAIT) ; while ((r == -1) && (errno == EINTR)) ; return r ; @@ -110,7 +110,7 @@ static inline void handle_netlink (void) .msg_flags = 0 } ; siovec_t v[2] ; - register int r ; + register ssize_t r ; buffer_wpeek(&b1, v) ; siovec_trunc(v, 2, siovec_len(v, 2) - 1) ; iovec_from_siovec(iov, v, 2) ; diff --git a/src/minutils/s6-uevent-spawner.c b/src/minutils/s6-uevent-spawner.c index 6ccc4ce..e6c0927 100644 --- a/src/minutils/s6-uevent-spawner.c +++ b/src/minutils/s6-uevent-spawner.c @@ -46,8 +46,8 @@ static inline void on_event (char const *const *argv, char const *const *envp, c { posix_spawnattr_t attr ; posix_spawn_file_actions_t actions ; - unsigned int envlen = env_len(envp) ; - unsigned int n = envlen + 1 + byte_count(s, len, '\0') ; + size_t envlen = env_len(envp) ; + size_t n = envlen + 1 + byte_count(s, len, '\0') ; pid_t mypid ; int e ; char const *v[n] ; @@ -134,8 +134,8 @@ static inline void handle_stdin (stralloc *sa, char const *linevar, char const * { while (!pid) { - unsigned int start ; - register int r ; + size_t start ; + register ssize_t r ; if (!sa->len && linevar) if (!stralloc_cats(sa, linevar) || !stralloc_catb(sa, "=", 1)) dienomem() ; @@ -162,7 +162,8 @@ static inline void handle_stdin (stralloc *sa, char const *linevar, char const * static inline int make_ttos (char const *s) { - unsigned int tlife = 0, tterm = 0, tkill = 0, pos = 0 ; + size_t pos = 0 ; + unsigned int tlife = 0, tterm = 0, tkill = 0 ; pos += uint_scan(s + pos, &tlife) ; if (s[pos] && s[pos++] != ':') return 0 ; if (!tlife) return 1 ; diff --git a/src/minutils/s6-umount.c b/src/minutils/s6-umount.c index 966b455..31773cb 100644 --- a/src/minutils/s6-umount.c +++ b/src/minutils/s6-umount.c @@ -1,5 +1,6 @@ /* ISC license. */ +#include #include #include #include @@ -28,7 +29,7 @@ static int umountall ( ) buffer_init(&b, &buffer_read, fd, buf, BUFSIZE+1) ; for (;;) { - unsigned int n, p ; + size_t n, p ; if (line >= MAXLINES) strerr_dief1x(111, "/proc/mounts too big") ; sa.len = 0 ; r = skagetln(&b, &sa, '\n') ; diff --git a/src/minutils/s6ps_grcache.c b/src/minutils/s6ps_grcache.c index 1fe9380..9a0d133 100644 --- a/src/minutils/s6ps_grcache.c +++ b/src/minutils/s6ps_grcache.c @@ -4,7 +4,6 @@ #include #include #include -#include #include #include #include @@ -23,18 +22,18 @@ int s6ps_grcache_init (void) void s6ps_grcache_finish (void) { avltree_free(&grcache_tree) ; - genalloc_free(diuint, &grcache_index) ; + genalloc_free(dius_t, &grcache_index) ; } -int s6ps_grcache_lookup (stralloc *sa, unsigned int gid) +int s6ps_grcache_lookup (stralloc *sa, gid_t gid) { int wasnull = !satmp.s ; - diuint d = { .left = gid, .right = satmp.len } ; + dius_t d = { .left = (unsigned int)gid, .right = satmp.len } ; unsigned int i ; if (!avltree_search(&grcache_tree, &d.left, &i)) { struct group *gr ; - unsigned int n = genalloc_len(diuint, &grcache_index) ; + unsigned int n = genalloc_len(dius_t, &grcache_index) ; errno = 0 ; gr = getgrgid(gid) ; if (!gr) @@ -46,15 +45,15 @@ int s6ps_grcache_lookup (stralloc *sa, unsigned int gid) stralloc_catb(&satmp, ")", 2) ; } else if (!stralloc_cats(&satmp, gr->gr_name) || !stralloc_0(&satmp)) return 0 ; - if (!genalloc_append(diuint, &grcache_index, &d)) goto err ; + if (!genalloc_append(dius_t, &grcache_index, &d)) goto err ; if (!avltree_insert(&grcache_tree, n)) { - genalloc_setlen(diuint, &grcache_index, n) ; + genalloc_setlen(dius_t, &grcache_index, n) ; goto err ; } i = n ; } - return stralloc_cats(sa, satmp.s + genalloc_s(diuint, &grcache_index)[i].right) ; + return stralloc_cats(sa, satmp.s + genalloc_s(dius_t, &grcache_index)[i].right) ; err: { register int e = errno ; diff --git a/src/minutils/s6ps_otree.c b/src/minutils/s6ps_otree.c index b5f72b4..447906e 100644 --- a/src/minutils/s6ps_otree.c +++ b/src/minutils/s6ps_otree.c @@ -4,6 +4,8 @@ #include #include "s6-ps.h" +/* XXX: need to change all the types if the libdatastruct API changes */ + typedef struct ptreeiter_s ptreeiter_t, *ptreeiter_t_ref ; struct ptreeiter_s { diff --git a/src/minutils/s6ps_pfield.c b/src/minutils/s6ps_pfield.c index 3a960a4..ded0b41 100644 --- a/src/minutils/s6ps_pfield.c +++ b/src/minutils/s6ps_pfield.c @@ -94,7 +94,7 @@ char const *const *s6ps_opttable = opttable ; static tain_t boottime = TAIN_EPOCH ; -static int fmt_32 (pscan_t *p, unsigned int *pos, unsigned int *len, uint32 u) +static int fmt_32 (pscan_t *p, size_t *pos, size_t *len, uint32 u) { if (!stralloc_readyplus(&p->data, UINT32_FMT)) return 0 ; *pos = p->data.len ; @@ -103,7 +103,7 @@ static int fmt_32 (pscan_t *p, unsigned int *pos, unsigned int *len, uint32 u) return 1 ; } -static int fmt_64 (pscan_t *p, unsigned int *pos, unsigned int *len, uint64 u) +static int fmt_64 (pscan_t *p, size_t *pos, size_t *len, uint64 u) { if (!stralloc_readyplus(&p->data, UINT64_FMT)) return 0 ; *pos = p->data.len ; @@ -112,7 +112,7 @@ static int fmt_64 (pscan_t *p, unsigned int *pos, unsigned int *len, uint64 u) return 1 ; } -static int fmt_i (pscan_t *p, unsigned int *pos, unsigned int *len, int d) +static int fmt_i (pscan_t *p, size_t *pos, size_t *len, int d) { if (!stralloc_readyplus(&p->data, UINT32_FMT+1)) return 0 ; *pos = p->data.len ; @@ -121,19 +121,19 @@ static int fmt_i (pscan_t *p, unsigned int *pos, unsigned int *len, int d) return 1 ; } -static int fmt_pid (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_pid (pscan_t *p, size_t *pos, size_t *len) { - return fmt_32(p, pos, len, p->pid) ; + return fmt_64(p, pos, len, p->pid) ; } -static int fmt_comm (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_comm (pscan_t *p, size_t *pos, size_t *len) { *pos = p->statlen ; *len = p->commlen ; return 1 ; } -static int fmt_s (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_s (pscan_t *p, size_t *pos, size_t *len) { if (!stralloc_readyplus(&p->data, 4)) return 0 ; *pos = p->data.len ; @@ -148,26 +148,26 @@ static int fmt_s (pscan_t *p, unsigned int *pos, unsigned int *len) return 1 ; } -static int fmt_ppid (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_ppid (pscan_t *p, size_t *pos, size_t *len) { - return fmt_32(p, pos, len, p->ppid) ; + return fmt_64(p, pos, len, p->ppid) ; } -static int fmt_pgrp (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_pgrp (pscan_t *p, size_t *pos, size_t *len) { - return fmt_32(p, pos, len, p->pgrp) ; + return fmt_64(p, pos, len, p->pgrp) ; } -static int fmt_session (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_session (pscan_t *p, size_t *pos, size_t *len) { - return fmt_32(p, pos, len, p->session) ; + return fmt_64(p, pos, len, p->session) ; } -static int fmt_ttynr(pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_ttynr(pscan_t *p, size_t *pos, size_t *len) { if (p->ttynr) { - unsigned int tmppos = p->data.len ; + size_t tmppos = p->data.len ; if (!s6ps_ttycache_lookup(&p->data, p->ttynr)) return 0 ; *pos = tmppos ; *len = p->data.len - tmppos ; @@ -181,9 +181,9 @@ static int fmt_ttynr(pscan_t *p, unsigned int *pos, unsigned int *len) return 1 ; } -static int fmt_tpgid (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_tpgid (pscan_t *p, size_t *pos, size_t *len) { - return fmt_i(p, pos, len, p->tpgid) ; + return p->tpgid < 0 ? fmt_i(p, pos, len, -1) : fmt_64(p, pos, len, p->tpgid) ; } static unsigned int gethz (void) @@ -220,7 +220,7 @@ int s6ps_compute_boottime (pscan_t *p, unsigned int mypos) } } -static int fmt_jiffies (pscan_t *p, unsigned int *pos, unsigned int *len, uint64 j) +static int fmt_jiffies (pscan_t *p, size_t *pos, size_t *len, uint64 j) { unsigned int hz = gethz() ; uint32 hrs, mins, secs, hfrac ; @@ -261,45 +261,45 @@ static int fmt_jiffies (pscan_t *p, unsigned int *pos, unsigned int *len, uint64 return 1 ; } -static int fmt_utime (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_utime (pscan_t *p, size_t *pos, size_t *len) { return fmt_jiffies(p, pos, len, p->utime) ; } -static int fmt_stime (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_stime (pscan_t *p, size_t *pos, size_t *len) { return fmt_jiffies(p, pos, len, p->stime) ; } -static int fmt_cutime (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_cutime (pscan_t *p, size_t *pos, size_t *len) { return fmt_jiffies(p, pos, len, p->utime + p->cutime) ; } -static int fmt_cstime (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_cstime (pscan_t *p, size_t *pos, size_t *len) { return fmt_jiffies(p, pos, len, p->stime + p->cstime) ; } -static int fmt_prio (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_prio (pscan_t *p, size_t *pos, size_t *len) { return fmt_i(p, pos, len, p->prio) ; } -static int fmt_nice (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_nice (pscan_t *p, size_t *pos, size_t *len) { return fmt_i(p, pos, len, p->nice) ; } -static int fmt_threads (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_threads (pscan_t *p, size_t *pos, size_t *len) { return fmt_32(p, pos, len, p->threads) ; } -static int fmt_timedate (pscan_t *p, unsigned int *pos, unsigned int *len, struct tm const *tm) +static int fmt_timedate (pscan_t *p, size_t *pos, size_t *len, struct tm const *tm) { static struct tm nowtm = { .tm_year = 0 } ; - unsigned int tmplen ; + size_t tmplen ; char *tmpstrf = "%F" ; if (!nowtm.tm_year && !localtm_from_tai(&nowtm, tain_secp(&STAMP), 1)) return 0 ; if (!stralloc_readyplus(&p->data, 20)) return 0 ; @@ -315,7 +315,7 @@ static int fmt_timedate (pscan_t *p, unsigned int *pos, unsigned int *len, struc return 1 ; } -static int fmt_start (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_start (pscan_t *p, size_t *pos, size_t *len) { struct tm starttm ; unsigned int hz = gethz() ; @@ -343,53 +343,53 @@ static unsigned int getpgsz (void) return pgsz ; } -static int fmt_vsize (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_vsize (pscan_t *p, size_t *pos, size_t *len) { return fmt_64(p, pos, len, p->vsize / 1024) ; } -static int fmt_rss (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_rss (pscan_t *p, size_t *pos, size_t *len) { return fmt_64(p, pos, len, p->rss * (getpgsz() / 1024)) ; } -static int fmt_rsslim (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_rsslim (pscan_t *p, size_t *pos, size_t *len) { return fmt_64(p, pos, len, p->rsslim / 1024) ; } -static int fmt_cpuno (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_cpuno (pscan_t *p, size_t *pos, size_t *len) { return fmt_32(p, pos, len, p->cpuno) ; } -static int fmt_rtprio (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_rtprio (pscan_t *p, size_t *pos, size_t *len) { return fmt_32(p, pos, len, p->rtprio) ; } -static int fmt_policy (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_policy (pscan_t *p, size_t *pos, size_t *len) { static char const *const policies[8] = { "NORMAL", "FIFO", "RR", "BATCH", "ISO", "IDLE", "UNKNOWN", "UNKNOWN" } ; - unsigned int tmppos = p->data.len ; + size_t tmppos = p->data.len ; if (!stralloc_cats(&p->data, policies[p->policy & 7])) return 0 ; *pos = tmppos ; *len = p->data.len - tmppos ; return 1 ; } -static int fmt_user (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_user (pscan_t *p, size_t *pos, size_t *len) { - unsigned int tmppos = p->data.len ; + size_t tmppos = p->data.len ; if (!s6ps_pwcache_lookup(&p->data, p->uid)) return 0 ; *pos = tmppos ; *len = p->data.len - tmppos ; return 1 ; } -static int fmt_group (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_group (pscan_t *p, size_t *pos, size_t *len) { - unsigned int tmppos = p->data.len ; + size_t tmppos = p->data.len ; if (!s6ps_grcache_lookup(&p->data, p->gid)) return 0 ; *pos = tmppos ; *len = p->data.len - tmppos ; @@ -407,7 +407,7 @@ static uint64 gettotalmem (void) return totalmem ; } -static int percent (stralloc *sa, unsigned int n, unsigned int *pos, unsigned int *len) +static int percent (stralloc *sa, unsigned int n, size_t *pos, size_t *len) { if (!stralloc_readyplus(sa, UINT64_FMT+1)) return 0 ; *pos = sa->len ; @@ -419,22 +419,22 @@ static int percent (stralloc *sa, unsigned int n, unsigned int *pos, unsigned in return 1 ; } -static int fmt_pmem (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_pmem (pscan_t *p, size_t *pos, size_t *len) { uint64 l = gettotalmem() ; return l ? percent(&p->data, p->rss * getpgsz() * 10000 / l, pos, len) : 0 ; } -static int fmt_wchan (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_wchan (pscan_t *p, size_t *pos, size_t *len) { - unsigned int tmppos = p->data.len ; + size_t tmppos = p->data.len ; if (!s6ps_wchan_lookup(&p->data, p->wchan)) return 0 ; *len = p->data.len - tmppos ; *pos = tmppos ; return 1 ; } -static int fmt_args (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_args (pscan_t *p, size_t *pos, size_t *len) { if (!stralloc_readyplus(&p->data, (p->height << 2) + (p->cmdlen ? p->cmdlen : p->commlen + (p->data.s[p->state] == 'Z' ? 11 : 3)))) return 0 ; @@ -451,7 +451,7 @@ static int fmt_args (pscan_t *p, unsigned int *pos, unsigned int *len) { register char const *r = p->data.s + p->statlen + p->commlen ; register char *w = p->data.s + p->data.len ; - register unsigned int i = p->cmdlen ; + register size_t i = p->cmdlen ; while (i--) { register char c = *r++ ; @@ -470,9 +470,9 @@ static int fmt_args (pscan_t *p, unsigned int *pos, unsigned int *len) return 1 ; } -static int fmt_env (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_env (pscan_t *p, size_t *pos, size_t *len) { - register unsigned int i = 0 ; + register size_t i = 0 ; if (!p->envlen) { if (!stralloc_catb(&p->data, "*", 1)) return 0 ; @@ -497,23 +497,23 @@ static uint64 gettotalj (uint64 j) return j ; } -static int fmt_pcpu (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_pcpu (pscan_t *p, size_t *pos, size_t *len) { return percent(&p->data, 10000 * (p->utime + p->stime) / gettotalj(p->start), pos, len) ; } -static int fmt_ttime (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_ttime (pscan_t *p, size_t *pos, size_t *len) { return fmt_jiffies(p, pos, len, p->utime + p->stime) ; } -static int fmt_cttime (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_cttime (pscan_t *p, size_t *pos, size_t *len) { return fmt_jiffies(p, pos, len, p->utime + p->stime + p->cutime + p->cstime) ; } -static int fmt_tstart (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_tstart (pscan_t *p, size_t *pos, size_t *len) { unsigned int hz = gethz() ; tain_t blah = { .sec = { .x = p->start / hz }, .nano = (p->start % hz) * (1000000000 / hz) } ; @@ -525,7 +525,7 @@ static int fmt_tstart (pscan_t *p, unsigned int *pos, unsigned int *len) return 1 ; } -static int fmt_cpcpu (pscan_t *p, unsigned int *pos, unsigned int *len) +static int fmt_cpcpu (pscan_t *p, size_t *pos, size_t *len) { return percent(&p->data, 10000 * (p->utime + p->stime + p->cutime + p->cstime) / gettotalj(p->start), pos, len) ; } diff --git a/src/minutils/s6ps_pwcache.c b/src/minutils/s6ps_pwcache.c index 4c78460..abee250 100644 --- a/src/minutils/s6ps_pwcache.c +++ b/src/minutils/s6ps_pwcache.c @@ -4,7 +4,6 @@ #include #include #include -#include #include #include #include @@ -23,18 +22,18 @@ int s6ps_pwcache_init (void) void s6ps_pwcache_finish (void) { avltree_free(&pwcache_tree) ; - genalloc_free(diuint, &pwcache_index) ; + genalloc_free(dius_t, &pwcache_index) ; } -int s6ps_pwcache_lookup (stralloc *sa, unsigned int uid) +int s6ps_pwcache_lookup (stralloc *sa, uid_t uid) { int wasnull = !satmp.s ; - diuint d = { .left = uid, .right = satmp.len } ; + dius_t d = { .left = (unsigned int)uid, .right = satmp.len } ; unsigned int i ; if (!avltree_search(&pwcache_tree, &d.left, &i)) { struct passwd *pw ; - unsigned int n = genalloc_len(diuint, &pwcache_index) ; + size_t n = genalloc_len(dius_t, &pwcache_index) ; errno = 0 ; pw = getpwuid(uid) ; if (!pw) @@ -49,7 +48,7 @@ int s6ps_pwcache_lookup (stralloc *sa, unsigned int uid) if (!genalloc_append(diuint, &pwcache_index, &d)) goto err ; if (!avltree_insert(&pwcache_tree, n)) { - genalloc_setlen(diuint, &pwcache_index, n) ; + genalloc_setlen(dius_t, &pwcache_index, n) ; goto err ; } i = n ; diff --git a/src/minutils/s6ps_statparse.c b/src/minutils/s6ps_statparse.c index d8bc39e..b49ee28 100644 --- a/src/minutils/s6ps_statparse.c +++ b/src/minutils/s6ps_statparse.c @@ -1,5 +1,6 @@ /* ISC license. */ +#include #include #include #include @@ -15,34 +16,50 @@ #define STATVARS 41 -typedef unsigned int scanfunc_t (char const *, void *) ; +typedef size_t scanfunc_t (char const *, void *) ; typedef scanfunc_t *scanfunc_t_ref ; -static unsigned int f32 (char const *s, void *u32) +static size_t f32 (char const *s, void *u32) { uint32 *u = u32 ; return uint32_scan(s, u) ; } -static unsigned int f64 (char const *s, void *u64) +static size_t f64 (char const *s, void *u64) { uint64 *u = u64 ; return uint64_scan(s, u) ; } -static unsigned int fint (char const *s, void *i) +static size_t fint (char const *s, void *i) { int *d = i ; return int_scan(s, d) ; } +static size_t fpid (char const *s, void *p) +{ + uint64 u ; + register size_t l = uint64_scan(s, &u) ; + *(pid_t *)p = u ; + return l ; +} + +static size_t fdev (char const *s, void *p) +{ + uint64 u ; + register size_t l = uint64_scan(s, &u) ; + *(dev_t *)p = u ; + return l ; +} + static scanfunc_t_ref scanfuncs[STATVARS] = { - &f32, /* ppid */ - &f32, /* pgrp */ - &f32, /* session */ - &f32, /* tty_nr */ - &fint, /* tpgid */ + &fpid, /* ppid */ + &fpid, /* pgrp */ + &fpid, /* session */ + &fdev, /* tty_nr */ + &fpid, /* tpgid */ &f32, /* flags */ &f32, /* minflt */ &f32, /* cminflt */ @@ -85,7 +102,7 @@ int s6ps_statparse (pscan_t *p) { uint64 dummy64 ; uint32 dummy32 ; - unsigned int pos = 0 ; + size_t pos = 0 ; void *scanresults[STATVARS] = { &p->ppid, @@ -145,7 +162,7 @@ int s6ps_statparse (pscan_t *p) p->state = pos++ ; for (; i < STATVARS ; i++) { - unsigned int w ; + size_t w ; if (pos + 1 > p->statlen) return 0 ; if (p->data.s[pos++] != ' ') return 0 ; w = (*scanfuncs[i])(p->data.s + pos, scanresults[i]) ; diff --git a/src/minutils/s6ps_ttycache.c b/src/minutils/s6ps_ttycache.c index c50c3ea..dcbbc54 100644 --- a/src/minutils/s6ps_ttycache.c +++ b/src/minutils/s6ps_ttycache.c @@ -9,8 +9,6 @@ #include #include #include -#include -#include #include #include #include @@ -22,32 +20,19 @@ static avltree ttycache_tree = AVLTREE_ZERO ; static genalloc ttycache_index = GENALLOC_ZERO ; -static void *left32_dtok (unsigned int d, void *x) -{ - return (void *)&genalloc_s(diuint32, (genalloc *)x)[d].left ; -} - -static int uint32_cmp (void const *a, void const *b, void *x) -{ - register uint32 aa = *(uint32 *)a ; - register uint32 bb = *(uint32 *)b ; - (void)x ; - return (aa < bb) ? -1 : (aa > bb) ; -} - int s6ps_ttycache_init (void) { - avltree_init(&ttycache_tree, 5, 3, 8, &left32_dtok, &uint32_cmp, &ttycache_index) ; + avltree_init(&ttycache_tree, 5, 3, 8, &left_dtok, &uint_cmp, &ttycache_index) ; return 1 ; } void s6ps_ttycache_finish (void) { avltree_free(&ttycache_tree) ; - genalloc_free(diuint, &ttycache_index) ; + genalloc_free(dius_t, &ttycache_index) ; } -static int check (char const *s, uint32 ttynr) +static int check (char const *s, dev_t ttynr) { struct stat st ; if (stat(s, &st) < 0) return 0 ; @@ -57,7 +42,7 @@ static int check (char const *s, uint32 ttynr) /* No blind scanning of all /dev or /sys/devices, kthx */ -static int ttyguess (stralloc *sa, uint32 ttynr) +static int ttyguess (stralloc *sa, dev_t ttynr) { unsigned int maj = major(ttynr), min = minor(ttynr) ; @@ -80,7 +65,7 @@ static int ttyguess (stralloc *sa, uint32 ttynr) { int fd ; char path[23 + 2 * UINT_FMT] = "/sys/dev/char/" ; - register unsigned int pos = 14 ; + register size_t pos = 14 ; pos += uint_fmt(path + pos, maj) ; path[pos++] = ':' ; pos += uint_fmt(path + pos, min) ; @@ -90,7 +75,7 @@ static int ttyguess (stralloc *sa, uint32 ttynr) { char buf[4097] ; buffer b = BUFFER_INIT(&buffer_read, fd, buf, 4097) ; - unsigned int start = satmp.len ; + size_t start = satmp.len ; register int r ; for (;;) { @@ -114,7 +99,7 @@ static int ttyguess (stralloc *sa, uint32 ttynr) /* Fallback: print explicit maj:min */ { char tmp[3 + 2 * UINT_FMT] = "(" ; - register unsigned int pos = 1 ; + register size_t pos = 1 ; pos += uint_fmt(tmp + pos, maj) ; tmp[pos++] = ':' ; pos += uint_fmt(tmp + pos, min) ; @@ -124,24 +109,24 @@ static int ttyguess (stralloc *sa, uint32 ttynr) } } -int s6ps_ttycache_lookup (stralloc *sa, uint32 ttynr) +int s6ps_ttycache_lookup (stralloc *sa, dev_t ttynr) { int wasnull = !satmp.s ; - diuint32 d = { .left = ttynr, .right = satmp.len } ; + dius_t d = { .left = (unsigned int)ttynr, .right = satmp.len } ; unsigned int i ; if (!avltree_search(&ttycache_tree, &d.left, &i)) { - unsigned int n = genalloc_len(diuint32, &ttycache_index) ; + size_t n = genalloc_len(dius_t, &ttycache_index) ; if (!ttyguess(&satmp, ttynr)) return 0 ; - if (!genalloc_append(diuint32, &ttycache_index, &d)) goto err ; + if (!genalloc_append(dius_t, &ttycache_index, &d)) goto err ; if (!avltree_insert(&ttycache_tree, n)) { - genalloc_setlen(diuint32, &ttycache_index, n) ; + genalloc_setlen(dius_t, &ttycache_index, n) ; goto err ; } i = n ; } - return stralloc_cats(sa, satmp.s + genalloc_s(diuint32, &ttycache_index)[i].right) ; + return stralloc_cats(sa, satmp.s + genalloc_s(dius_t, &ttycache_index)[i].right) ; err: { register int e = errno ; diff --git a/src/minutils/s6ps_wchan.c b/src/minutils/s6ps_wchan.c index e702ba9..77ac671 100644 --- a/src/minutils/s6ps_wchan.c +++ b/src/minutils/s6ps_wchan.c @@ -1,5 +1,6 @@ /* ISC license. */ +#include #include #include #include @@ -21,7 +22,7 @@ int s6ps_wchan_init (char const *file) { char *files[3] = { "/proc/kallsyms", 0, "/boot/System.map" } ; struct utsname uts ; - unsigned int n ; + size_t n ; if (uname(&uts) < 0) return 0 ; n = str_len(uts.release) ; { @@ -37,15 +38,15 @@ int s6ps_wchan_init (char const *file) } } { - unsigned int i = 0 ; - if (!genalloc_append(unsigned int, &ind, &i)) goto err2 ; + size_t i = 0 ; + if (!genalloc_append(size_t, &ind, &i)) goto err2 ; for (i = 1 ; i <= sysmap.len ; i++) if (sysmap.s[i-1] == '\n') - if (!genalloc_append(unsigned int, &ind, &i)) goto err ; + if (!genalloc_append(size_t, &ind, &i)) goto err ; } return 1 ; err: - genalloc_free(unsigned int, &ind) ; + genalloc_free(size_t, &ind) ; err2: stralloc_free(&sysmap) ; return 0 ; @@ -53,13 +54,13 @@ int s6ps_wchan_init (char const *file) void s6ps_wchan_finish (void) { - genalloc_free(unsigned int, &ind) ; + genalloc_free(size_t, &ind) ; stralloc_free(&sysmap) ; } -static inline unsigned int lookup (uint64 addr, unsigned int *i) +static inline size_t lookup (uint64 addr, size_t *i) { - unsigned int low = 0, mid, high = genalloc_len(unsigned int, &ind), len ; + size_t low = 0, mid, high = genalloc_len(size_t, &ind), len ; for (;;) { uint64 cur ; @@ -81,12 +82,12 @@ int s6ps_wchan_lookup (stralloc *sa, uint64 addr) if (!addr) return stralloc_catb(sa, "-", 1) ; if (sysmap.len) { - unsigned int i ; - unsigned int len = lookup(addr, &i) ; - register unsigned int pos ; + size_t i ; + size_t len = lookup(addr, &i) ; + register size_t pos ; if (!len) return stralloc_catb(sa, "?", 1) ; - pos = genalloc_s(unsigned int, &ind)[i] + len + 3 ; - return stralloc_catb(sa, sysmap.s + pos, genalloc_s(unsigned int, &ind)[i+1] - 1 - pos) ; + pos = genalloc_s(size_t, &ind)[i] + len + 3 ; + return stralloc_catb(sa, sysmap.s + pos, genalloc_s(size_t, &ind)[i+1] - 1 - pos) ; } if (!stralloc_readyplus(sa, UINT64_FMT + 3)) return 0 ; stralloc_catb(sa, "(0x", 3) ; -- cgit v1.2.3