git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
5-malloc.md (#25)
[lunaix-os.git]
/
lunaix-os
/
includes
/
lunaix
/
mm
/
pmm.h
diff --git
a/lunaix-os/includes/lunaix/mm/pmm.h
b/lunaix-os/includes/lunaix/mm/pmm.h
index 44aa99d7b0f2e8120b970ecc1343aedd45031320..ef9ec0b26fdd030c64cd52f81f5efb447938a718 100644
(file)
--- 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
#define __LUNAIX_PMM_H
// Physical memory manager
-#include <lunaix/
proces
s.h>
+#include <lunaix/
type
s.h>
#include <stddef.h>
#include <stdint.h>
#include <stddef.h>
#include <stdint.h>
@@
-21,12
+21,11
@@
*/
#define PP_FGLOCKED 0x2
*/
#define PP_FGLOCKED 0x2
-typedef u
int
32_t pp_attr_t;
+typedef u32_t pp_attr_t;
struct pp_struct
{
struct pp_struct
{
- pid_t owner;
- uint32_t ref_counts;
+ u32_t ref_counts;
pp_attr_t attr;
};
pp_attr_t attr;
};
@@
-36,7
+35,7
@@
struct pp_struct
* @param ppn page number
*/
void
* @param ppn page number
*/
void
-pmm_mark_page_free(
uint
ptr_t ppn);
+pmm_mark_page_free(ptr_t ppn);
/**
* @brief 标注物理页为已占用
/**
* @brief 标注物理页为已占用
@@
-44,7
+43,7
@@
pmm_mark_page_free(uintptr_t ppn);
* @param ppn
*/
void
* @param ppn
*/
void
-pmm_mark_page_occupied(p
id_t owner, uintp
tr_t ppn, pp_attr_t attr);
+pmm_mark_page_occupied(ptr_t ppn, pp_attr_t attr);
/**
* @brief 标注多个连续的物理页为可用
/**
* @brief 标注多个连续的物理页为可用
@@
-53,7
+52,7
@@
pmm_mark_page_occupied(pid_t owner, uintptr_t ppn, pp_attr_t attr);
* @param page_count 数量
*/
void
* @param page_count 数量
*/
void
-pmm_mark_chunk_free(
uint
ptr_t start_ppn, size_t page_count);
+pmm_mark_chunk_free(ptr_t start_ppn, size_t page_count);
/**
* @brief 标注多个连续的物理页为已占用
/**
* @brief 标注多个连续的物理页为已占用
@@
-62,8
+61,7
@@
pmm_mark_chunk_free(uintptr_t start_ppn, size_t page_count);
* @param page_count 数量
*/
void
* @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);
size_t page_count,
pp_attr_t attr);
@@
-72,8
+70,8
@@
pmm_mark_chunk_occupied(pid_t owner,
*
* @return void* 可用的页地址,否则为 NULL
*/
*
* @return void* 可用的页地址,否则为 NULL
*/
-void*
-pmm_alloc_page(p
id_t owner, p
p_attr_t attr);
+ptr_t
+pmm_alloc_page(pp_attr_t attr);
/**
* @brief 分配一个连续的物理内存区域
/**
* @brief 分配一个连续的物理内存区域
@@
-81,10
+79,10
@@
pmm_alloc_page(pid_t owner, pp_attr_t attr);
* @param owner
* @param num_pages 区域大小,单位为页
* @param 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 初始化物理内存管理器
/**
* @brief 初始化物理内存管理器
@@
-92,10
+90,10
@@
pmm_alloc_cpage(pid_t owner, size_t num_pages, pp_attr_t attr);
* @param mem_upper_lim 最大可用内存地址
*/
void
* @param mem_upper_lim 最大可用内存地址
*/
void
-pmm_init(
uint
ptr_t mem_upper_lim);
+pmm_init(ptr_t mem_upper_lim);
struct pp_struct*
struct pp_struct*
-pmm_query(
void*
pa);
+pmm_query(
ptr_t
pa);
/**
* @brief 释放一个已分配的物理页,假若页地址不存在,则无操作。
/**
* @brief 释放一个已分配的物理页,假若页地址不存在,则无操作。
@@
-104,9
+102,9
@@
pmm_query(void* pa);
* @return 是否成功
*/
int
* @return 是否成功
*/
int
-pmm_free_page(p
id_t owner, void*
page);
+pmm_free_page(p
tr_t
page);
int
int
-pmm_ref_page(p
id_t owner, void*
page);
+pmm_ref_page(p
tr_t
page);
#endif /* __LUNAIX_PMM_H */
#endif /* __LUNAIX_PMM_H */