Skip to content

Virtual address allocator

struct vas * vas_bootstrap(vaddr_t base, vaddr_t limit);
struct vas * vas_create(vaddr_t base, vaddr_t limit);
struct vas * vas_from(struct address_range *ar);
struct vas * vas_bootstrap_from(struct address_range *ar);
vaddr_t vas_alloc(struct vas *vas, size_t size, size_t align);
void vas_free(struct vas *vas, vaddr_t addr, size_t size);
void * vas_map(struct vas *vas, paddr_t paddr, size_t len, uint64_t flags, enum vmm_flags vflags);
void vas_unmap(struct vas *vas, void *vaddr, size_t len);
void vas_reclaim(struct vas *vas);
void vas_reclaim_freelist_pages(struct vas_arena *arena);
bool vas_destroy(struct vas *vas);
void vas_space_dump(struct vas *vas);
bool vas_vaddr_in_vas(struct vas *vas, vaddr_t addr);
bool vas_vaddr_is_allocated(struct vas *vas, vaddr_t addr);
#define VAS_CHUNK_SHIFT 26
#define VAS_CHUNK_SIZE (1ULL << VAS_CHUNK_SHIFT)