mmap调用流程
2021-09-20 13:26:43 0 举报
mmap调用流程
作者其他创作
大纲/内容
以写者身份申请读写信号量
不是,创建新的虚拟内存区域
文件映射--->调用call_mmap()
释放读写信号量
如果有私有的可写映射
sys_map
do_mmap
mmap_region(创建虚拟内存区域)
文件映射(根据文件描述符在进程的打开文件表中找到file实例)
可以和已有的虚拟内存区域合并?是调用vma_merge
共享域名映射-》调用shmem_zero_setup()
如果调用者要求把页锁定在内存中,或者要求填充页表并允许阻塞,那么函数处理即可。分配物理页,并且要在页表中把虚拟页映射到物理页。
vm_mmap_pgoff
检查偏移是不是页的整数倍(如果偏移不是页的整数倍,直接返回-EINVAL)如果偏移是页的整数倍,那么把偏移转换成页为单位的偏移,然后调用下面这函数sys_mmap_pgoff
vma_set_page_prot
sys_mmap_pgoff
get_unmapped_area(根据情况调用特定函数来分配虚拟地址范围)
may_expand_vm函数以检查进程虚拟内存限制
是否和旧的虚拟内存区域重叠-->do_munmap()
计算虚拟内存标志
vma link
匿名巨型页映射(在hugetlbfs文件系统中创建文件\"anon_hugepage\")
0 条评论
下一页