added test for the new VMA implementation
This commit is contained in:
parent
79c4f2703e
commit
707d7132c8
1 changed files with 46 additions and 0 deletions
|
@ -23,11 +23,13 @@
|
|||
#include <metalsvm/mmu.h>
|
||||
#include <metalsvm/time.h>
|
||||
#include <metalsvm/tasks.h>
|
||||
#include <metalsvm/vma.h>
|
||||
|
||||
#include <asm/page.h>
|
||||
#include <asm/processor.h>
|
||||
|
||||
#define PAGE_COUNT 10
|
||||
#define SIZE (PAGE_COUNT*PAGE_SIZE)
|
||||
#define VIRT_FROM_ADDR 0x100000000000
|
||||
#define VIRT_TO_ADDR 0x200000000000
|
||||
|
||||
|
@ -168,11 +170,55 @@ static void paging(void)
|
|||
//sleep(3);
|
||||
}
|
||||
|
||||
/** @brief Test of the VMA allocator */
|
||||
static void vma(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
// vma_alloc
|
||||
size_t a1 = vma_alloc(SIZE, VMA_HEAP);
|
||||
test(a1, "vma_alloc(0x%x, 0x%x) = 0x%lx", SIZE, VMA_HEAP, a1);
|
||||
vma_dump();
|
||||
|
||||
size_t a2 = vma_alloc(SIZE, VMA_HEAP|VMA_USER);
|
||||
test(a2 != 0, "vma_alloc(0x%x, 0x%x) = 0x%lx", SIZE, VMA_HEAP|VMA_USER, a2);
|
||||
vma_dump();
|
||||
|
||||
// vma_add
|
||||
ret = vma_add(VIRT_FROM_ADDR, VIRT_FROM_ADDR+SIZE, VMA_HEAP|VMA_USER);
|
||||
test(ret >= 0, "vma_add(0x%lx, 0x%lx, 0x%x) = %u", VIRT_FROM_ADDR, VIRT_FROM_ADDR+SIZE, VMA_HEAP|VMA_USER, ret);
|
||||
vma_dump();
|
||||
|
||||
ret = vma_add(VIRT_FROM_ADDR+SIZE, VIRT_FROM_ADDR+2*SIZE, VMA_HEAP|VMA_USER);
|
||||
test(ret >= 0, "vma_add(0x%lx, 0x%lx, 0x%x) = %u", VIRT_FROM_ADDR+SIZE, VIRT_FROM_ADDR+2*SIZE, VMA_HEAP|VMA_USER, ret);
|
||||
vma_dump();
|
||||
|
||||
ret = vma_add(VIRT_FROM_ADDR-SIZE, VIRT_FROM_ADDR, VMA_HEAP|VMA_USER);
|
||||
test(ret >= 0, "vma_add(0x%lx, 0x%lx, 0x%x) = %u", VIRT_FROM_ADDR-SIZE, VIRT_FROM_ADDR, VMA_HEAP|VMA_USER, ret);
|
||||
vma_dump();
|
||||
|
||||
// vma_free
|
||||
ret = vma_free(VIRT_FROM_ADDR-SIZE, VIRT_FROM_ADDR);
|
||||
test(ret >= 0, "vma_free(0x%lx, 0x%lx) = %u", VIRT_FROM_ADDR-SIZE, VIRT_FROM_ADDR, ret);
|
||||
vma_dump();
|
||||
|
||||
ret = vma_free(VIRT_FROM_ADDR+SIZE, VIRT_FROM_ADDR+2*SIZE);
|
||||
test(ret >= 0, "vma_free(0x%lx, 0x%lx) = %u", VIRT_FROM_ADDR+SIZE, VIRT_FROM_ADDR+2*SIZE, ret);
|
||||
vma_dump();
|
||||
|
||||
ret = vma_free(VIRT_FROM_ADDR, VIRT_FROM_ADDR+SIZE);
|
||||
test(ret >= 0, "vma_free(0x%lx, 0x%lx) = %u", VIRT_FROM_ADDR, VIRT_FROM_ADDR+SIZE, ret);
|
||||
vma_dump();
|
||||
}
|
||||
|
||||
/** @brief This is a simple procedure to test memory management subsystem */
|
||||
int memory(void* arg)
|
||||
{
|
||||
kprintf("======== PAGING: test started...\n");
|
||||
paging();
|
||||
kprintf("======== VMA: test started...\n");
|
||||
vma();
|
||||
|
||||
|
||||
kprintf("======== All tests finished successfull...\n");
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue