sysinfo.c revision a0bd3749fc6fdf6364c1e269a4c02e8c153eb84b
1#include "defs.h"
2#include <sys/sysinfo.h>
3
4SYS_FUNC(sysinfo)
5{
6	struct sysinfo si;
7
8	if (entering(tcp))
9		return 0;
10
11	if (syserror(tcp) || !verbose(tcp) ||
12	    umove(tcp, tcp->u_arg[0], &si) < 0) {
13		tprintf("%#lx", tcp->u_arg[0]);
14	} else {
15		tprintf("{uptime=%llu"
16			", loads=[%llu, %llu, %llu]"
17			", totalram=%llu"
18			", freeram=%llu"
19			", sharedram=%llu"
20			", bufferram=%llu"
21			", totalswap=%llu"
22			", freeswap=%llu"
23			", procs=%u"
24#ifdef HAVE_STRUCT_SYSINFO_TOTALHIGH
25			", totalhigh=%llu"
26#endif
27#ifdef HAVE_STRUCT_SYSINFO_FREEHIGH
28			", freehigh=%llu"
29#endif
30#ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT
31			", mem_unit=%u"
32#endif
33			"}",
34			(unsigned long long) si.uptime
35			, (unsigned long long) si.loads[0]
36			, (unsigned long long) si.loads[1]
37			, (unsigned long long) si.loads[2]
38			, (unsigned long long) si.totalram
39			, (unsigned long long) si.freeram
40			, (unsigned long long) si.sharedram
41			, (unsigned long long) si.bufferram
42			, (unsigned long long) si.totalswap
43			, (unsigned long long) si.freeswap
44			, (unsigned) si.procs
45#ifdef HAVE_STRUCT_SYSINFO_TOTALHIGH
46			, (unsigned long long) si.totalhigh
47#endif
48#ifdef HAVE_STRUCT_SYSINFO_FREEHIGH
49			, (unsigned long long) si.freehigh
50#endif
51#ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT
52			, si.mem_unit
53#endif
54			);
55	}
56
57	return 0;
58}
59