X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/c50b9a23b03c677efa3842536c363d368542e30b..28c176b668c841a3b7fb093faccf0efa39257603:/lunaix-os/includes/lunaix/mm/mmap.h diff --git a/lunaix-os/includes/lunaix/mm/mmap.h b/lunaix-os/includes/lunaix/mm/mmap.h index 78c12d6..307610b 100644 --- a/lunaix-os/includes/lunaix/mm/mmap.h +++ b/lunaix-os/includes/lunaix/mm/mmap.h @@ -2,18 +2,60 @@ #define __LUNAIX_MMAP_H #include +#include #include -void* -mem_map(ptr_t pd_ref, - struct llist_header* regions, - void* addr, +struct mmap_param +{ + ptr_t vms_mnt; // vm mount point + struct proc_mm* pvms; // process vm + off_t offset; // mapped file offset + size_t mlen; // mapped memory length + size_t flen; // mapped file length + u32_t proct; // protections + u32_t flags; // other options + u32_t type; // region type + ptr_t range_start; + ptr_t range_end; +}; + +int +mem_adjust_inplace(vm_regions_t* regions, + struct mm_region* region, + ptr_t newend); + +int +mmap_user(void** addr_out, + struct mm_region** created, + ptr_t addr, + struct v_file* file, + struct mmap_param* param); + +int +mem_map(void** addr_out, + struct mm_region** created, + ptr_t addr, struct v_file* file, - u32_t offset, - size_t length, - u32_t attrs); + struct mmap_param* param); + +int +mem_unmap(ptr_t mnt, vm_regions_t* regions, ptr_t addr, size_t length); + +void +mem_unmap_region(ptr_t mnt, struct mm_region* region); + +void +mem_sync_pages(ptr_t mnt, + struct mm_region* region, + ptr_t start, + ptr_t length, + int options); -void* -mem_unmap(ptr_t mnt, struct llist_header* regions, void* addr, size_t length); +int +mem_msync(ptr_t mnt, + vm_regions_t* regions, + ptr_t addr, + size_t length, + int options); #endif /* __LUNAIX_MMAP_H */