new: vma反向映射

This commit is contained in:
fslongjin
2022-08-15 01:42:34 +08:00
parent f3cd2b7777
commit 1dd9195d69
20 changed files with 486 additions and 245 deletions

View File

@ -4,26 +4,61 @@
/**
* @brief 将vma结构体插入mm_struct的链表之中
*
*
* @param mm 内存空间分布结构体
* @param vma 待插入的VMA结构体
* @param prev 链表的前一个结点
*/
void __vma_link_list(struct mm_struct * mm, struct vm_area_struct * vma, struct vm_area_struct * prev);
void __vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma, struct vm_area_struct *prev);
/**
* @brief 将vma给定结构体从vma链表的结点之中删除
*
*
* @param mm 内存空间分布结构体
* @param vma 待插入的VMA结构体
*/
void __vma_unlink_list(struct mm_struct * mm, struct vm_area_struct * vma);
void __vma_unlink_list(struct mm_struct *mm, struct vm_area_struct *vma);
/**
* @brief 获取指定虚拟地址处映射的物理地址
*
*
* @param mm 内存空间分布结构体
* @param vaddr 虚拟地址
* @return uint64_t 已映射的物理地址
*/
uint64_t __mm_get_paddr(struct mm_struct * mm, uint64_t vaddr);
uint64_t __mm_get_paddr(struct mm_struct *mm, uint64_t vaddr);
/**
* @brief 创建anon_vma并将其与页面结构体进行绑定
* 若提供的页面结构体指针为NULL则只创建不绑定
*
* @param page 页面结构体的指针
* @param lock_page 是否将页面结构体加锁
* @return struct anon_vma_t* 创建好的anon_vma
*/
struct anon_vma_t *__anon_vma_create_alloc(struct Page *page, bool lock_page);
/**
* @brief 释放anon vma结构体
*
* @param anon_vma 待释放的anon_vma结构体
* @return int 返回码
*/
int __anon_vma_free(struct anon_vma_t *anon_vma);
/**
* @brief 将指定的vma加入到anon_vma的管理范围之中
*
* @param anon_vma 页面的anon_vma
* @param vma 待加入的vma
* @return int 返回码
*/
int __anon_vma_add(struct anon_vma_t *anon_vma, struct vm_area_struct *vma);
/**
* @brief 从anon_vma的管理范围中删除指定的vma
* (在进入这个函数之前,应该要加锁)
* @param vma 将要取消对应的anon_vma管理的vma结构体
* @return int 返回码
*/
int __anon_vma_del(struct vm_area_struct *vma);