This patch moves the check of the return value from gethugepagesize() to a
common function, check_hugepagesize(),
rather then repeating it in each test. gethugepagesize() is updated to set
errno depending on the reason for the failure.
Changes since v3
-incorporated Mel Gorman's function that uses dlopen so that tests
don't have to be linked against libhugetlbfs
-used suggestions from Nishanth Aravamudan to use a static inline
function and rename to check_hugepagesize()
-added check_hugepagesize() call to linkhuge and linkshare tests
---
hugeutils.c | 6 ++++-
tests/alloc-instantiate-race.c | 4 ---
tests/brk_near_huge.c | 4 ---
tests/chunk-overcommit.c | 4 ---
tests/counters.c | 4 ---
tests/direct.c | 4 ---
tests/empty_mounts.c | 5 ----
tests/heap-overflow.c | 4 ---
tests/huge_at_4GB_normal_below.c | 4 ---
tests/huge_below_4GB_normal_above.c | 4 ---
tests/hugetests.h | 17 +++++++++++++++
tests/icache-hygiene.c | 4 ---
tests/linkhuge.c | 1
tests/linkshare.c | 1
tests/map_high_truncate_2.c | 4 ---
tests/misalign.c | 4 ---
tests/misaligned_offset.c | 4 ---
tests/mlock.c | 4 ---
tests/mmap-cow.c | 2 -
tests/mmap-gettest.c | 2 -
tests/mprotect.c | 4 ---
tests/private.c | 4 ---
tests/ptrace-write-hugepage.c | 4 ---
tests/quota.c | 4 ---
tests/readback.c | 4 ---
tests/shared.c | 4 ---
tests/shm-fork.c | 2 -
tests/shm-getraw.c | 2 -
tests/slbpacaflush.c | 4 ---
tests/straddle_4GB.c | 4 ---
tests/task-size-overrun.c | 4 ---
tests/testutils.c | 39 ++++++++++++++++++++++++++++++++++++
tests/truncate.c | 4 ---
tests/truncate_above_4GB.c | 4 ---
tests/truncate_reserve_wraparound.c | 4 ---
tests/truncate_sigbus_versus_oom.c | 4 ---
tests/unlinked_fd.c | 4 ---
37 files changed, 94 insertions(+), 91 deletions(-)
diff -ur libhugetlbfs-dev-20080319.orig/hugeutils.c
libhugetlbfs-dev-20080319/hugeutils.c
--- libhugetlbfs-dev-20080319.orig/hugeutils.c 2008-03-19 10:25:28.000000000
-0500
+++ libhugetlbfs-dev-20080319/hugeutils.c 2008-04-03 11:40:13.630958744
-0500
@@ -112,14 +112,18 @@
if (hpage_size)
return hpage_size;
+ errno = 0;
hpage_kb = read_meminfo("Hugepagesize:");
if (hpage_kb < 0) {
hpage_size = -1;
+ errno = ENOSYS;
} else {
- if (hpage_kb > max_hpage_kb)
+ if (hpage_kb > max_hpage_kb) {
/* would overflow if converted to bytes */
hpage_size = -1;
+ errno = EOVERFLOW;
+ }
else
/* convert from kb to bytes */
hpage_size = 1024 * hpage_kb;
diff -ur libhugetlbfs-dev-20080319.orig/tests/alloc-instantiate-race.c
libhugetlbfs-dev-20080319/tests/alloc-instantiate-race.c
--- libhugetlbfs-dev-20080319.orig/tests/alloc-instantiate-race.c
2008-03-19 10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/alloc-instantiate-race.c 2008-04-09
15:02:57.131126304 -0500
@@ -243,9 +243,7 @@
CONFIG("Usage: alloc-instantiate-race <private|shared>");
}
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/brk_near_huge.c
libhugetlbfs-dev-20080319/tests/brk_near_huge.c
--- libhugetlbfs-dev-20080319.orig/tests/brk_near_huge.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/brk_near_huge.c 2008-04-09
15:00:55.892053320 -0500
@@ -74,9 +74,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/chunk-overcommit.c
libhugetlbfs-dev-20080319/tests/chunk-overcommit.c
--- libhugetlbfs-dev-20080319.orig/tests/chunk-overcommit.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/chunk-overcommit.c 2008-04-09
14:58:24.133094640 -0500
@@ -61,9 +61,7 @@
totpages = read_meminfo("HugePages_Free:");
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/counters.c
libhugetlbfs-dev-20080319/tests/counters.c
--- libhugetlbfs-dev-20080319.orig/tests/counters.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/counters.c 2008-04-09 15:00:23.748151472
-0500
@@ -380,9 +380,7 @@
test_init(argc, argv);
saved_nr_hugepages = read_meminfo("HugePages_Total:");
verify_dynamic_pool_support();
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
/*
* This test case should require a maximum of 3 huge pages.
diff -ur libhugetlbfs-dev-20080319.orig/tests/direct.c
libhugetlbfs-dev-20080319/tests/direct.c
--- libhugetlbfs-dev-20080319.orig/tests/direct.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/direct.c 2008-04-09 15:01:09.134038752
-0500
@@ -45,9 +45,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/empty_mounts.c
libhugetlbfs-dev-20080319/tests/empty_mounts.c
--- libhugetlbfs-dev-20080319.orig/tests/empty_mounts.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/empty_mounts.c 2008-04-03
09:41:49.914014480 -0500
@@ -57,15 +57,10 @@
int main(int argc, char *argv[])
{
- long hpage_size;
int fd;
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
-
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
PASS();
diff -ur libhugetlbfs-dev-20080319.orig/tests/heap-overflow.c
libhugetlbfs-dev-20080319/tests/heap-overflow.c
--- libhugetlbfs-dev-20080319.orig/tests/heap-overflow.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/heap-overflow.c 2008-04-09
14:59:37.859067344 -0500
@@ -39,9 +39,7 @@
if (!getenv("HUGETLB_MORECORE"))
CONFIG("Must have HUGETLB_MORECORE=yes");
- hpagesize = gethugepagesize();
- if (hpagesize < 0)
- CONFIG("No hugepage support in kernel");
+ hpagesize = check_hugepagesize();
freepages = read_meminfo("HugePages_Free:");
if (freepages < 3)
diff -ur libhugetlbfs-dev-20080319.orig/tests/huge_at_4GB_normal_below.c
libhugetlbfs-dev-20080319/tests/huge_at_4GB_normal_below.c
--- libhugetlbfs-dev-20080319.orig/tests/huge_at_4GB_normal_below.c
2008-03-19 10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/huge_at_4GB_normal_below.c 2008-04-09
15:03:25.593055816 -0500
@@ -52,9 +52,7 @@
page_size = getpagesize();
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
if (sizeof(void *) <= 4)
IRRELEVANT();
diff -ur libhugetlbfs-dev-20080319.orig/tests/huge_below_4GB_normal_above.c
libhugetlbfs-dev-20080319/tests/huge_below_4GB_normal_above.c
--- libhugetlbfs-dev-20080319.orig/tests/huge_below_4GB_normal_above.c
2008-03-19 10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/huge_below_4GB_normal_above.c
2008-04-09 14:58:34.826066672 -0500
@@ -52,9 +52,7 @@
page_size = getpagesize();
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
if (sizeof(void *) <= 4)
IRRELEVANT();
diff -ur libhugetlbfs-dev-20080319.orig/tests/hugetests.h
libhugetlbfs-dev-20080319/tests/hugetests.h
--- libhugetlbfs-dev-20080319.orig/tests/hugetests.h 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/hugetests.h 2008-04-09 14:55:54.000162480
-0500
@@ -20,6 +20,8 @@
#ifndef _HUGETESTS_H
#define _HUGETESTS_H
+#include <errno.h>
+#include <string.h>
#define DEBUG
/* Test return codes */
@@ -32,6 +34,7 @@
extern int verbose_test;
extern char *test_name;
+long call_gethugepagesize(void);
void check_free_huge_pages(int nr_pages_needed);
void test_init(int argc, char *argv[]);
int test_addr_huge(void *p);
@@ -107,4 +110,18 @@
/* stressutils.c stuff */
int remove_shmid(int shmid);
+static inline long check_hugepagesize()
+{
+ long hpage_size = call_gethugepagesize();
+ if (hpage_size < 0) {
+ if (errno == ENOSYS)
+ CONFIG("No hugepage kernel support\n");
+ else if (errno == EOVERFLOW)
+ CONFIG("Hugepage size too large");
+ else
+ CONFIG("Hugepage size (%s)", strerror(errno));
+ }
+ return hpage_size;
+}
+
#endif /* _HUGETESTS_H */
diff -ur libhugetlbfs-dev-20080319.orig/tests/icache-hygiene.c
libhugetlbfs-dev-20080319/tests/icache-hygiene.c
--- libhugetlbfs-dev-20080319.orig/tests/icache-hygiene.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/icache-hygiene.c 2008-04-09
15:01:57.726105784 -0500
@@ -188,9 +188,7 @@
.sa_flags = SA_SIGINFO,
};
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
err = sigaction(SIGILL, &sa, NULL);
if (err)
diff -ur libhugetlbfs-dev-20080319.orig/tests/linkhuge.c
libhugetlbfs-dev-20080319/tests/linkhuge.c
--- libhugetlbfs-dev-20080319.orig/tests/linkhuge.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/linkhuge.c 2008-04-09 15:05:34.076091800
-0500
@@ -132,6 +132,7 @@
int elfmap_inhibited;
test_init(argc, argv);
+ check_hugepagesize();
get_link_string(argv[0]);
diff -ur libhugetlbfs-dev-20080319.orig/tests/linkshare.c
libhugetlbfs-dev-20080319/tests/linkshare.c
--- libhugetlbfs-dev-20080319.orig/tests/linkshare.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/linkshare.c 2008-04-09 15:06:58.926096744
-0500
@@ -289,6 +289,7 @@
int main(int argc, char *argv[], char *envp[])
{
test_init(argc, argv);
+ check_hugepagesize();
if (argc == 1) {
/*
diff -ur libhugetlbfs-dev-20080319.orig/tests/map_high_truncate_2.c
libhugetlbfs-dev-20080319/tests/map_high_truncate_2.c
--- libhugetlbfs-dev-20080319.orig/tests/map_high_truncate_2.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/map_high_truncate_2.c 2008-04-09
15:02:49.771043264 -0500
@@ -63,9 +63,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
check_free_huge_pages(4);
diff -ur libhugetlbfs-dev-20080319.orig/tests/misalign.c
libhugetlbfs-dev-20080319/tests/misalign.c
--- libhugetlbfs-dev-20080319.orig/tests/misalign.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/misalign.c 2008-04-09 14:57:57.377039664
-0500
@@ -51,9 +51,7 @@
test_init(argc, argv);
page_size = getpagesize();
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/misaligned_offset.c
libhugetlbfs-dev-20080319/tests/misaligned_offset.c
--- libhugetlbfs-dev-20080319.orig/tests/misaligned_offset.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/misaligned_offset.c 2008-04-09
14:58:55.055056992 -0500
@@ -76,9 +76,7 @@
test_init(argc, argv);
page_size = getpagesize();
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/mlock.c
libhugetlbfs-dev-20080319/tests/mlock.c
--- libhugetlbfs-dev-20080319.orig/tests/mlock.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/mlock.c 2008-04-09 15:02:36.256101328
-0500
@@ -34,9 +34,7 @@
int fd = hugetlbfs_unlinked_fd();
void *p;
int ret;
- long hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ long hpage_size = check_hugepagesize();
p = mmap(0, hpage_size, PROT_READ|PROT_WRITE, flags, fd, 0);
if (p == MAP_FAILED)
diff -ur libhugetlbfs-dev-20080319.orig/tests/mmap-cow.c
libhugetlbfs-dev-20080319/tests/mmap-cow.c
--- libhugetlbfs-dev-20080319.orig/tests/mmap-cow.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/mmap-cow.c 2008-04-09 14:59:04.758045352
-0500
@@ -128,7 +128,7 @@
if (wait_list == NULL)
CONFIG("Couldn't allocate memory for wait_list\n");
- hpage_size = gethugepagesize();
+ hpage_size = check_hugepagesize();
/* Have to have enough available hugepages for each thread to
* get its own copy, plus one for the parent/page-cache */
size = (nr_hugepages / (threads+1)) * hpage_size;
diff -ur libhugetlbfs-dev-20080319.orig/tests/mmap-gettest.c
libhugetlbfs-dev-20080319/tests/mmap-gettest.c
--- libhugetlbfs-dev-20080319.orig/tests/mmap-gettest.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/mmap-gettest.c 2008-04-09
15:02:11.423153056 -0500
@@ -115,7 +115,7 @@
iter = atoi(argv[1]);
nr_hugepages = atoi(argv[2]);
- hpage_size = gethugepagesize();
+ hpage_size = check_hugepagesize();
size = nr_hugepages * hpage_size;
for (i=0; i < iter; i++) {
diff -ur libhugetlbfs-dev-20080319.orig/tests/mprotect.c
libhugetlbfs-dev-20080319/tests/mprotect.c
--- libhugetlbfs-dev-20080319.orig/tests/mprotect.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/mprotect.c 2008-04-09 15:02:42.240126216
-0500
@@ -187,9 +187,7 @@
if (err)
FAIL("Can't install SIGSEGV handler");
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/private.c
libhugetlbfs-dev-20080319/tests/private.c
--- libhugetlbfs-dev-20080319.orig/tests/private.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/private.c 2008-04-09 15:00:30.782141760
-0500
@@ -40,9 +40,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/ptrace-write-hugepage.c
libhugetlbfs-dev-20080319/tests/ptrace-write-hugepage.c
--- libhugetlbfs-dev-20080319.orig/tests/ptrace-write-hugepage.c
2008-03-19 10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/ptrace-write-hugepage.c 2008-04-09
15:02:24.002100568 -0500
@@ -107,9 +107,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/quota.c
libhugetlbfs-dev-20080319/tests/quota.c
--- libhugetlbfs-dev-20080319.orig/tests/quota.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/quota.c 2008-04-09 15:01:15.462141808
-0500
@@ -185,9 +185,7 @@
{
test_init(argc, argv);
mountpoint[0] = '\0';
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
get_quota_fs(hpage_size);
diff -ur libhugetlbfs-dev-20080319.orig/tests/readback.c
libhugetlbfs-dev-20080319/tests/readback.c
--- libhugetlbfs-dev-20080319.orig/tests/readback.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/readback.c 2008-04-09 14:58:43.428089232
-0500
@@ -38,9 +38,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/shared.c
libhugetlbfs-dev-20080319/tests/shared.c
--- libhugetlbfs-dev-20080319.orig/tests/shared.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/shared.c 2008-04-09 14:57:44.524125408
-0500
@@ -40,9 +40,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/shm-fork.c
libhugetlbfs-dev-20080319/tests/shm-fork.c
--- libhugetlbfs-dev-20080319.orig/tests/shm-fork.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/shm-fork.c 2008-04-09 14:59:16.034062616
-0500
@@ -101,7 +101,7 @@
if (numprocs > MAX_PROCS)
CONFIG("Cannot spawn more than %d processes", MAX_PROCS);
- hpage_size = gethugepagesize();
+ hpage_size = check_hugepagesize();
size = hpage_size * nr_hugepages;
verbose_printf("Requesting %lu bytes\n", size);
if ((shmid = shmget(2, size, SHM_HUGETLB|IPC_CREAT|SHM_R|SHM_W )) < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/shm-getraw.c
libhugetlbfs-dev-20080319/tests/shm-getraw.c
--- libhugetlbfs-dev-20080319.orig/tests/shm-getraw.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/shm-getraw.c 2008-04-09
15:03:07.080073272 -0500
@@ -51,7 +51,7 @@
{
size_t size;
size_t i;
- long hpage_size = gethugepagesize();
+ long hpage_size = check_hugepagesize();
volatile char *shmaddr;
char *buffer;
int raw_fd;
diff -ur libhugetlbfs-dev-20080319.orig/tests/slbpacaflush.c
libhugetlbfs-dev-20080319/tests/slbpacaflush.c
--- libhugetlbfs-dev-20080319.orig/tests/slbpacaflush.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/slbpacaflush.c 2008-04-09
14:57:32.481093032 -0500
@@ -62,9 +62,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/straddle_4GB.c
libhugetlbfs-dev-20080319/tests/straddle_4GB.c
--- libhugetlbfs-dev-20080319.orig/tests/straddle_4GB.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/straddle_4GB.c 2008-04-09
15:03:34.620145624 -0500
@@ -36,9 +36,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
if (sizeof(void *) <= 4)
TEST_BUG("64-bit only");
diff -ur libhugetlbfs-dev-20080319.orig/tests/task-size-overrun.c
libhugetlbfs-dev-20080319/tests/task-size-overrun.c
--- libhugetlbfs-dev-20080319.orig/tests/task-size-overrun.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/task-size-overrun.c 2008-04-09
14:59:25.505082784 -0500
@@ -98,9 +98,7 @@
verbose_printf("TASK_SIZE = 0x%lx\n", task_size);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/testutils.c
libhugetlbfs-dev-20080319/tests/testutils.c
--- libhugetlbfs-dev-20080319.orig/tests/testutils.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/testutils.c 2008-04-09 14:06:18.747046760
-0500
@@ -34,6 +34,7 @@
#include <sys/shm.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <dlfcn.h>
#include "hugetests.h"
@@ -69,6 +70,44 @@
exit(RC_BUG);
}
+extern long gethugepagesize (void) __attribute__ ((weak));
+
+long call_gethugepagesize(void)
+{
+ static long (*lib_gethugepagesize)(void) = NULL;
+ void *handle;
+ char *error;
+
+ if (gethugepagesize)
+ return gethugepagesize();
+
+ if (!lib_gethugepagesize) {
+
+ /* Open the library */
+ if (sizeof(int) == 4)
+ handle = dlopen("../obj32/libhugetlbfs.so", RTLD_LAZY);
+ else
+ handle = dlopen("../obj64/libhugetlbfs.so", RTLD_LAZY);
+ if (!handle) {
+ fprintf(stderr, "%s: %s (pid=%d)\n", test_name,
+ "Failed to load libhugetlbfs.so",
+ getpid());
+ exit(RC_BUG);
+ }
+
+ /* Resolve the symbol */
+ lib_gethugepagesize = dlsym(handle, "gethugepagesize");
+ if ((error = dlerror()) != NULL) {
+ fprintf(stderr, "%s: %s (pid=%d)\n", test_name,
+ "Failed to resolve gethugepagesize symbol",
+ getpid());
+ exit(RC_BUG);
+ }
+ }
+
+ return lib_gethugepagesize();
+}
+
void test_init(int argc, char *argv[])
{
int err;
diff -ur libhugetlbfs-dev-20080319.orig/tests/truncate_above_4GB.c
libhugetlbfs-dev-20080319/tests/truncate_above_4GB.c
--- libhugetlbfs-dev-20080319.orig/tests/truncate_above_4GB.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/truncate_above_4GB.c 2008-04-09
15:03:16.004046736 -0500
@@ -78,9 +78,7 @@
test_init(argc, argv);
page_size = getpagesize();
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
check_free_huge_pages(3);
diff -ur libhugetlbfs-dev-20080319.orig/tests/truncate.c
libhugetlbfs-dev-20080319/tests/truncate.c
--- libhugetlbfs-dev-20080319.orig/tests/truncate.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/truncate.c 2008-04-09 14:59:47.078129968
-0500
@@ -47,9 +47,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/truncate_reserve_wraparound.c
libhugetlbfs-dev-20080319/tests/truncate_reserve_wraparound.c
--- libhugetlbfs-dev-20080319.orig/tests/truncate_reserve_wraparound.c
2008-03-19 10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/truncate_reserve_wraparound.c
2008-04-09 15:01:27.310070280 -0500
@@ -83,9 +83,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/truncate_sigbus_versus_oom.c
libhugetlbfs-dev-20080319/tests/truncate_sigbus_versus_oom.c
--- libhugetlbfs-dev-20080319.orig/tests/truncate_sigbus_versus_oom.c
2008-03-19 10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/truncate_sigbus_versus_oom.c
2008-04-09 15:00:40.975055488 -0500
@@ -60,9 +60,7 @@
totpages = read_meminfo("HugePages_Free:");
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
diff -ur libhugetlbfs-dev-20080319.orig/tests/unlinked_fd.c
libhugetlbfs-dev-20080319/tests/unlinked_fd.c
--- libhugetlbfs-dev-20080319.orig/tests/unlinked_fd.c 2008-03-19
10:25:28.000000000 -0500
+++ libhugetlbfs-dev-20080319/tests/unlinked_fd.c 2008-04-09
14:57:20.250090928 -0500
@@ -34,9 +34,7 @@
test_init(argc, argv);
- hpage_size = gethugepagesize();
- if (hpage_size < 0)
- CONFIG("No hugepage kernel support");
+ hpage_size = check_hugepagesize();
fd = hugetlbfs_unlinked_fd();
if (fd < 0)
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Libhugetlbfs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libhugetlbfs-devel