X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/1f37d39e678168ffc089bcde6f9ea203c4763550..965940833071025bf0d386f4a9c70a5258453dbd:/lunaix-os/includes/lunaix/mm/pmm.h?ds=sidebyside diff --git a/lunaix-os/includes/lunaix/mm/pmm.h b/lunaix-os/includes/lunaix/mm/pmm.h index 44aa99d..ef9ec0b 100644 --- a/lunaix-os/includes/lunaix/mm/pmm.h +++ b/lunaix-os/includes/lunaix/mm/pmm.h @@ -2,7 +2,7 @@ #define __LUNAIX_PMM_H // Physical memory manager -#include +#include #include #include @@ -21,12 +21,11 @@ */ #define PP_FGLOCKED 0x2 -typedef uint32_t pp_attr_t; +typedef u32_t pp_attr_t; struct pp_struct { - pid_t owner; - uint32_t ref_counts; + u32_t ref_counts; pp_attr_t attr; }; @@ -36,7 +35,7 @@ struct pp_struct * @param ppn page number */ void -pmm_mark_page_free(uintptr_t ppn); +pmm_mark_page_free(ptr_t ppn); /** * @brief 标注物理页为已占用 @@ -44,7 +43,7 @@ pmm_mark_page_free(uintptr_t ppn); * @param ppn */ void -pmm_mark_page_occupied(pid_t owner, uintptr_t ppn, pp_attr_t attr); +pmm_mark_page_occupied(ptr_t ppn, pp_attr_t attr); /** * @brief 标注多个连续的物理页为可用 @@ -53,7 +52,7 @@ pmm_mark_page_occupied(pid_t owner, uintptr_t ppn, pp_attr_t attr); * @param page_count 数量 */ void -pmm_mark_chunk_free(uintptr_t start_ppn, size_t page_count); +pmm_mark_chunk_free(ptr_t start_ppn, size_t page_count); /** * @brief 标注多个连续的物理页为已占用 @@ -62,8 +61,7 @@ pmm_mark_chunk_free(uintptr_t start_ppn, size_t page_count); * @param page_count 数量 */ void -pmm_mark_chunk_occupied(pid_t owner, - uintptr_t start_ppn, +pmm_mark_chunk_occupied(u32_t start_ppn, size_t page_count, pp_attr_t attr); @@ -72,8 +70,8 @@ pmm_mark_chunk_occupied(pid_t owner, * * @return void* 可用的页地址,否则为 NULL */ -void* -pmm_alloc_page(pid_t owner, pp_attr_t attr); +ptr_t +pmm_alloc_page(pp_attr_t attr); /** * @brief 分配一个连续的物理内存区域 @@ -81,10 +79,10 @@ pmm_alloc_page(pid_t owner, pp_attr_t attr); * @param owner * @param num_pages 区域大小,单位为页 * @param attr - * @return void* + * @return ptr_t */ -void* -pmm_alloc_cpage(pid_t owner, size_t num_pages, pp_attr_t attr); +ptr_t +pmm_alloc_cpage(size_t num_pages, pp_attr_t attr); /** * @brief 初始化物理内存管理器 @@ -92,10 +90,10 @@ pmm_alloc_cpage(pid_t owner, size_t num_pages, pp_attr_t attr); * @param mem_upper_lim 最大可用内存地址 */ void -pmm_init(uintptr_t mem_upper_lim); +pmm_init(ptr_t mem_upper_lim); struct pp_struct* -pmm_query(void* pa); +pmm_query(ptr_t pa); /** * @brief 释放一个已分配的物理页,假若页地址不存在,则无操作。 @@ -104,9 +102,9 @@ pmm_query(void* pa); * @return 是否成功 */ int -pmm_free_page(pid_t owner, void* page); +pmm_free_page(ptr_t page); int -pmm_ref_page(pid_t owner, void* page); +pmm_ref_page(ptr_t page); #endif /* __LUNAIX_PMM_H */