1*19c3b8c2SApple OSS Distributions #include <darwintest.h>
2*19c3b8c2SApple OSS Distributions #include <mach/vm_page_size.h>
3*19c3b8c2SApple OSS Distributions
4*19c3b8c2SApple OSS Distributions T_GLOBAL_META(
5*19c3b8c2SApple OSS Distributions T_META_NAMESPACE("vm_page_size_overrides")
6*19c3b8c2SApple OSS Distributions );
7*19c3b8c2SApple OSS Distributions
8*19c3b8c2SApple OSS Distributions static void
verify_page_size(int expected_shift,int page_shift,vm_size_t page_size,vm_size_t page_mask)9*19c3b8c2SApple OSS Distributions verify_page_size(
10*19c3b8c2SApple OSS Distributions int expected_shift,
11*19c3b8c2SApple OSS Distributions int page_shift,
12*19c3b8c2SApple OSS Distributions vm_size_t page_size,
13*19c3b8c2SApple OSS Distributions vm_size_t page_mask)
14*19c3b8c2SApple OSS Distributions {
15*19c3b8c2SApple OSS Distributions T_ASSERT_EQ(page_shift, expected_shift, "page_shift");
16*19c3b8c2SApple OSS Distributions T_ASSERT_EQ(page_size, 1UL << expected_shift, "page_size");
17*19c3b8c2SApple OSS Distributions T_ASSERT_EQ(page_mask, page_size - 1, "page_mask");
18*19c3b8c2SApple OSS Distributions }
19*19c3b8c2SApple OSS Distributions
20*19c3b8c2SApple OSS Distributions
21*19c3b8c2SApple OSS Distributions T_DECL(kernel_4k,
22*19c3b8c2SApple OSS Distributions "Can override vm_kernel_page_size",
23*19c3b8c2SApple OSS Distributions T_META_ENVVAR("VM_KERNEL_PAGE_SIZE_4K=1"),
24*19c3b8c2SApple OSS Distributions T_META_ENVVAR("MallocGuardEdges=0"),
25*19c3b8c2SApple OSS Distributions T_META_ENVVAR("MallocDoNotProtectPrelude=1"),
26*19c3b8c2SApple OSS Distributions T_META_ENVVAR("MallocDoNotProtectPostlude=1"))
27*19c3b8c2SApple OSS Distributions {
28*19c3b8c2SApple OSS Distributions verify_page_size(12, vm_kernel_page_shift, vm_kernel_page_size, vm_kernel_page_mask);
29*19c3b8c2SApple OSS Distributions }
30*19c3b8c2SApple OSS Distributions
31*19c3b8c2SApple OSS Distributions T_DECL(invalid,
32*19c3b8c2SApple OSS Distributions "Invalid overrides",
33*19c3b8c2SApple OSS Distributions T_META_ENVVAR("VM_KERNEL_PAGE_SIZE_4K=2"),
34*19c3b8c2SApple OSS Distributions T_META_ENVVAR("VM_KERNEL_PAGE_SIZE=4K"),
35*19c3b8c2SApple OSS Distributions T_META_ENVVAR("VM_KERNEL_PAGE_SIZE="))
36*19c3b8c2SApple OSS Distributions {
37*19c3b8c2SApple OSS Distributions /*
38*19c3b8c2SApple OSS Distributions * This test just verifies that libkernel_init doesn't
39*19c3b8c2SApple OSS Distributions * crash when handling invalid overrides.
40*19c3b8c2SApple OSS Distributions * So if we got here, we can pass the test.
41*19c3b8c2SApple OSS Distributions */
42*19c3b8c2SApple OSS Distributions T_PASS("Test process spawned");
43*19c3b8c2SApple OSS Distributions }
44