13#define RBT_TYPE virtual_memory_t
14#define RBT_ID_NAME start_address
17#define PERCPU __attribute__((section(".data.percpu")))
43 node->
next =
page->vma_tree_zone_a.active;
44 page->vma_tree_zone_a.active = node;
48 node->
next =
page->vma_tree_zone_b.active;
49 page->vma_tree_zone_b.active = node;
53 node->
next =
page->vma_tree_zone_c.active;
54 page->vma_tree_zone_c.active = node;
58 node->
next =
page->vma_tree_zone_kmodule.active;
59 page->vma_tree_zone_kmodule.active = node;
63 node->
next =
page->vma_tree_zone_process.active;
64 page->vma_tree_zone_process.active = node;
144 for (
int i = 0; i < level; i++)
147 node->
data->end_address);
164 curr =
page->vma_tree_zone_a.active;
167 curr =
page->vma_tree_zone_b.active;
170 curr =
page->vma_tree_zone_c.active;
173 curr =
page->vma_tree_zone_kmodule.active;
176 curr =
page->vma_tree_zone_process.active;
static struct ioforge_device * root
volatile boolean_t paging_has_been_set
static rbt_node * rbt_search_node(rbt_node *root, uint64_t id, rbt_node *NIL)
static void rbt_remove_node(rbt_node **root, rbt_node *z, rbt_node *NIL)
static int rbt_insert_node(rbt_node **root, rbt_node *z, struct __rbt_type *data, rbt_node *NIL)
#define serial_trace(...)
void * vxSlabAlloc(struct slab_cache *cache)
void slab_free(struct slab_cache *cache, void *obj)
void vxCreateSlabCache(struct slab_cache **cache, const char *name, const size_t obj_size, size_t alignment, const uintptr_t virt_addr)
void spin_acquire(spinlock_t *lock)
void spin_release(spinlock_t *lock)
void memset(void *ptr, int value, size_t num)
struct virtual_memory_tree_node * next
static struct slab_cache * vma_block_cache
struct virtual_memory_page * create_vmm_page()
static struct slab_cache * vma_page
static void vma_rbt_debug_node(rbt_node *node, int level)
virtual_memory_t * vma_find(struct virtual_memory_page *page, uintptr_t virt_addr)
uintptr_t vma_lookup_free_vaddr(struct virtual_memory_page *page, mem_vma_region region, size_t size)
void vma_register(struct virtual_memory_page *page, uintptr_t phys_address, uintptr_t virt_addr, size_t size)
void vma_unregister(struct virtual_memory_page *page, uintptr_t virt_addr)
static struct slab_cache * vma_tree_zone_cache
static rbt_node * VMA_RBT_NIL
static struct virtual_memory_page * kernel_vmm_page
static struct slab_cache * vma_cache
static void vma_tree_add_locked(struct virtual_memory_page *page, mem_vma_region region, uintptr_t start_address, uintptr_t end_address)
static struct slab_cache * rbt_node_cache
struct virtual_memory_page * get_kernel_vmm_page()
struct virtual_memory_block virtual_memory_block_t
struct virtual_memory virtual_memory_t