X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/8c6f505faaa66e18cdca108dca549d4ad806a077..28c176b668c841a3b7fb093faccf0efa39257603:/lunaix-os/includes/lunaix/mm/mm.h diff --git a/lunaix-os/includes/lunaix/mm/mm.h b/lunaix-os/includes/lunaix/mm/mm.h index 74868b0..d72c405 100644 --- a/lunaix-os/includes/lunaix/mm/mm.h +++ b/lunaix-os/includes/lunaix/mm/mm.h @@ -1,12 +1,12 @@ #ifndef __LUNAIX_MM_H #define __LUNAIX_MM_H -#include -#include -#include #include +#include + +#include -#include +#include /** * @brief 私有区域,该区域中的页无法进行任何形式的共享。 @@ -37,6 +37,7 @@ #define REGION_EXEC PROT_EXEC #define REGION_ANON MAP_ANON #define REGION_RW REGION_READ | REGION_WRITE +#define REGION_KERNEL (1 << 31) #define REGION_TYPE_CODE (1 << 16) #define REGION_TYPE_GENERAL (2 << 16) @@ -44,8 +45,6 @@ #define REGION_TYPE_STACK (4 << 16) #define REGION_TYPE_VARS (5 << 16) -struct proc_mm; - struct mm_region { struct llist_header head; // must be first field! @@ -56,38 +55,20 @@ struct mm_region // mapped file offset off_t foff; // mapped file length - u32_t flen; ptr_t start; ptr_t end; u32_t attr; + size_t flen; void** index; // fast reference, to accelerate access to this very region. void* data; - // When a page is mapped and required initialize - int (*init_page)(struct mm_region*, void*, off_t); // when a region is copied void (*region_copied)(struct mm_region*); // when a region is unmapped void (*destruct_region)(struct mm_region*); }; -static inline void -mm_index(void** index, struct mm_region* target) -{ - *index = (void*)target; - target->index = index; -} - -typedef struct llist_header vm_regions_t; - -struct proc_mm -{ - vm_regions_t regions; - struct mm_region* heap; - struct mm_region* stack; - pid_t pid; -}; #endif /* __LUNAIX_MM_H */