Loading...
tests/xzone_metapool_tests.c libmalloc-521.120.7 libmalloc-792.80.2
--- libmalloc/libmalloc-521.120.7/tests/xzone_metapool_tests.c
+++ libmalloc/libmalloc-792.80.2/tests/xzone_metapool_tests.c
@@ -1,35 +1,17 @@
 #include <darwintest.h>
-#include <mach/mach_init.h>
-#include <mach/vm_map.h>
 #include <sys/mman.h>
+
+#define TESTING_METAPOOL 1
+#include "xzone_testing.h"
+
+T_GLOBAL_META(T_META_RUN_CONCURRENTLY(TRUE), T_META_TAG_VM_PREFERRED,
+		T_META_TAG_NO_ALLOCATOR_OVERRIDE);
 
 #if CONFIG_XZONE_MALLOC
 
-static void *
-test_mvm_allocate_pages(size_t size, int vm_page_label)
-{
-	vm_address_t vm_addr;
-	kern_return_t kr;
+#include "../src/xzone_malloc/xzone_metapool.c"
 
-	kr = vm_allocate(mach_task_self(), &vm_addr, size,
-			VM_FLAGS_ANYWHERE | VM_MAKE_TAG(vm_page_label));
-	return kr == KERN_SUCCESS ? (void *)vm_addr : NULL;
-}
-#define mvm_allocate_plat(addr, size, align, flags, debug_flags, vm_page_label, plat) \
-	test_mvm_allocate_pages(size, vm_page_label)
-
-
-static int
-test_mvm_madvise(void *addr, size_t size, int advice)
-{
-	kern_return_t kr = madvise(addr, size, advice);
-	return kr != - 1;
-}
-#define mvm_madvise_plat(addr, size, advice, debug_flags, plat) \
-	test_mvm_madvise(addr, size, advice)
-
-#include "../src/xzone/xzone_metapool.c"
-
+#if !MALLOC_TARGET_EXCLAVES
 bool check_page_is_dirty(void *page) {
 	int disposition = 0;
 	mach_vm_size_t disp_count = 1;
@@ -40,6 +22,7 @@
 	T_QUIET; T_ASSERT_EQ(kr, KERN_SUCCESS, "Query page disposition");
 	return disposition & VM_PAGE_QUERY_PAGE_DIRTY;
 }
+#endif // !MALLOC_TARGET_EXCLAVES
 
 T_DECL(xzone_metapool_metadata,
 		"Check that metapools with metadata allocator madvise blocks") {
@@ -55,10 +38,10 @@
 	const size_t data_slab_size = KiB(512);
 	const size_t num_data_blocks = data_slab_size / data_size;
 
-	xzm_metapool_init(&metadata_pool, 1, metadata_slab_size, metadata_size,
-			metadata_size, NULL);
-	xzm_metapool_init(&data_pool, 1, data_slab_size, data_size,
-			data_size, &metadata_pool);
+	xzm_metapool_init(&metadata_pool, 1, VM_MEMORY_MALLOC, metadata_slab_size,
+			metadata_size, metadata_size, NULL);
+	xzm_metapool_init(&data_pool, 1, VM_MEMORY_MALLOC, data_slab_size,
+			data_size, data_size, &metadata_pool);
 
 	// Allocate a full slab of data blocks, ensure that they all came from the
 	// same slab, dirty all of their pages, and then free them all. After
@@ -75,15 +58,19 @@
 
 	for (int i = 0; i < num_data_blocks; i++) {
 		memset(data[i], 'A', data_size);
+#if !MALLOC_TARGET_EXCLAVES
 		T_EXPECT_TRUE(check_page_is_dirty(data[i]),
 				"Page is dirty after memset");
+#endif // !MALLOC_TARGET_EXCLAVES
 
 	}
 
 	for (int i = 0; i < num_data_blocks; i++) {
 		xzm_metapool_free(&data_pool, data[i]);
+#if !MALLOC_TARGET_EXCLAVES
 		T_EXPECT_FALSE(check_page_is_dirty(data[i]),
 				"Freed page is not dirty");
+#endif // !MALLOC_TARGET_EXCLAVES
 	}
 }