#ifndef MANGO_VM_H_ #define MANGO_VM_H_ #include #include extern kern_status_t vm_object_create( const char *name, size_t name_len, size_t data_len, vm_prot_t prot, kern_handle_t *out); extern kern_status_t vm_object_read( kern_handle_t object, void *dst, off_t offset, size_t count, size_t *nr_read); extern kern_status_t vm_object_write( kern_handle_t object, const void *src, off_t offset, size_t count, size_t *nr_written); extern kern_status_t vm_object_copy( kern_handle_t dst, off_t dst_offset, kern_handle_t src, off_t src_offset, size_t count, size_t *nr_copied); extern kern_status_t vm_region_create( kern_handle_t parent, const char *name, size_t name_len, off_t offset, size_t region_len, vm_prot_t prot, kern_handle_t *out, virt_addr_t *out_base_address); extern kern_status_t vm_region_kill(kern_handle_t region); extern kern_status_t vm_region_read( kern_handle_t region, void *dst, off_t offset, size_t count, size_t *nr_read); extern kern_status_t vm_region_write( kern_handle_t region, const void *src, off_t offset, size_t count, size_t *nr_read); extern kern_status_t vm_region_map_absolute( kern_handle_t region, virt_addr_t map_address, kern_handle_t object, off_t object_offset, size_t length, vm_prot_t prot, virt_addr_t *out_base_address); extern kern_status_t vm_region_map_relative( kern_handle_t region, off_t region_offset, kern_handle_t object, off_t object_offset, size_t length, vm_prot_t prot, virt_addr_t *out_base_address); extern kern_status_t vm_region_unmap_absolute( kern_handle_t region, virt_addr_t address, size_t length); extern kern_status_t vm_region_unmap_relative( kern_handle_t region, off_t offset, size_t length); #endif