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/mmu.h>
|
||||||
#include <metalsvm/time.h>
|
#include <metalsvm/time.h>
|
||||||
#include <metalsvm/tasks.h>
|
#include <metalsvm/tasks.h>
|
||||||
|
#include <metalsvm/vma.h>
|
||||||
|
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
|
|
||||||
#define PAGE_COUNT 10
|
#define PAGE_COUNT 10
|
||||||
|
#define SIZE (PAGE_COUNT*PAGE_SIZE)
|
||||||
#define VIRT_FROM_ADDR 0x100000000000
|
#define VIRT_FROM_ADDR 0x100000000000
|
||||||
#define VIRT_TO_ADDR 0x200000000000
|
#define VIRT_TO_ADDR 0x200000000000
|
||||||
|
|
||||||
|
@ -168,11 +170,55 @@ static void paging(void)
|
||||||
//sleep(3);
|
//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 */
|
/** @brief This is a simple procedure to test memory management subsystem */
|
||||||
int memory(void* arg)
|
int memory(void* arg)
|
||||||
{
|
{
|
||||||
kprintf("======== PAGING: test started...\n");
|
kprintf("======== PAGING: test started...\n");
|
||||||
paging();
|
paging();
|
||||||
|
kprintf("======== VMA: test started...\n");
|
||||||
|
vma();
|
||||||
|
|
||||||
|
|
||||||
kprintf("======== All tests finished successfull...\n");
|
kprintf("======== All tests finished successfull...\n");
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue