mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-23 13:27:29 -04:00
52 lines
No EOL
1.6 KiB
C++
52 lines
No EOL
1.6 KiB
C++
#include <vx_malloc.h>
|
|
#include <stdio.h>
|
|
|
|
#define RT_CHECK(_expr) \
|
|
do { \
|
|
int _ret = _expr; \
|
|
if (0 == _ret) \
|
|
break; \
|
|
printf("Error: '%s' returned %d!\n", #_expr, (int)_ret); \
|
|
return -1; \
|
|
} while (false)
|
|
|
|
static uint64_t minAddress = 0;
|
|
static uint64_t maxAddress = 0xffffffff;
|
|
static uint32_t pageAlign = 4096;
|
|
static uint32_t blockAlign = 64;
|
|
|
|
int main() {
|
|
|
|
auto allocator = new vortex::MemoryAllocator(
|
|
minAddress, maxAddress, pageAlign, blockAlign
|
|
);
|
|
|
|
uint64_t a0, a1, a2, a3;
|
|
|
|
RT_CHECK(allocator->allocate(128, &a0));
|
|
RT_CHECK(allocator->release(a0));
|
|
|
|
RT_CHECK(allocator->allocate(1, &a0));
|
|
RT_CHECK(allocator->allocate(1, &a1));
|
|
RT_CHECK(allocator->allocate(1, &a2));
|
|
RT_CHECK(allocator->release(a1));
|
|
RT_CHECK(allocator->allocate(1, &a3));
|
|
RT_CHECK(allocator->release(a0));
|
|
RT_CHECK(allocator->release(a2));
|
|
RT_CHECK(allocator->release(a3));
|
|
|
|
RT_CHECK(allocator->allocate(5878, &a0));
|
|
RT_CHECK(allocator->allocate(4095, &a1));
|
|
RT_CHECK(allocator->allocate(1, &a2));
|
|
RT_CHECK(allocator->allocate(1, &a3));
|
|
RT_CHECK(allocator->release(a0));
|
|
RT_CHECK(allocator->release(a1));
|
|
RT_CHECK(allocator->release(a2));
|
|
RT_CHECK(allocator->release(a3));
|
|
|
|
delete allocator;
|
|
|
|
printf("PASSED!\n");
|
|
|
|
return 0;
|
|
} |