[Toybox] [PATCH] macOS: move struct sysinfo out of GLOBALS.
enh
enh at google.com
Fri Nov 30 13:11:33 PST 2018
Even if we don't build ps, we can't have a Linux-only struct in GLOBALS.
The obvious alternative to this would be to have a fake struct sysinfo
in lib/portability.h. Since having a real macOS replacement for
sysinfo(2) seems unlikely at this point, I went this route instead.
---
toys/posix/ps.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/toys/posix/ps.c b/toys/posix/ps.c
index 833ecabe..b0cf78b0 100644
--- a/toys/posix/ps.c
+++ b/toys/posix/ps.c
@@ -207,7 +207,6 @@ GLOBALS(
} pgrep;
};
- struct sysinfo si;
struct ptr_len gg, GG, pp, PP, ss, tt, uu, UU;
struct dirtree *threadparent;
unsigned width, height;
@@ -261,12 +260,13 @@ enum {
SLOT_gtime, /*guest jiffies of task*/ SLOT_cgtime, // gtime+child
SLOT_startbss, /*data/bss address*/ SLOT_endbss, // end addr data+bss
SLOT_upticks, /*uptime-starttime*/ SLOT_argv0len, // argv[0] length
- SLOT_uptime, /*si.uptime @read time*/ SLOT_vsz, // Virtual mem Size
- SLOT_shr, /*Shared memory*/ SLOT_pcy, // Android sched pol
- SLOT_rchar, /*All bytes read*/ SLOT_wchar, // All bytes written
- SLOT_rbytes, /*Disk bytes read*/ SLOT_wbytes, // Disk bytes written
- SLOT_swap, /*Swap pages used*/ SLOT_bits, // 32 or 64
- SLOT_tid, /*Thread ID*/ SLOT_tcount, // Thread count
+ SLOT_uptime, /*si.uptime @read time*/ SLOT_totalram, //
si.totalram @read time
+ SLOT_vsz, /*Virtual mem Size*/ SLOT_shr, // Shared memory
+ SLOT_pcy, /*Android sched pol*/ SLOT_rchar, // All bytes read
+ SLOT_wchar, /*All bytes written*/ SLOT_rbytes, // Disk bytes read
+ SLOT_wbytes, /*Disk bytes written*/ SLOT_swap, // Swap pages used
+ SLOT_bits, /*32 or 64*/ SLOT_tid, // Thread ID
+ SLOT_tcount, /*Thread count*/
SLOT_count /* Size of array */
};
@@ -577,7 +577,7 @@ static char *string_field(struct procpid *tb,
struct ofields *field)
} else if (which <= PS__CPU) {
ll = slot[sl&63]*1000;
if (which==PS__VSZ || which==PS__MEM)
- ll /= TT.si.totalram/((which==PS__VSZ) ? 1024 : 4096);
+ ll /= slot[SLOT_totalram]/((which==PS__VSZ) ? 1024 : 4096);
else if (slot[SLOT_upticks]) ll /= slot[SLOT_upticks];
sl = ll;
if (which==PS_C) sl += 5;
@@ -703,6 +703,7 @@ static int get_ps(struct dirtree *new)
struct procpid *tb = (void *)toybuf;
long long *slot = tb->slot;
char *name, *s, *buf = tb->str, *end = 0;
+ struct sysinfo si;
int i, j, fd;
off_t len;
@@ -798,8 +799,9 @@ static int get_ps(struct dirtree *new)
// /proc data is generated as it's read, so for maximum accuracy on slow
// systems (or ps | more) we re-fetch uptime as we fetch each /proc line.
- sysinfo(&TT.si);
- slot[SLOT_uptime] = TT.si.uptime;
+ sysinfo(&si);
+ slot[SLOT_uptime] = si.uptime;
+ slot[SLOT_totalram] = si.totalram;
slot[SLOT_upticks] = slot[SLOT_uptime]*TT.ticks - slot[SLOT_starttime];
// Do we need to read "statm"?
--
2.20.0.rc1.387.gf8505762e3-goog
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-macOS-move-struct-sysinfo-out-of-GLOBALS.patch
Type: text/x-patch
Size: 3322 bytes
Desc: not available
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20181130/fef7df56/attachment-0002.bin>
More information about the Toybox
mailing list