| #include "defs.h" |
| #include <sys/sysinfo.h> |
| |
| SYS_FUNC(sysinfo) |
| { |
| struct sysinfo si; |
| |
| if (entering(tcp)) |
| return 0; |
| |
| if (!umove_or_printaddr(tcp, tcp->u_arg[0], &si)) { |
| tprintf("{uptime=%llu" |
| ", loads=[%llu, %llu, %llu]" |
| ", totalram=%llu" |
| ", freeram=%llu" |
| ", sharedram=%llu" |
| ", bufferram=%llu" |
| ", totalswap=%llu" |
| ", freeswap=%llu" |
| ", procs=%u" |
| #ifdef HAVE_STRUCT_SYSINFO_TOTALHIGH |
| ", totalhigh=%llu" |
| #endif |
| #ifdef HAVE_STRUCT_SYSINFO_FREEHIGH |
| ", freehigh=%llu" |
| #endif |
| #ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT |
| ", mem_unit=%u" |
| #endif |
| "}", |
| (unsigned long long) si.uptime |
| , (unsigned long long) si.loads[0] |
| , (unsigned long long) si.loads[1] |
| , (unsigned long long) si.loads[2] |
| , (unsigned long long) si.totalram |
| , (unsigned long long) si.freeram |
| , (unsigned long long) si.sharedram |
| , (unsigned long long) si.bufferram |
| , (unsigned long long) si.totalswap |
| , (unsigned long long) si.freeswap |
| , (unsigned) si.procs |
| #ifdef HAVE_STRUCT_SYSINFO_TOTALHIGH |
| , (unsigned long long) si.totalhigh |
| #endif |
| #ifdef HAVE_STRUCT_SYSINFO_FREEHIGH |
| , (unsigned long long) si.freehigh |
| #endif |
| #ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT |
| , si.mem_unit |
| #endif |
| ); |
| } |
| |
| return 0; |
| } |