Lines Matching refs:r
25 static void dump_region(const vmm_region_t *r);
94 vmm_region_t *r = calloc(1, sizeof(vmm_region_t)); in alloc_region_struct() local
95 if (!r) in alloc_region_struct()
98 strlcpy(r->name, name, sizeof(r->name)); in alloc_region_struct()
99 r->base = base; in alloc_region_struct()
100 r->size = size; in alloc_region_struct()
101 r->flags = flags; in alloc_region_struct()
102 r->arch_mmu_flags = arch_mmu_flags; in alloc_region_struct()
103 list_initialize(&r->page_list); in alloc_region_struct()
105 return r; in alloc_region_struct()
110 static status_t add_region_to_aspace(vmm_aspace_t *aspace, vmm_region_t *r) { in add_region_to_aspace() argument
112 DEBUG_ASSERT(r); in add_region_to_aspace()
115 aspace, aspace->base, aspace->size, r, r->base, r->size); in add_region_to_aspace()
118 if (r->size == 0 || !is_region_inside_aspace(aspace, r->base, r->size)) { in add_region_to_aspace()
123 vaddr_t r_end = r->base + r->size - 1; in add_region_to_aspace()
130 list_add_head(&aspace->region_list, &r->node); in add_region_to_aspace()
137 if (r->base > last->base + last->size - 1) { in add_region_to_aspace()
142 list_add_after(&last->node, &r->node); in add_region_to_aspace()
222 vmm_region_t *r = NULL; in alloc_spot() local
231 list_for_every_entry(&aspace->region_list, r, vmm_region_t, node) { in alloc_spot()
232 if (check_gap(aspace, r, in alloc_spot()
233 list_next_type(&aspace->region_list, &r->node, vmm_region_t, node), in alloc_spot()
243 *before = r ? &r->node : &aspace->region_list; in alloc_spot()
252 vmm_region_t *r = alloc_region_struct(name, vaddr, size, region_flags, arch_mmu_flags); in alloc_region() local
253 if (!r) in alloc_region()
259 if (add_region_to_aspace(aspace, r) < 0) { in alloc_region()
261 free(r); in alloc_region()
273 free(r); in alloc_region()
279 r->base = (vaddr_t)vaddr; in alloc_region()
282 list_add_after(before, &r->node); in alloc_region()
285 return r; in alloc_region()
318 vmm_region_t *r = alloc_region(aspace, name, size, vaddr, 0, in vmm_reserve_space() local
322 return r ? NO_ERROR : ERR_NO_MEMORY; in vmm_reserve_space()
360 vmm_region_t *r = alloc_region(aspace, name, size, vaddr, align_log2, vmm_flags, in vmm_alloc_physical() local
362 if (!r) { in vmm_alloc_physical()
369 *ptr = (void *)r->base; in vmm_alloc_physical()
372 int err = arch_mmu_map(&aspace->arch_aspace, r->base, paddr, size / PAGE_SIZE, arch_mmu_flags); in vmm_alloc_physical()
426 vmm_region_t *r = alloc_region(aspace, name, size, vaddr, align_pow2, vmm_flags, in vmm_alloc_contiguous() local
428 if (!r) { in vmm_alloc_contiguous()
435 *ptr = (void *)r->base; in vmm_alloc_contiguous()
438 arch_mmu_map(&aspace->arch_aspace, r->base, pa, size / PAGE_SIZE, arch_mmu_flags); in vmm_alloc_contiguous()
443 list_add_tail(&r->page_list, &p->node); in vmm_alloc_contiguous()
502 vmm_region_t *r = alloc_region(aspace, name, size, vaddr, align_pow2, vmm_flags, in vmm_alloc() local
504 if (!r) { in vmm_alloc()
511 *ptr = (void *)r->base; in vmm_alloc()
516 vaddr_t va = r->base; in vmm_alloc()
519 DEBUG_ASSERT(va <= r->base + r->size - 1); in vmm_alloc()
527 list_add_tail(&r->page_list, &p->node); in vmm_alloc()
543 vmm_region_t *r; in vmm_find_region() local
551 list_for_every_entry(&aspace->region_list, r, vmm_region_t, node) { in vmm_find_region()
552 if ((vaddr >= r->base) && (vaddr <= r->base + r->size - 1)) in vmm_find_region()
553 return r; in vmm_find_region()
562 vmm_region_t *r = vmm_find_region (aspace, vaddr); in vmm_free_region() local
563 if (!r) { in vmm_free_region()
569 list_delete(&r->node); in vmm_free_region()
572 arch_mmu_unmap(&aspace->arch_aspace, r->base, r->size / PAGE_SIZE); in vmm_free_region()
577 pmm_free(&r->page_list); in vmm_free_region()
580 free(r); in vmm_free_region()
639 vmm_region_t *r; in vmm_free_aspace() local
640 while ((r = list_remove_head_type(&aspace->region_list, vmm_region_t, node))) { in vmm_free_aspace()
642 list_add_tail(®ion_list, &r->node); in vmm_free_aspace()
645 arch_mmu_unmap(&aspace->arch_aspace, r->base, r->size / PAGE_SIZE); in vmm_free_aspace()
650 while ((r = list_remove_head_type(®ion_list, vmm_region_t, node))) { in vmm_free_aspace()
652 pmm_free(&r->page_list); in vmm_free_aspace()
655 free(r); in vmm_free_aspace()
699 static void dump_region(const vmm_region_t *r) { in dump_region() argument
701 r, r->name, r->base, r->base + r->size - 1, r->size, r->flags, r->arch_mmu_flags); in dump_region()
709 vmm_region_t *r; in dump_aspace() local
710 list_for_every_entry(&a->region_list, r, vmm_region_t, node) { in dump_aspace()
711 dump_region(r); in dump_aspace()