vsz and rss are unsigned longs (ulong ~= width of void* => suitable for expressing total RAM in system). We account for "32 bit in 64 bit" systems by storing kbytes, not bytes there. Should allow for up to ~2000 Gb RAM on 32 bits.
No binary (build failed)
—
(log yok)
| @@ -891,7 +891,7 @@ typedef struct procps_status_t { | |
| USE_SELINUX(char *context;) | |
| /* Everything below must contain no ptrs to malloc'ed data: | |
| * it is memset(0) for each process in procps_scan() */ | |
| - | unsigned vsz, rss; /* we round it to kbytes */ |
| + | unsigned long vsz, rss; /* we round it to kbytes */ |
| unsigned long stime, utime; | |
| unsigned pid; | |
| unsigned ppid; | |
| @@ -48,7 +48,7 @@ static void func_pgid(char *buf, int size, const procps_status_t *ps) | |
| sprintf(buf, "%*u", size, ps->pgid); | |
| } | |
| - | static void put_u(char *buf, int size, unsigned u) |
| + | static void put_lu(char *buf, int size, unsigned long u) |
| { | |
| char buf5[5]; | |
| smart_ulltoa5( ((unsigned long long)u) << 10, buf5); | |
| @@ -57,12 +57,12 @@ static void put_u(char *buf, int size, unsigned u) | |
| static void func_vsz(char *buf, int size, const procps_status_t *ps) | |
| { | |
| - | put_u(buf, size, ps->vsz); |
| + | put_lu(buf, size, ps->vsz); |
| } | |
| static void func_rss(char *buf, int size, const procps_status_t *ps) | |
| { | |
| - | put_u(buf, size, ps->rss); |
| + | put_lu(buf, size, ps->rss); |
| } | |
| static void func_tty(char *buf, int size, const procps_status_t *ps) | |
| @@ -405,7 +405,7 @@ int ps_main(int argc, char **argv) | |
| len = printf("%5u %-8s %s ", | |
| p->pid, user, p->state); | |
| else | |
| - | len = printf("%5u %-8s %6u %s ", |
| + | len = printf("%5u %-8s %6lu %s ", |
| p->pid, user, p->vsz, p->state); | |
| } | |