#include "defs.h"
#include <sys/sysinfo.h>
-int
-sys_sysinfo(struct tcb *tcp)
+SYS_FUNC(sysinfo)
{
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"
+ 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=%lu"
+ ", totalhigh=%llu"
#endif
#ifdef HAVE_STRUCT_SYSINFO_FREEHIGH
- ", freehigh=%lu"
+ ", freehigh=%llu"
#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 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
- , si.totalhigh
+ , (unsigned long long) si.totalhigh
#endif
#ifdef HAVE_STRUCT_SYSINFO_FREEHIGH
- , si.freehigh
+ , (unsigned long long) si.freehigh
#endif
#ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT
, si.mem_unit