[Pkg-wmaker-commits] [wmmemload] 45/103: wmmemload: Fix FTBFS on the Hurd.

Doug Torrance dtorrance-guest at moszumanska.debian.org
Mon Aug 24 03:11:43 UTC 2015


This is an automated email from the git hooks/post-receive script.

dtorrance-guest pushed a commit to branch master
in repository wmmemload.

commit 336af95fe562b0732036228e5464995ea5fb0c8f
Author: Doug Torrance <dtorrance at monmouthcollege.edu>
Date:   Tue Oct 7 14:53:32 2014 -0500

    wmmemload: Fix FTBFS on the Hurd.
    
    The following patch, by Svante Signell <svante.signell at gmail.com>, adds Hurd
    support to wmmemload.
    
    For more information, see:
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=764356
---
 configure.ac  |   5 ++
 src/mem_gnu.c | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 148 insertions(+)

diff --git a/configure.ac b/configure.ac
index 3698a98..8a0dbd8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -110,6 +110,11 @@ openbsd*)
 solaris*)
   OS=solaris
   ;;
+gnu*)
+  OS=gnu
+  ignore_buffers=yes
+  ignore_cached=yes
+  ;;
 *)
   echo ""
   echo "Sorry, ${host_os} is not supported yet"
diff --git a/src/mem_gnu.c b/src/mem_gnu.c
new file mode 100644
index 0000000..d31e2db
--- /dev/null
+++ b/src/mem_gnu.c
@@ -0,0 +1,143 @@
+/*
+ * mem_gnu.c - module to get memory/swap usages, for GNU/Hurd
+ *
+ * Copyright(C) 2014       Svante Signell <svante.signell at gmail.com>
+ * Copyright(C) 2001,2002  Seiichi SATO <ssato at sh.rim.or.jp>
+ * Copyright(C) 2001       John McCutchan <ttb at tentacle.dhs.org>
+ *
+ * licensed under the GPL
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+#if defined(HAVE_STRING_H)
+#include <string.h>
+#elif defined(HAVE_STRINGS_H)
+#include <strings.h>
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <ctype.h>
+#include <sys/utsname.h>
+#include "mem.h"
+
+#ifdef DEBUG
+#  define INLINE_STATIC static
+#else
+#  define INLINE_STATIC inline static
+#endif
+
+/* initialize function */
+void mem_init(void)
+{
+   struct utsname un;
+   int version, patchlevel;
+
+   /* get kernel version */
+   if (uname(&un) == -1)
+     perror ("uname()");
+   sscanf (un.release, "%d.%d", &version, &patchlevel);
+}
+
+
+INLINE_STATIC char * skip_line (const char *p)
+{
+   while (*p != '\n') p++;
+   return (char *) ++p;
+}
+
+INLINE_STATIC char * skip_token (const char *p)
+{
+   while (isspace(*p)) p++;
+   while (*p && !isspace(*p)) p++;
+   return (char *)p;
+}
+
+INLINE_STATIC char * skip_multiple_token (const char *p, int count)
+{
+   int i;
+   for (i = 0; i < count; i++) p = skip_token (p);
+   return (char *)p;
+}
+
+/* return mem/swap usage in percent 0 to 100 */
+void mem_getusage(int *per_mem, int *per_swap, const struct mem_options *opts)
+{
+   char buffer[BUFSIZ], *p;
+   int fd, len, i;
+   u_int64_t mtotal, mused, mfree, mbuffer, mcached;
+   u_int64_t stotal, sused, sfree, scached = 0;
+
+   /* read /proc/meminfo */
+   fd = open("/proc/meminfo", O_RDONLY);
+   if (fd < 0) {
+      perror("can't open /proc/meminfo");
+      exit(1);
+   }
+   len = read(fd, buffer, BUFSIZ - 1);
+   if (len < 0) {
+      perror("can't read /proc/meminfo");
+      exit(1);
+   }
+   close(fd);
+
+   buffer[len] = '\0';
+   p = buffer;
+
+   p = skip_token(p);
+   /* examine each line of file */
+   mtotal  = strtoul(p, &p, 0); p = skip_multiple_token(p, 2);
+   mfree   = strtoul(p, &p, 0); p = skip_multiple_token(p, 2);
+   mbuffer = strtoul(p, &p, 0); p = skip_multiple_token(p, 2);
+   mcached = strtoul(p, &p, 0); p = skip_multiple_token(p, 2);
+   scached = strtoul(p, &p, 0);
+
+   /* skip N lines and examine info about swap */
+   while (isprint(p[0])) {
+      p = skip_line(p);
+      if (strncmp(p, "SwapTotal", 9) == 0) break;
+   }
+
+   p = skip_token(p);
+   stotal = strtoul(p, &p, 0); p = skip_multiple_token(p, 2);
+   sfree  = strtoul(p, &p, 0);
+
+   /* calculate memory usage in percent */
+   mused = mtotal - mfree;
+   if (opts->ignore_buffers)
+      mused -= mbuffer;
+   if (opts->ignore_cached)
+      mused -= mcached;
+   *per_mem = 100 * (double) mused / (double) mtotal;
+
+   /* calculate swap usage in percent */
+   sused = stotal - sfree;
+   if(opts->ignore_cached)
+      sused -= scached;
+   if (!stotal) {
+      *per_swap = 0;
+   } else {
+      *per_swap = 100 * (double) sused / (double) stotal;
+   }
+
+#if DEBUG
+   printf("-----------------------\n");
+   printf("MemTotal:  %12ld\n", (unsigned long)mtotal);
+   printf("MemFree:   %12ld\n", (unsigned long)mfree);
+   printf("Buffers:   %12ld\n", (unsigned long)mbuffer);
+   printf("Cached:    %12ld\n", (unsigned long)mcached);
+   printf("SwapTotal: %12ld\n", (unsigned long)stotal);
+   printf("SwapFree:  %12ld\n", (unsigned long)sfree);
+   printf("SwapCached:%12ld\n", (unsigned long)scached);
+   printf("-----------------------\n\n");
+#endif
+
+}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-wmaker/wmmemload.git



More information about the Pkg-wmaker-commits mailing list