diff options
author | Martin Baulig <martin@src.gnome.org> | 1998-06-07 21:14:30 +0000 |
---|---|---|
committer | Martin Baulig <martin@src.gnome.org> | 1998-06-07 21:14:30 +0000 |
commit | be91463190323d9208bb64c682f8e3867dc81ff7 (patch) | |
tree | 6620c08d10d73af2faf7681602858708dcbbdb2e | |
parent | 28324c38cc08f5b9b9c05160800298cba49022df (diff) | |
download | libgtop-be91463190323d9208bb64c682f8e3867dc81ff7.tar.gz |
More profiling stuff.
-rw-r--r-- | sysdeps/linux/cpu.c | 10 | ||||
-rw-r--r-- | sysdeps/linux/glibtop_machine.h | 13 | ||||
-rw-r--r-- | sysdeps/linux/loadavg.c | 9 | ||||
-rw-r--r-- | sysdeps/linux/mem.c | 15 | ||||
-rw-r--r-- | sysdeps/linux/swap.c | 11 |
5 files changed, 44 insertions, 14 deletions
diff --git a/sysdeps/linux/cpu.c b/sysdeps/linux/cpu.c index 6dc68c6a..202a8476 100644 --- a/sysdeps/linux/cpu.c +++ b/sysdeps/linux/cpu.c @@ -35,7 +35,7 @@ static const unsigned long _glibtop_sysdeps_cpu = void glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf) { - char buffer [BUFSIZ]; + char buffer [BUFSIZ], *tmp; int fd = 0, ret; glibtop_init_r (&server, 0, 0); @@ -61,8 +61,12 @@ glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf) glibtop_error_r (server, "read (%s): %s", FILENAME, strerror (errno)); - sscanf (buffer, "cpu %lu %lu %lu %lu\n", - &buf->user, &buf->nice, &buf->sys, &buf->idle); + tmp = strchr (buffer, '\n'); + tmp = skip_token (tmp); /* "cpu" */ + buf->user = strtoul (tmp, &tmp, 10); + buf->nice = strtoul (tmp, &tmp, 10); + buf->sys = strtoul (tmp, &tmp, 10); + buf->idle = strtoul (tmp, &tmp, 10); buf->total = buf->user + buf->nice + buf->sys + buf->idle; diff --git a/sysdeps/linux/glibtop_machine.h b/sysdeps/linux/glibtop_machine.h index 600d562c..a1c789ed 100644 --- a/sysdeps/linux/glibtop_machine.h +++ b/sysdeps/linux/glibtop_machine.h @@ -24,9 +24,22 @@ #include <unistd.h> #include <fcntl.h> +#include <ctype.h> __BEGIN_DECLS +#if _IN_LIBGTOP + +static inline char * +skip_token(const char *p) +{ + while (isspace(*p)) p++; + while (*p && !isspace(*p)) p++; + return (char *)p; +} + +#endif + typedef struct _glibtop_machine glibtop_machine; struct _glibtop_machine diff --git a/sysdeps/linux/loadavg.c b/sysdeps/linux/loadavg.c index 96565610..bb8b70e6 100644 --- a/sysdeps/linux/loadavg.c +++ b/sysdeps/linux/loadavg.c @@ -33,7 +33,7 @@ static const unsigned long _glibtop_sysdeps_loadavg = void glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf) { - char buffer [BUFSIZ]; + char buffer [BUFSIZ], *tmp; int fd = 0, ret; glibtop_init_r (&server, 0, 0); @@ -59,9 +59,10 @@ glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf) glibtop_error_r (server, "read (%s): %s", FILENAME, strerror (errno)); - sscanf (buffer, "%lf %lf %lf\n", - &buf->loadavg [0], &buf->loadavg [1], &buf->loadavg [2]); - + buf->loadavg [0] = strtod (buffer, &tmp); + buf->loadavg [1] = strtod (tmp, &tmp); + buf->loadavg [2] = strtod (tmp, &tmp); + #ifdef GLIBTOP_CACHE_OPEN server->machine.fd_loadavg = fd; #else diff --git a/sysdeps/linux/mem.c b/sysdeps/linux/mem.c index 41b54323..b53db6e2 100644 --- a/sysdeps/linux/mem.c +++ b/sysdeps/linux/mem.c @@ -36,7 +36,7 @@ static const unsigned long _glibtop_sysdeps_mem = void glibtop_get_mem_s (glibtop *server, glibtop_mem *buf) { - char buffer [BUFSIZ]; + char buffer [BUFSIZ], *tmp; int fd = 0, ret; glibtop_init_r (&server, 0, 0); @@ -62,9 +62,16 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf) glibtop_error_r (server, "read (%s): %s", FILENAME, strerror (errno)); - sscanf (buffer, "%*[^\n]\nMem: %lu %lu %lu %lu %lu %lu\n", - &buf->total, &buf->used, &buf->free, &buf->shared, - &buf->buffer, &buf->cached); + tmp = strchr (buffer, '\n'); + tmp = skip_token (tmp); /* "Mem:" */ + tmp = skip_token (tmp); /* total memory */ + + buf->total = strtoul (tmp, &tmp, 10); + buf->used = strtoul (tmp, &tmp, 10); + buf->free = strtoul (tmp, &tmp, 10); + buf->shared = strtoul (tmp, &tmp, 10); + buf->buffer = strtoul (tmp, &tmp, 10); + buf->cached = strtoul (tmp, &tmp, 10); buf->user = buf->total - buf->free - buf->shared - buf->buffer; diff --git a/sysdeps/linux/swap.c b/sysdeps/linux/swap.c index fd8b29f7..24d44c06 100644 --- a/sysdeps/linux/swap.c +++ b/sysdeps/linux/swap.c @@ -34,7 +34,7 @@ static unsigned long _glibtop_sysdeps_swap = void glibtop_get_swap_s (glibtop *server, glibtop_swap *buf) { - char buffer [BUFSIZ]; + char buffer [BUFSIZ], *tmp; int fd = 0, ret; glibtop_init_r (&server, 0, 0); @@ -60,8 +60,13 @@ glibtop_get_swap_s (glibtop *server, glibtop_swap *buf) glibtop_error_r (server, "read (%s): %s", FILENAME, strerror (errno)); - sscanf (buffer, "%*[^\n]\n%*[^\n]\nSwap: %lu %lu %lu\n", - &buf->total, &buf->used, &buf->free); + tmp = strchr (buffer, '\n'); + tmp = strchr (tmp+1, '\n'); + + tmp = skip_token (tmp); /* "Swap:" */ + buf->total = strtoul (tmp, &tmp, 10); + buf->used = strtoul (tmp, &tmp, 10); + buf->free = strtoul (tmp, &tmp, 10); #ifdef GLIBTOP_CACHE_OPEN server->machine.fd_meminfo = fd; |