diff options
author | Benoît Dejean <bdejean@src.gnome.org> | 2005-06-13 09:03:41 +0000 |
---|---|---|
committer | Benoît Dejean <bdejean@src.gnome.org> | 2005-06-13 09:03:41 +0000 |
commit | ef2ed50bf7ad3df616139c1631ac596a87dda769 (patch) | |
tree | 1509e787d44a63ede8ff3deaeaa1af6af95a40c8 /sysdeps | |
parent | c19ba1af03cf40ac6485bc71b6cc2bfd916ac8d7 (diff) | |
download | libgtop-ef2ed50bf7ad3df616139c1631ac596a87dda769.tar.gz |
Added pagein/pageout for linux 2.6.
* swap.c: (glibtop_get_swap_s): Added pagein/pageout for linux 2.6.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/linux/ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/linux/swap.c | 38 |
2 files changed, 35 insertions, 7 deletions
diff --git a/sysdeps/linux/ChangeLog b/sysdeps/linux/ChangeLog index e155087d..c7224ec8 100644 --- a/sysdeps/linux/ChangeLog +++ b/sysdeps/linux/ChangeLog @@ -1,3 +1,7 @@ +2005-06-13 Benoît Dejean <TazForEver@dlfp.org> + + * swap.c: (glibtop_get_swap_s): Added pagein/pageout for linux 2.6. + 2005-05-26 Benoît Dejean <TazForEver@dlfp.org> * siglist.c: Fixed compilation on mips. Closes #304570. diff --git a/sysdeps/linux/swap.c b/sysdeps/linux/swap.c index b736da77..4c436146 100644 --- a/sysdeps/linux/swap.c +++ b/sysdeps/linux/swap.c @@ -49,6 +49,7 @@ glibtop_init_swap_s (glibtop *server) #define MEMINFO "/proc/meminfo" #define PROC_STAT "/proc/stat" +#define PROC_VMSTAT "/proc/vmstat" void glibtop_get_swap_s (glibtop *server, glibtop_swap *buf) @@ -69,15 +70,38 @@ glibtop_get_swap_s (glibtop *server, glibtop_swap *buf) buf->flags = _glibtop_sysdeps_swap; - file_to_buffer(server, buffer, PROC_STAT); - p = strstr (buffer, "\nswap"); - if (p == NULL) return; + if(server->os_version_code >= LINUX_VERSION_CODE(2, 6, 0)) + { + file_to_buffer (server, buffer, PROC_VMSTAT); - p = skip_token (p); + p = strstr (buffer, "\npswpin"); - buf->pagein = strtoull (p, &p, 0); - buf->pageout = strtoull (p, &p, 0); + if(p) + { + p = skip_token(p); + buf->pagein = strtoull (p, &p, 0); - buf->flags |= _glibtop_sysdeps_swap_paging; + p = skip_token(p); + buf->pageout = strtoull (p, &p, 0); + + buf->flags |= _glibtop_sysdeps_swap_paging; + } + } + else /* Linux 2.4 */ + { + file_to_buffer (server, buffer, PROC_STAT); + + p = strstr (buffer, "\nswap"); + + if(p) + { + p = skip_token (p); + + buf->pagein = strtoull (p, &p, 0); + buf->pageout = strtoull (p, &p, 0); + + buf->flags |= _glibtop_sysdeps_swap_paging; + } + } } |