Loading...
--- libmalloc/libmalloc-646.0.13/tests/xzone_metapool_tests.c
+++ libmalloc/libmalloc-792.80.2/tests/xzone_metapool_tests.c
@@ -1,73 +1,15 @@
#include <darwintest.h>
#include <sys/mman.h>
-#include "../src/internal.h" // MALLOC_TARGET_EXCLAVES
+#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
-#if MALLOC_TARGET_EXCLAVES
-#include <vas/vas.h>
-#else
-#include <mach/mach_init.h>
-#include <mach/vm_map.h>
-#endif // MALLOC_TARGET_EXCLAVES
-
-static void *
-test_mvm_allocate_plat(uintptr_t addr, size_t size, int flags,
- uint32_t debug_flags, int vm_page_label, plat_map_t *map_out)
-{
-#if MALLOC_TARGET_EXCLAVES
- const _liblibc_map_type_t type = LIBLIBC_MAP_TYPE_PRIVATE |
- ((flags & VM_FLAGS_ANYWHERE) ? 0 : LIBLIBC_MAP_TYPE_FIXED) |
- ((debug_flags & MALLOC_NO_POPULATE) ? LIBLIBC_MAP_TYPE_NOCOMMIT : 0);
- return mmap_plat(map_out, addr, size,
- LIBLIBC_MAP_PERM_READ | LIBLIBC_MAP_PERM_WRITE, type, 0,
- (unsigned)vm_page_label);
-#else
- vm_address_t vm_addr;
- kern_return_t kr;
-
- 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;
-#endif // MALLOC_TARGET_EXCLAVES
-}
-#define mvm_allocate_plat(addr, size, align, flags, debug_flags, vm_page_label, plat) \
- test_mvm_allocate_plat(addr, size, flags, debug_flags, vm_page_label, plat)
-
-
-static int
-test_mvm_madvise(void *addr, size_t size, int advice, plat_map_t *map)
-{
-#if MALLOC_TARGET_EXCLAVES
- return !madvise_plat(map, addr, size, LIBLIBC_MAP_HINT_UNUSED);
-#else
- kern_return_t kr = madvise(addr, size, advice);
- return kr != - 1;
-#endif // MALLOC_TARGET_EXCLAVES
-}
-#define mvm_madvise_plat(addr, size, advice, debug_flags, plat) \
- test_mvm_madvise(addr, size, advice, plat)
-
-static void test_malloc_lock_lock(_malloc_lock_s *lock) {
-#if MALLOC_HAS_OS_LOCK
- os_unfair_lock_lock(lock);
-#else
- T_QUIET; T_ASSERT_EQ(pthread_mutex_lock(lock), 0, "Lock lock");
-#endif // MALLOC_HAS_OS_LOCK
-}
-#define _malloc_lock_lock(lock) test_malloc_lock_lock(lock);
-
-static void test_malloc_lock_unlock(_malloc_lock_s *lock) {
-#if MALLOC_HAS_OS_LOCK
- os_unfair_lock_unlock(lock);
-#else
- T_QUIET; T_ASSERT_EQ(pthread_mutex_unlock(lock), 0, "Unlock lock");
-#endif // MALLOC_HAS_OS_LOCK
-}
-#define _malloc_lock_unlock(lock) test_malloc_lock_unlock(lock);
-
-#include "../src/xzone/xzone_metapool.c"
+#include "../src/xzone_malloc/xzone_metapool.c"
#if !MALLOC_TARGET_EXCLAVES
bool check_page_is_dirty(void *page) {
@@ -96,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