From: Bruno Haible <bruno@clisp.org>
Date: Wed, 26 Jan 2011 01:11:18 +0000 (+0100)
Subject: get-rusage-as: Allow for easier testing.
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=12a15f55d18d8f843df5d01682ead2eb0bb2c812;p=pspp

get-rusage-as: Allow for easier testing.

* lib/resource-ext.h (get_rusage_as): Add comment.
* lib/get-rusage-as.c (get_rusage_as_via_setrlimit): Define always.
(main): New function for interactive testing.
---

diff --git a/ChangeLog b/ChangeLog
index b5fb644820..33b3038425 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-01-25  Bruno Haible  <bruno@clisp.org>
+
+	get-rusage-as: Allow for easier testing.
+	* lib/resource-ext.h (get_rusage_as): Add comment.
+	* lib/get-rusage-as.c (get_rusage_as_via_setrlimit): Define always.
+	(main): New function for interactive testing.
+
 2011-01-25  Bruno Haible  <bruno@clisp.org>
 
 	vma-iter: Treat Haiku like BeOS.
diff --git a/lib/get-rusage-as.c b/lib/get-rusage-as.c
index 41363c547f..46f1f212c2 100644
--- a/lib/get-rusage-as.c
+++ b/lib/get-rusage-as.c
@@ -308,6 +308,14 @@ get_rusage_as_via_setrlimit (void)
   return result;
 }
 
+#else
+
+static inline uintptr_t
+get_rusage_as_via_setrlimit (void)
+{
+  return 0;
+}
+
 #endif
 
 
@@ -364,3 +372,31 @@ get_rusage_as (void)
   return get_rusage_as_via_iterator ();
 #endif
 }
+
+
+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main ()
+{
+  printf ("Initially:           0x%08lX 0x%08lX 0x%08lX\n",
+          get_rusage_as_via_setrlimit (), get_rusage_as_via_iterator (),
+          get_rusage_as ());
+  malloc (0x88);
+  printf ("After small malloc:  0x%08lX 0x%08lX 0x%08lX\n",
+          get_rusage_as_via_setrlimit (), get_rusage_as_via_iterator (),
+          get_rusage_as ());
+  malloc (0x8812);
+  printf ("After medium malloc: 0x%08lX 0x%08lX 0x%08lX\n",
+          get_rusage_as_via_setrlimit (), get_rusage_as_via_iterator (),
+          get_rusage_as ());
+  malloc (0x281237);
+  printf ("After large malloc:  0x%08lX 0x%08lX 0x%08lX\n",
+          get_rusage_as_via_setrlimit (), get_rusage_as_via_iterator (),
+          get_rusage_as ());
+  return 0;
+}
+
+#endif /* TEST */
diff --git a/lib/resource-ext.h b/lib/resource-ext.h
index 95e1f7dfd8..e7dcc6f225 100644
--- a/lib/resource-ext.h
+++ b/lib/resource-ext.h
@@ -27,7 +27,8 @@ extern "C" {
 
 /* Returns the amount of address space currently in use by the current
    process, or zero if unknown.
-   This is the quantity which is limited by setrlimit(RLIMIT_AS,...).  */
+   This is the quantity which is limited by setrlimit(RLIMIT_AS,...).
+   Note: This function always returns zero on OpenBSD and AIX.  */
 extern uintptr_t get_rusage_as (void);