[kernel][vm] get rid of external declaration of address_to_page

This commit is contained in:
Travis Geiselbrecht
2016-02-16 15:23:55 -08:00
parent 9a5cd5c529
commit 14a4c60172
6 changed files with 17 additions and 18 deletions

View File

@@ -437,8 +437,6 @@ static status_t get_l2_table(arch_aspace_t *aspace, uint32_t l1_index, paddr_t *
}
vm_page_t *address_to_page(paddr_t addr); // move to common
static void put_l2_table(arch_aspace_t *aspace, uint32_t l1_index, paddr_t l2_pa)
{
DEBUG_ASSERT(aspace);
@@ -453,7 +451,7 @@ static void put_l2_table(arch_aspace_t *aspace, uint32_t l1_index, paddr_t l2_pa
}
/* we can free this l2 table */
vm_page_t *page = address_to_page(l2_pa);
vm_page_t *page = paddr_to_vm_page(l2_pa);
if (!page)
panic("bad page table paddr 0x%lx\n", l2_pa);

View File

@@ -232,15 +232,13 @@ static int alloc_page_table(paddr_t *paddrp, uint page_size_shift)
static void free_page_table(void *vaddr, paddr_t paddr, uint page_size_shift)
{
vm_page_t *address_to_page(paddr_t addr); /* TODO: remove */
LTRACEF("vaddr %p paddr 0x%lx page_size_shift %u\n", vaddr, paddr, page_size_shift);
size_t size = 1U << page_size_shift;
vm_page_t *page;
if (size >= PAGE_SIZE) {
page = address_to_page(paddr);
page = paddr_to_vm_page(paddr);
if (!page)
panic("bad page table paddr 0x%lx\n", paddr);
pmm_free_page(page);

View File

@@ -183,8 +183,11 @@ void *paddr_to_kvaddr(paddr_t pa);
/* virtual to physical */
paddr_t vaddr_to_paddr(void *va);
/* virtual to container address space */
struct vmm_aspace *vaddr_to_aspace(void *ptr);
/* vm_page_t to physical address */
paddr_t vm_page_to_paddr(const vm_page_t *page);
/* paddr to vm_page_t */
vm_page_t *paddr_to_vm_page(paddr_t addr);
/* virtual allocator */
typedef struct vmm_aspace {
@@ -226,6 +229,9 @@ static inline vmm_aspace_t *vmm_get_kernel_aspace(void)
return &_kernel_aspace;
}
/* virtual to container address space */
struct vmm_aspace *vaddr_to_aspace(void *ptr);
/* reserve a chunk of address space to prevent allocations from that space */
status_t vmm_reserve_space(vmm_aspace_t *aspace, const char *name, size_t size, vaddr_t vaddr)
__NONNULL((1));

View File

@@ -53,7 +53,7 @@ static inline bool page_is_free(const vm_page_t *page)
return !(page->flags & VM_PAGE_FLAG_NONFREE);
}
paddr_t page_to_address(const vm_page_t *page)
paddr_t vm_page_to_paddr(const vm_page_t *page)
{
pmm_arena_t *a;
list_for_every_entry(&arena_list, a, pmm_arena_t, node) {
@@ -64,7 +64,7 @@ paddr_t page_to_address(const vm_page_t *page)
return -1;
}
vm_page_t *address_to_page(paddr_t addr)
vm_page_t *paddr_to_vm_page(paddr_t addr)
{
pmm_arena_t *a;
list_for_every_entry(&arena_list, a, pmm_arena_t, node) {
@@ -272,7 +272,7 @@ size_t pmm_free_kpages(void *_ptr, uint count)
list_initialize(&list);
while (count > 0) {
vm_page_t *p = address_to_page(vaddr_to_paddr(ptr));
vm_page_t *p = paddr_to_vm_page(vaddr_to_paddr(ptr));
if (p) {
list_add_tail(&list, &p->node);
}
@@ -365,7 +365,7 @@ retry:
static void dump_page(const vm_page_t *page)
{
printf("page %p: address 0x%lx flags 0x%x\n", page, page_to_address(page), page->flags);
printf("page %p: address 0x%lx flags 0x%x\n", page, vm_page_to_paddr(page), page->flags);
}
static void dump_arena(const pmm_arena_t *arena, bool dump_pages)
@@ -438,7 +438,7 @@ usage:
vm_page_t *p;
list_for_every_entry(&list, p, vm_page_t, node) {
printf("\tpage %p, address 0x%lx\n", p, page_to_address(p));
printf("\tpage %p, address 0x%lx\n", p, vm_page_to_paddr(p));
}
/* add the pages to the local allocated list */
@@ -463,7 +463,7 @@ usage:
vm_page_t *p;
list_for_every_entry(&list, p, vm_page_t, node) {
printf("\tpage %p, address 0x%lx\n", p, page_to_address(p));
printf("\tpage %p, address 0x%lx\n", p, vm_page_to_paddr(p));
}
/* add the pages to the local allocated list */

View File

@@ -31,9 +31,6 @@ void *boot_alloc_mem(size_t len) __MALLOC;
extern uintptr_t boot_alloc_start;
extern uintptr_t boot_alloc_end;
paddr_t page_to_address(const vm_page_t *page);
vm_page_t *address_to_page(paddr_t addr);
void vmm_init_preheap(void);
void vmm_init(void);

View File

@@ -545,7 +545,7 @@ status_t vmm_alloc(vmm_aspace_t *aspace, const char *name, size_t size, void **p
while ((p = list_remove_head_type(&page_list, vm_page_t, node))) {
DEBUG_ASSERT(va <= r->base + r->size - 1);
paddr_t pa = page_to_address(p);
paddr_t pa = vm_page_to_paddr(p);
DEBUG_ASSERT(IS_PAGE_ALIGNED(pa));
arch_mmu_map(&aspace->arch_aspace, va, pa, 1, arch_mmu_flags);