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
fix: race condition and partial state issue on injecting signal context into user...
[lunaix-os.git]
/
lunaix-os
/
includes
/
lunaix
/
mm
/
vmm.h
diff --git
a/lunaix-os/includes/lunaix/mm/vmm.h
b/lunaix-os/includes/lunaix/mm/vmm.h
index 4a22cd7fdfa66ce75d3f29036d91dee44cff652d..eab731589745221569db2354440449e4727ab41d 100644
(file)
--- a/
lunaix-os/includes/lunaix/mm/vmm.h
+++ b/
lunaix-os/includes/lunaix/mm/vmm.h
@@
-6,6
+6,24
@@
#include <stdint.h>
// Virtual memory manager
#include <stdint.h>
// Virtual memory manager
+#define VMAP_NULL 0
+/**
+ * @brief 映射模式:忽略已存在映射
+ *
+ */
+#define VMAP_IGNORE 1
+/**
+ * @brief 映射模式:不作实际映射。该功能用于预留出特定的地址空间
+ *
+ */
+#define VMAP_NOMAP 2
+
+/**
+ * @brief 规定下一个可用页映射应当限定在指定的4MB地址空间内
+ *
+ */
+#define VALLOC_PDE 1
+
/**
* @brief 初始化虚拟内存管理器
*
/**
* @brief 初始化虚拟内存管理器
*
@@
-31,7
+49,11
@@
vmm_init_pd();
* @return int
*/
int
* @return int
*/
int
-vmm_set_mapping(uintptr_t mnt, uintptr_t va, uintptr_t pa, pt_attr attr);
+vmm_set_mapping(uintptr_t mnt,
+ uintptr_t va,
+ uintptr_t pa,
+ pt_attr attr,
+ int options);
/**
* @brief 删除一个映射
/**
* @brief 删除一个映射
@@
-41,7
+63,7
@@
vmm_set_mapping(uintptr_t mnt, uintptr_t va, uintptr_t pa, pt_attr attr);
* @param va
* @return int
*/
* @param va
* @return int
*/
-
in
t
+
uintptr_
t
vmm_del_mapping(uintptr_t mnt, uintptr_t va);
/**
vmm_del_mapping(uintptr_t mnt, uintptr_t va);
/**
@@
-62,6
+84,9
@@
vmm_lookup(uintptr_t va, v_mapping* mapping);
void*
vmm_dup_page(pid_t pid, void* pa);
void*
vmm_dup_page(pid_t pid, void* pa);
+void*
+vmm_dup_vmspace(pid_t pid);
+
/**
* @brief 挂载另一个虚拟地址空间至当前虚拟地址空间
*
/**
* @brief 挂载另一个虚拟地址空间至当前虚拟地址空间
*
@@
-78,4
+103,7
@@
vmm_mount_pd(uintptr_t mnt, void* pde);
void*
vmm_unmount_pd(uintptr_t mnt);
void*
vmm_unmount_pd(uintptr_t mnt);
+void*
+vmm_next_free(uintptr_t start, int options);
+
#endif /* __LUNAIX_VMM_H */
#endif /* __LUNAIX_VMM_H */