about summary refs log tree commit diff
path: root/benchtests
diff options
context:
space:
mode:
Diffstat (limited to 'benchtests')
-rw-r--r--benchtests/bench-memset-large.c5
-rw-r--r--benchtests/bench-memset.c5
-rw-r--r--benchtests/bench-string.h50
3 files changed, 47 insertions, 13 deletions
diff --git a/benchtests/bench-memset-large.c b/benchtests/bench-memset-large.c
index c0f19749f6..6cd48c99ea 100644
--- a/benchtests/bench-memset-large.c
+++ b/benchtests/bench-memset-large.c
@@ -90,7 +90,10 @@ do_test (json_ctx_t *json_ctx, size_t align, int c, size_t len)
   json_array_begin (json_ctx, "timings");
 
   FOR_EACH_IMPL (impl, 0)
-    do_one_test (json_ctx, impl, (CHAR *) (buf1) + align, c, len);
+    {
+      do_one_test (json_ctx, impl, (CHAR *) (buf1) + align, c, len);
+      realloc_bufs ();
+    }
 
   json_array_end (json_ctx);
   json_element_object_end (json_ctx);
diff --git a/benchtests/bench-memset.c b/benchtests/bench-memset.c
index 107e2b7494..724c105935 100644
--- a/benchtests/bench-memset.c
+++ b/benchtests/bench-memset.c
@@ -132,7 +132,10 @@ do_test (json_ctx_t *json_ctx, size_t align, int c, size_t len)
   json_array_begin (json_ctx, "timings");
 
   FOR_EACH_IMPL (impl, 0)
-    do_one_test (json_ctx, impl, (CHAR *) (buf1) + align, c, len);
+    {
+      do_one_test (json_ctx, impl, (CHAR *) (buf1) + align, c, len);
+      realloc_bufs ();
+    }
 
   json_array_end (json_ctx);
   json_element_object_end (json_ctx);
diff --git a/benchtests/bench-string.h b/benchtests/bench-string.h
index 3aacfdf83e..40c735c18e 100644
--- a/benchtests/bench-string.h
+++ b/benchtests/bench-string.h
@@ -173,14 +173,8 @@ static impl_t *impl_array;
 # endif
 
 static void
-test_init (void)
+alloc_bufs (void)
 {
-# ifdef TEST_NAME
-  func_count = __libc_ifunc_impl_list (TEST_NAME, func_list,
-				       (sizeof func_list
-					/ sizeof func_list[0]));
-# endif
-
   page_size = 2 * getpagesize ();
 # ifdef MIN_PAGE_SIZE
   if (page_size < MIN_PAGE_SIZE)
@@ -189,15 +183,49 @@ test_init (void)
   buf1 = mmap (0, (BUF1PAGES + 1) * page_size, PROT_READ | PROT_WRITE,
 	       MAP_PRIVATE | MAP_ANON, -1, 0);
   if (buf1 == MAP_FAILED)
-    error (EXIT_FAILURE, errno, "mmap failed");
+    error (EXIT_FAILURE, errno, "mmap failed for buf1");
   if (mprotect (buf1 + BUF1PAGES * page_size, page_size, PROT_NONE))
-    error (EXIT_FAILURE, errno, "mprotect failed");
+    error (EXIT_FAILURE, errno, "mprotect failed for buf1");
   buf2 = mmap (0, 2 * page_size, PROT_READ | PROT_WRITE,
 	       MAP_PRIVATE | MAP_ANON, -1, 0);
   if (buf2 == MAP_FAILED)
-    error (EXIT_FAILURE, errno, "mmap failed");
+    error (EXIT_FAILURE, errno, "mmap failed for buf2");
   if (mprotect (buf2 + page_size, page_size, PROT_NONE))
-    error (EXIT_FAILURE, errno, "mprotect failed");
+    error (EXIT_FAILURE, errno, "mprotect failed for buf2");
+}
+
+static void
+__attribute__ ((unused))
+realloc_bufs (void)
+{
+  int ret = 0;
+
+  if (buf1)
+    ret = munmap (buf1, (BUF1PAGES + 1) * page_size);
+
+  if (ret != 0)
+    error (EXIT_FAILURE, errno, "munmap failed for buf1");
+
+  if (buf2)
+    ret = munmap (buf2, 2 * page_size);
+
+  if (ret != 0)
+    error (EXIT_FAILURE, errno, "munmap failed for buf2");
+
+  alloc_bufs ();
+}
+
+static void
+test_init (void)
+{
+# ifdef TEST_NAME
+  func_count = __libc_ifunc_impl_list (TEST_NAME, func_list,
+				       (sizeof func_list
+					/ sizeof func_list[0]));
+# endif
+
+  alloc_bufs ();
+
   if (do_srandom)
     {
       printf ("Setting seed to 0x%x\n", seed);