Virtual address allocator
include/mem/vas.h View source View on GitHubStructs
Section titled “Structs”vas_range
Section titled “vas_range”struct vas_range {
vaddr_t start;
size_t length;
struct rbt_node node;
}; vas_local_tree
Section titled “vas_local_tree”struct vas_local_tree {
struct spinlock lock;
struct rbt tree;
struct fixed_size_range fsr;
size_t total_free;
}; struct vas {
struct vas_local_tree global;
vaddr_t base;
vaddr_t limit;
size_t chunk_size;
struct vas_local_tree *local;
}; Functions
Section titled “Functions”vas_bootstrap
Section titled “vas_bootstrap”struct vas * vas_bootstrap(vaddr_t base, vaddr_t limit); vas_create
Section titled “vas_create”struct vas * vas_create(vaddr_t base, vaddr_t limit); vas_from
Section titled “vas_from”struct vas * vas_from(struct address_range *ar); vas_bootstrap_from
Section titled “vas_bootstrap_from”struct vas * vas_bootstrap_from(struct address_range *ar); vas_alloc
Section titled “vas_alloc”vaddr_t vas_alloc(struct vas *vas, size_t size, size_t align); vas_free
Section titled “vas_free”void vas_free(struct vas *vas, vaddr_t addr, size_t size); vas_map
Section titled “vas_map”void * vas_map(struct vas *vas, paddr_t paddr, size_t len, uint64_t flags, enum vmm_flags vflags); vas_unmap
Section titled “vas_unmap”void vas_unmap(struct vas *vas, void *vaddr, size_t len); vas_reclaim_freelist_pages
Section titled “vas_reclaim_freelist_pages”void vas_reclaim_freelist_pages(struct vas_local_tree *lt); vas_space_dump
Section titled “vas_space_dump”void vas_space_dump(struct vas *vas); vas_vaddr_in_vas
Section titled “vas_vaddr_in_vas”bool vas_vaddr_in_vas(struct vas *vas, vaddr_t vaddr); vas_vaddr_is_allocated
Section titled “vas_vaddr_is_allocated”bool vas_vaddr_is_allocated(struct vas *vas, vaddr_t addr); Macros
Section titled “Macros”VAS_CHUNK_SIZE
Section titled “VAS_CHUNK_SIZE”#define VAS_CHUNK_SIZE PAGE_1GB