diff options
author | Eric B Munson <emunson@mgebm.net> | 2010-11-23 08:52:17 -0700 |
---|---|---|
committer | Eric B Munson <emunson@mgebm.net> | 2010-11-29 13:41:49 -0700 |
commit | c14a6c872d9806d98a1545ce7a117aaa5719af58 (patch) | |
tree | de8e9dc1c67b13e092d5c28499a0b3a600283d83 /tests | |
parent | 8a5425ed8255acc00dd5108d498329d5ef8b728f (diff) | |
download | libhugetlbfs-c14a6c872d9806d98a1545ce7a117aaa5719af58.tar.gz |
Convert heap tests to use get_mapping_page_size
Convert all the heap based tests to use get_mapping_page_size to check if
a mapping is backed by huge pages now that morecore uses MAP_HUGETLB.
Signed-off-by: Eric B Munson <emunson@mgebm.net>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/heap-overflow.c | 7 | ||||
-rw-r--r-- | tests/heapshrink.c | 15 | ||||
-rw-r--r-- | tests/malloc.c | 15 | ||||
-rw-r--r-- | tests/malloc_manysmall.c | 14 |
4 files changed, 43 insertions, 8 deletions
diff --git a/tests/heap-overflow.c b/tests/heap-overflow.c index 93196ec..044c3fd 100644 --- a/tests/heap-overflow.c +++ b/tests/heap-overflow.c @@ -41,6 +41,7 @@ int main(int argc, char **argv) long size1, size2; void *p1, *p2; int st, pid, rv; + unsigned long long mapping_size; test_init(argc, argv); @@ -68,7 +69,8 @@ int main(int argc, char **argv) p1 = malloc(size1); if (!p1) FAIL("Couldn't malloc %ld bytes", size1); - if (!test_addr_huge(p1)) + mapping_size = get_mapping_page_size(p1); + if (mapping_size != hpagesize) FAIL("First allocation %p not on hugepages", p1); /* @@ -78,7 +80,8 @@ int main(int argc, char **argv) p2 = malloc(size2); if (!p2) FAIL("Couldn't malloc %ld bytes", size2); - st = test_addr_huge(p2); + mapping_size = get_mapping_page_size(p1); + st = (mapping_size == hpagesize); verbose_printf("Second allocation %p huge? %s\n", p2, st < 0 ? "??" : (st ? "yes" : "no")); diff --git a/tests/heapshrink.c b/tests/heapshrink.c index 9c83210..0644c78 100644 --- a/tests/heapshrink.c +++ b/tests/heapshrink.c @@ -22,11 +22,20 @@ #include <string.h> #include "hugetests.h" +/* + * We cannot test mapping size against huge page size because we are not linked + * against libhugetlbfs so gethugepagesize() won't work. So instead we define + * our MIN_PAGE_SIZE as 64 kB (the largest base page available) and make sure + * the mapping page size is larger than this. + */ +#define MIN_PAGE_SIZE 65536 + #define SIZE (32 * 1024 * 1024) int main(int argc, char **argv) { int is_huge, have_env, shrink_ok, have_helper; + unsigned long long mapping_size; void *p; test_init(argc, argv); @@ -45,7 +54,8 @@ int main(int argc, char **argv) FAIL("malloc(%d) failed\n", SIZE); } memset(p, 0, SIZE); - is_huge = test_addr_huge(p+SIZE-1) == 1; + mapping_size = get_mapping_page_size(p); + is_huge = (mapping_size > MIN_PAGE_SIZE); if (have_env && !is_huge) { if (shrink_ok && have_helper) { /* Hitting unexpected behavior in malloc() */ @@ -57,7 +67,8 @@ int main(int argc, char **argv) FAIL("Heap unexpectedly on hugepages"); free(p); - if (shrink_ok && test_addr_huge(p+SIZE-1) == 1) + mapping_size = get_mapping_page_size(p+SIZE-1); + if (shrink_ok && mapping_size > MIN_PAGE_SIZE) FAIL("Heap did not shrink"); PASS(); } diff --git a/tests/malloc.c b/tests/malloc.c index 98635d4..a50c99b 100644 --- a/tests/malloc.c +++ b/tests/malloc.c @@ -25,6 +25,14 @@ #include "hugetests.h" +/* + * We cannot test mapping size against huge page size because we are not linked + * against libhugetlbfs so gethugepagesize() won't work. So instead we define + * our MIN_PAGE_SIZE as 64 kB (the largest base page available) and make sure + * the mapping page size is larger than this. + */ +#define MIN_PAGE_SIZE 65536 + static int block_sizes[] = { sizeof(int), 1024, 128*1024, 1024*1024, 16*1024*1024, 32*1024*1024, @@ -47,6 +55,7 @@ int main(int argc, char *argv[]) for (i = 0; i < NUM_SIZES; i++) { int size = block_sizes[i]; + unsigned long long mapping_size; p = malloc(size); if (! p) @@ -56,9 +65,11 @@ int main(int argc, char *argv[]) memset(p, 0, size); - if (expect_hugepage && (test_addr_huge(p) != 1)) + mapping_size = get_mapping_page_size(p); + + if (expect_hugepage && (mapping_size <= MIN_PAGE_SIZE)) FAIL("Address is not hugepage"); - if (!expect_hugepage && (test_addr_huge(p) == 1)) + if (!expect_hugepage && (mapping_size > MIN_PAGE_SIZE)) FAIL("Address is unexpectedly huge"); free(p); diff --git a/tests/malloc_manysmall.c b/tests/malloc_manysmall.c index ae10b80..25086a8 100644 --- a/tests/malloc_manysmall.c +++ b/tests/malloc_manysmall.c @@ -25,6 +25,14 @@ #include "hugetests.h" +/* + * We cannot test mapping size against huge page size because we are not linked + * against libhugetlbfs so gethugepagesize() won't work. So instead we define + * our MIN_PAGE_SIZE as 64 kB (the largest base page available) and make sure + * the mapping page size is larger than this. + */ +#define MIN_PAGE_SIZE 65536 + #define ALLOC_SIZE (128) #define NUM_ALLOCS (262144) @@ -55,9 +63,11 @@ int main(int argc, char *argv[]) if ((i % 157) == 0) { /* With this many allocs, testing every one * takes forever */ - if (expect_hugepage && (test_addr_huge(p) != 1)) + unsigned long long mapping_size = + get_mapping_page_size(p); + if (expect_hugepage && (mapping_size <= MIN_PAGE_SIZE)) FAIL("Address is not hugepage"); - if (!expect_hugepage && (test_addr_huge(p) == 1)) + if (!expect_hugepage && (mapping_size > MIN_PAGE_SIZE)) FAIL("Address is unexpectedly huge"); } } |