]> granicus.if.org Git - strace/blob - sysinfo.c
Move ioctl syscall parser to ioctl.c
[strace] / sysinfo.c
1 #include "defs.h"
2 #include <sys/sysinfo.h>
3
4 SYS_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 }