summaryrefslogtreecommitdiff
path: root/sysdeps/kernel/mem.c
diff options
context:
space:
mode:
authorMartin Baulig <martin@home-of-linux.org>1998-06-13 21:20:48 +0000
committerMartin Baulig <martin@src.gnome.org>1998-06-13 21:20:48 +0000
commitc60d1d54496f33ef3dee91a4dfc229c6cf70f0f5 (patch)
tree271516cde22902dfbc7e5582b86bc601b6d1d387 /sysdeps/kernel/mem.c
parenteedc64096ccd136baf17bd2b9f340a8b60fe1ace (diff)
downloadlibgtop-c60d1d54496f33ef3dee91a4dfc229c6cf70f0f5.tar.gz
The code in this directory fetches all information directly from the
1998-06-13 Martin Baulig <martin@home-of-linux.org> The code in this directory fetches all information directly from the kernel. It uses the new table () system call from the `kernel' directory.
Diffstat (limited to 'sysdeps/kernel/mem.c')
-rw-r--r--sysdeps/kernel/mem.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/sysdeps/kernel/mem.c b/sysdeps/kernel/mem.c
new file mode 100644
index 00000000..2c4104e5
--- /dev/null
+++ b/sysdeps/kernel/mem.c
@@ -0,0 +1,58 @@
+/* $Id$ */
+
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the Gnome Top Library.
+ Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
+
+ The Gnome Top Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The Gnome Top Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <config.h>
+#include <glibtop/error.h>
+#include <glibtop/mem.h>
+
+#include "kernel.h"
+
+static const unsigned long _glibtop_sysdeps_mem =
+(1 << GLIBTOP_MEM_TOTAL) + (1 << GLIBTOP_MEM_USED) +
+(1 << GLIBTOP_MEM_FREE) + (1 << GLIBTOP_MEM_SHARED) +
+(1 << GLIBTOP_MEM_BUFFER) + (1 << GLIBTOP_MEM_CACHED) +
+(1 << GLIBTOP_MEM_USER);
+
+/* Provides information about memory usage. */
+
+void
+glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
+{
+ union table tbl;
+
+ glibtop_init_r (&server, 0, 0);
+
+ memset (buf, 0, sizeof (glibtop_mem));
+
+ if (table (TABLE_MEM, &tbl, NULL))
+ glibtop_error_r (server, "table(TABLE_MEM): %s\n", strerror (errno));
+
+ buf->flags = _glibtop_sysdeps_mem;
+
+ buf->total = tbl.mem.total;
+ buf->used = tbl.mem.used;
+ buf->free = tbl.mem.free;
+ buf->shared = tbl.mem.shared;
+ buf->buffer = tbl.mem.buffer;
+ buf->cached = tbl.mem.cached;
+
+ buf->user = buf->total - buf->free - buf->shared - buf->buffer;
+}