blob: ab5044b2b01c8eedd4e0fa1108fd493a8b6df836 [file] [log] [blame]
#include "defs.h"
#include <sys/sysinfo.h>
int
sys_sysinfo(struct tcb *tcp)
{
struct sysinfo si;
if (entering(tcp))
return 0;
if (syserror(tcp) || !verbose(tcp) ||
umove(tcp, tcp->u_arg[0], &si) < 0) {
tprintf("%#lx", tcp->u_arg[0]);
} else {
tprintf("{uptime=%lu"
", loads=[%lu, %lu, %lu]"
", totalram=%lu"
", freeram=%lu"
", sharedram=%lu"
", bufferram=%lu"
", totalswap=%lu"
", freeswap=%lu"
", procs=%u"
#ifdef HAVE_STRUCT_SYSINFO_TOTALHIGH
", totalhigh=%lu"
#endif
#ifdef HAVE_STRUCT_SYSINFO_FREEHIGH
", freehigh=%lu"
#endif
#ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT
", mem_unit=%u"
#endif
"}",
si.uptime
, si.loads[0], si.loads[1], si.loads[2]
, si.totalram
, si.freeram
, si.sharedram
, si.bufferram
, si.totalswap
, si.freeswap
, (unsigned) si.procs
#ifdef HAVE_STRUCT_SYSINFO_TOTALHIGH
, si.totalhigh
#endif
#ifdef HAVE_STRUCT_SYSINFO_FREEHIGH
, si.freehigh
#endif
#ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT
, si.mem_unit
#endif
);
}
return 0;
}