summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoît Dejean <bdejean@src.gnome.org>2005-06-13 09:09:51 +0000
committerBenoît Dejean <bdejean@src.gnome.org>2005-06-13 09:09:51 +0000
commitf89afb07482f6709905159549321809dad144317 (patch)
treece8b6a51d7c9bc1648ac52dfc62daf034166942c
parentd4ee5eb8844c55cb290c7f0cd820838f4961b8e4 (diff)
downloadlibgtop-f89afb07482f6709905159549321809dad144317.tar.gz
Added pagein/pageout for linux 2.6.
* swap.c: (glibtop_get_swap_s): Added pagein/pageout for linux 2.6.
-rw-r--r--sysdeps/linux/ChangeLog4
-rw-r--r--sysdeps/linux/swap.c38
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;
+ }
+ }
}