blob: 21a62465bb5d1f037e999547a8a9eeefad3a9a62 [file] [log] [blame]
Dmitry V. Levin57d45a22014-09-29 23:13:05 +00001#include "defs.h"
2#include <sys/sysinfo.h>
3
4int
5sys_sysinfo(struct tcb *tcp)
6{
7 struct sysinfo si;
8
Dmitry V. Levin82a528d2014-09-29 23:29:56 +00009 if (entering(tcp))
10 return 0;
11
12 if (syserror(tcp) || !verbose(tcp) ||
13 umove(tcp, tcp->u_arg[0], &si) < 0) {
14 tprintf("%#lx", tcp->u_arg[0]);
15 } else {
Dmitry V. Levin822892b2015-03-02 14:34:25 +000016 tprintf("{uptime=%llu"
17 ", loads=[%llu, %llu, %llu]"
18 ", totalram=%llu"
19 ", freeram=%llu"
20 ", sharedram=%llu"
21 ", bufferram=%llu"
22 ", totalswap=%llu"
23 ", freeswap=%llu"
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000024 ", procs=%u"
25#ifdef HAVE_STRUCT_SYSINFO_TOTALHIGH
Dmitry V. Levin822892b2015-03-02 14:34:25 +000026 ", totalhigh=%llu"
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000027#endif
28#ifdef HAVE_STRUCT_SYSINFO_FREEHIGH
Dmitry V. Levin822892b2015-03-02 14:34:25 +000029 ", freehigh=%llu"
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000030#endif
31#ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT
32 ", mem_unit=%u"
33#endif
34 "}",
Dmitry V. Levin822892b2015-03-02 14:34:25 +000035 (unsigned long long) si.uptime
36 , (unsigned long long) si.loads[0]
37 , (unsigned long long) si.loads[1]
38 , (unsigned long long) si.loads[2]
39 , (unsigned long long) si.totalram
40 , (unsigned long long) si.freeram
41 , (unsigned long long) si.sharedram
42 , (unsigned long long) si.bufferram
43 , (unsigned long long) si.totalswap
44 , (unsigned long long) si.freeswap
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000045 , (unsigned) si.procs
46#ifdef HAVE_STRUCT_SYSINFO_TOTALHIGH
Dmitry V. Levin822892b2015-03-02 14:34:25 +000047 , (unsigned long long) si.totalhigh
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000048#endif
49#ifdef HAVE_STRUCT_SYSINFO_FREEHIGH
Dmitry V. Levin822892b2015-03-02 14:34:25 +000050 , (unsigned long long) si.freehigh
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000051#endif
52#ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT
53 , si.mem_unit
54#endif
55 );
Dmitry V. Levin57d45a22014-09-29 23:13:05 +000056 }
Dmitry V. Levin82a528d2014-09-29 23:29:56 +000057
Dmitry V. Levin57d45a22014-09-29 23:13:05 +000058 return 0;
59}