| 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 | |
| 19 | VALLOC_ALIGNMENT_TEST(32, 32) |
| 20 | VALLOC_ALIGNMENT_TEST(64, 64) |
| 21 | VALLOC_ALIGNMENT_TEST(128, 128) |
| 22 | VALLOC_ALIGNMENT_TEST(256, 256) |
| 23 | |