1#include "mem/slab/tests/test_internal.h"
2
3#define ASSERT_ALIGNED(ptr, alignment) \
4 TEST_ASSERT_EQ(((uintptr_t) (ptr) & ((alignment) - 1)), 0)
5
6#define VALLOC_ALIGNMENT_TEST(name, align) \
7 TEST_DEFINE_SMOKE(slab, valloc_aligned_##name, \
8 TEST_INTENSITY(32, 512, 2048), .min_ram_mib = 8) { \
9 size_t alloc_times = ctx->intensity_val ? ctx->intensity_val : 512; \
10 for (uint64_t i = 0; i < alloc_times; i++) { \
11 void *ptr = valloc_aligned(align, align); \
12 TEST_ASSERT_NONNULL(ptr); \
13 ASSERT_ALIGNED(ptr, align); \
14 vfree_aligned(ptr); \
15 } \
16 return TEST_SUCCESS; \
17 }
18
19VALLOC_ALIGNMENT_TEST(32, 32)
20VALLOC_ALIGNMENT_TEST(64, 64)
21VALLOC_ALIGNMENT_TEST(128, 128)
22VALLOC_ALIGNMENT_TEST(256, 256)
23