sandbox: vm: temporary implementation of vm_page_get_vaddr()

This commit is contained in:
2023-02-02 16:57:03 +00:00
parent 7331bdefda
commit e5a7546996
2 changed files with 15 additions and 6 deletions

View File

@@ -41,6 +41,8 @@ static struct mem_map_region mem_map[] = {
{ .base = 0x00800000, .limit = MB_TO_BYTES(MEMORY_SIZE_MB) - 1, .status = REGION_FREE }, { .base = 0x00800000, .limit = MB_TO_BYTES(MEMORY_SIZE_MB) - 1, .status = REGION_FREE },
}; };
extern void tmp_set_vaddr_base(void *);
/* virtual address of where system memory is mapped */ /* virtual address of where system memory is mapped */
static void *system_memory = NULL; static void *system_memory = NULL;
@@ -108,6 +110,7 @@ int memory_test(void)
} }
} }
tmp_set_vaddr_base(system_memory);
memblock_add(pmem_base, pmem_limit + 1); memblock_add(pmem_base, pmem_limit + 1);
for (size_t i = 0; i < nr_mem_map_entries; i++) { for (size_t i = 0; i < nr_mem_map_entries; i++) {

View File

@@ -39,6 +39,13 @@ static size_t page_order_bytes[] = {
#endif #endif
}; };
/* temporary */
static void *tmp_vaddr_base = NULL;
void tmp_set_vaddr_base(void *p)
{
tmp_vaddr_base = p;
}
void vm_page_init_array() void vm_page_init_array()
{ {
size_t pmem_size = 0; size_t pmem_size = 0;
@@ -90,8 +97,7 @@ phys_addr_t vm_page_get_paddr(vm_page_t *pg)
void *vm_page_get_vaddr(vm_page_t *pg) void *vm_page_get_vaddr(vm_page_t *pg)
{ {
/* TODO */ return (void *)((char *)tmp_vaddr_base + (vm_page_get_pfn(pg) * VM_PAGE_SIZE));
return NULL;
} }
size_t vm_page_get_pfn(vm_page_t *pg) size_t vm_page_get_pfn(vm_page_t *pg)
@@ -148,7 +154,7 @@ vm_zone_t *vm_page_get_zone(vm_page_t *pg)
if (pg->p_zone >= VM_MAX_ZONES) { if (pg->p_zone >= VM_MAX_ZONES) {
return NULL; return NULL;
} }
return &node->pg_zones[pg->p_zone]; return &node->pg_zones[pg->p_zone];
} }
@@ -176,7 +182,7 @@ vm_page_t *vm_page_alloc(vm_page_order_t order, vm_flags_t flags)
zone_id--; zone_id--;
} }
return NULL; return NULL;
} }
@@ -216,7 +222,7 @@ int vm_page_split(vm_page_t *pg, vm_page_t **a, vm_page_t **b)
*a = pg; *a = pg;
*b = buddy; *b = buddy;
return 0; return 0;
} }
@@ -258,7 +264,7 @@ vm_page_t *vm_page_merge(vm_page_t *a, vm_page_t *b)
} }
a->p_flags |= VM_PAGE_HEAD; a->p_flags |= VM_PAGE_HEAD;
return a; return a;
} }