]> granicus.if.org Git - strace/blob - sysinfo.c
Mpersify parser of sysinfo syscall
[strace] / sysinfo.c
1 #include "defs.h"
2 #include DEF_MPERS_TYPE(sysinfo_t)
3 #include <sys/sysinfo.h>
4 typedef struct sysinfo sysinfo_t;
5 #include MPERS_DEFS
6
7 SYS_FUNC(sysinfo)
8 {
9         sysinfo_t si;
10
11         if (entering(tcp))
12                 return 0;
13
14         if (!umove_or_printaddr(tcp, tcp->u_arg[0], &si)) {
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                         ", totalhigh=%llu"
25                         ", freehigh=%llu"
26                         ", mem_unit=%u"
27                         "}",
28                         (unsigned long long) si.uptime
29                         , (unsigned long long) si.loads[0]
30                         , (unsigned long long) si.loads[1]
31                         , (unsigned long long) si.loads[2]
32                         , (unsigned long long) si.totalram
33                         , (unsigned long long) si.freeram
34                         , (unsigned long long) si.sharedram
35                         , (unsigned long long) si.bufferram
36                         , (unsigned long long) si.totalswap
37                         , (unsigned long long) si.freeswap
38                         , (unsigned) si.procs
39                         , (unsigned long long) si.totalhigh
40                         , (unsigned long long) si.freehigh
41                         , si.mem_unit
42                         );
43         }
44
45         return 0;
46 }