blob: 6f22165f66d296c552a3386a868989304bc2a133 [file] [log] [blame]
Dmitry V. Levin57d45a22014-09-29 23:13:05 +00001#include "defs.h"
2#include <sys/sysinfo.h>
3
Dmitry V. Levina0bd3742015-04-07 01:36:50 +00004SYS_FUNC(sysinfo)
Dmitry V. Levin57d45a22014-09-29 23:13:05 +00005{
6 struct sysinfo si;
7
Dmitry V. Levin82a528d2014-09-29 23:29:56 +00008 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 {
Dmitry V. Levin822892b2015-03-02 14:34:25 +000015 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"
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000023 ", procs=%u"
24#ifdef HAVE_STRUCT_SYSINFO_TOTALHIGH
Dmitry V. Levin822892b2015-03-02 14:34:25 +000025 ", totalhigh=%llu"
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000026#endif
27#ifdef HAVE_STRUCT_SYSINFO_FREEHIGH
Dmitry V. Levin822892b2015-03-02 14:34:25 +000028 ", freehigh=%llu"
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000029#endif
30#ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT
31 ", mem_unit=%u"
32#endif
33 "}",
Dmitry V. Levin822892b2015-03-02 14:34:25 +000034 (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
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000044 , (unsigned) si.procs
45#ifdef HAVE_STRUCT_SYSINFO_TOTALHIGH
Dmitry V. Levin822892b2015-03-02 14:34:25 +000046 , (unsigned long long) si.totalhigh
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000047#endif
48#ifdef HAVE_STRUCT_SYSINFO_FREEHIGH
Dmitry V. Levin822892b2015-03-02 14:34:25 +000049 , (unsigned long long) si.freehigh
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000050#endif
51#ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT
52 , si.mem_unit
53#endif
54 );
Dmitry V. Levin57d45a22014-09-29 23:13:05 +000055 }
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000056
Dmitry V. Levin57d45a22014-09-29 23:13:05 +000057 return 0;
58}