From f5ae68a6a3878eeefc15c45bbda7ddb82277f96a Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sun, 24 May 2015 22:46:29 +0100 Subject: [PATCH] uptime: use the libc API for load averages --- Applications/util/uptime.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/Applications/util/uptime.c b/Applications/util/uptime.c index 2eea10fb..44cdc40e 100644 --- a/Applications/util/uptime.c +++ b/Applications/util/uptime.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -16,14 +17,16 @@ static int count_users(void) return ct; } +static void printload(int i) +{ + unsigned int n = i; + printf(" %d.%02d", n/100, n%100); +} + int main(int argc, char *argv[]) { - static struct { - struct _uzisysinfoblk i; - char buf[128]; - } uts; static struct timespec res; - int bytes = _uname(&uts.i, sizeof(uts)); + static int loadavg[3]; time_t t; uint32_t days, hours, mins; struct tm *tm; @@ -49,11 +52,13 @@ int main(int argc, char *argv[]) printf("%02d:%02d, ", (unsigned int)hours, (unsigned int)mins); u = count_users(); - printf("%d user%s, ", u, u != 1 ? "s" : ""); + printf("%d user%s", u, u != 1 ? "s" : ""); - printf("load average: %d %d %d\n", - uts.i.loadavg[0], - uts.i.loadavg[1], - uts.i.loadavg[2]); + if (getloadavg(loadavg, 3) == 3) { + printf(", load average:"); + printload(loadavg[0]); + printload(loadavg[1]); + printload(loadavg[2]); + } + printf("\n"); } - -- 2.34.1