xref: /netbsd-src/external/bsd/jemalloc.old/dist/test/unit/pages.c (revision 8e33eff89e26cf71871ead62f0d5063e1313c33a)
1*8e33eff8Schristos #include "test/jemalloc_test.h"
2*8e33eff8Schristos 
3*8e33eff8Schristos TEST_BEGIN(test_pages_huge) {
4*8e33eff8Schristos 	size_t alloc_size;
5*8e33eff8Schristos 	bool commit;
6*8e33eff8Schristos 	void *pages, *hugepage;
7*8e33eff8Schristos 
8*8e33eff8Schristos 	alloc_size = HUGEPAGE * 2 - PAGE;
9*8e33eff8Schristos 	commit = true;
10*8e33eff8Schristos 	pages = pages_map(NULL, alloc_size, PAGE, &commit);
11*8e33eff8Schristos 	assert_ptr_not_null(pages, "Unexpected pages_map() error");
12*8e33eff8Schristos 
13*8e33eff8Schristos 	if (init_system_thp_mode == thp_mode_default) {
14*8e33eff8Schristos 	    hugepage = (void *)(ALIGNMENT_CEILING((uintptr_t)pages, HUGEPAGE));
15*8e33eff8Schristos 	    assert_b_ne(pages_huge(hugepage, HUGEPAGE), have_madvise_huge,
16*8e33eff8Schristos 	        "Unexpected pages_huge() result");
17*8e33eff8Schristos 	    assert_false(pages_nohuge(hugepage, HUGEPAGE),
18*8e33eff8Schristos 	        "Unexpected pages_nohuge() result");
19*8e33eff8Schristos 	}
20*8e33eff8Schristos 
21*8e33eff8Schristos 	pages_unmap(pages, alloc_size);
22*8e33eff8Schristos }
23*8e33eff8Schristos TEST_END
24*8e33eff8Schristos 
25*8e33eff8Schristos int
26*8e33eff8Schristos main(void) {
27*8e33eff8Schristos 	return test(
28*8e33eff8Schristos 	    test_pages_huge);
29*8e33eff8Schristos }
30