- * @brief 尝试建立一个映射关系。映射指定的物理页地址至虚拟页地址,如果指定的虚拟页地址已被占用
- * 则尝试寻找新的可用地址(改地址总是大于指定的地址)。
- *
- * @param vpn 虚拟页地址
- * @param pa 物理页地址
- * @param dattr PDE 的属性
- * @param tattr PTE 的属性
- * @return 虚拟页地址,如不成功,则为 NULL
+ * @brief 在指定地址空间中,添加一个映射
+ *
+ * @param mnt 地址空间挂载点
+ * @param va 虚拟地址
+ * @param pa 物理地址
+ * @param attr 映射属性
+ * @return int
+ */
+int
+vmm_set_mapping(uintptr_t mnt,
+ uintptr_t va,
+ uintptr_t pa,
+ pt_attr attr,
+ int options);
+
+/**
+ * @brief 删除一个映射
+ *
+ * @param mnt
+ * @param pid
+ * @param va
+ * @return int
+ */
+uintptr_t
+vmm_del_mapping(uintptr_t mnt, uintptr_t va);
+
+/**
+ * @brief 在当前虚拟地址空间里查找一个映射
+ *
+ * @param va 虚拟地址
+ * @param mapping 映射相关属性
+ */
+int
+vmm_lookup(uintptr_t va, v_mapping* mapping);
+
+/**
+ * @brief 在指定的虚拟地址空间里查找一个映射
+ *
+ * @param mnt 地址空间锚定点
+ * @param va 虚拟地址
+ * @param mapping 映射相关属性
+ * @return int
+ */
+int
+vmm_lookupat(ptr_t mnt, uintptr_t va, v_mapping* mapping);
+
+/**
+ * @brief (COW) 为虚拟页创建副本。
+ *
+ * @return void* 包含虚拟页副本的物理页地址。
+ *