#ifndef _KERNEL_MEM_MEMZONE_H #define _KERNEL_MEM_MEMZONE_H #include #include #include #include struct vm_ops; struct memzone { uintptr_t vaddr; size_t len; mmu_flags_t mmu_flags; uint32_t type; file_t* file; off_t file_offset; size_t file_size; struct vm_ops* ops; }; typedef struct memzone memzone_t; struct vm_address_space; memzone_t* memzone_new(struct vm_address_space* vm_aspace, size_t start, size_t len); memzone_t* memzone_new_random(struct vm_address_space* vm_aspace, size_t len); memzone_t* memzone_new_random_backward(struct vm_address_space* vm_aspace, size_t len); memzone_t* memzone_find(struct vm_address_space* vm_aspace, size_t addr); memzone_t* memzone_find_no_proc(dynamic_array_t* zones, size_t addr); memzone_t* memzone_split(struct vm_address_space* vm_aspace, memzone_t* zone, uintptr_t addr); int memzone_free_no_proc(dynamic_array_t*, memzone_t*); int memzone_free(struct vm_address_space* vm_aspace, memzone_t*); int memzone_copy(struct vm_address_space* to_vm_aspace, struct vm_address_space* from_vm_aspace); #endif // _KERNEL_MEM_MEMZONE_H