博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
慢慢欣赏linux文件缓冲区 mmap分析
阅读量:4070 次
发布时间:2019-05-25

本文共 1715 字,大约阅读时间需要 5 分钟。

void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code)	fault = handle_mm_fault(mm, vma, address, write ? FAULT_FLAG_WRITE : 0);	=>int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, unsigned int flags)		return handle_pte_fault(mm, vma, address, pte, pmd, flags);		=>int handle_pte_fault(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, pte_t *pte, pmd_t *pmd, unsigned int flags)			entry = *pte;			if (!pte_present(entry))				if (pte_none(entry)) 					if (vma->vm_ops) 						if (likely(vma->vm_ops->fault))							return do_linear_fault(mm, vma, address, pte, pmd, flags, entry);							=>int do_linear_fault(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, pte_t *page_table, pmd_t *pmd, unsigned int flags, pte_t orig_pte)								pgoff_t pgoff = (((address & PAGE_MASK) - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff;								pte_unmap(page_table);								return __do_fault(mm, vma, address, pmd, pgoff, flags, orig_pte);								=>int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, pmd_t *pmd, pgoff_t pgoff, unsigned int flags, pte_t orig_pte)									ret = vma->vm_ops->fault(vma, &vmf);									//struct vm_operations_struct generic_file_vm_ops = {										.fault		= filemap_fault,									};									=>int filemap_fault(struct vm_area_struct *vma, struct vm_fault *vmf)

linux页面缓存【笔记】

https://blog.csdn.net/xzongyuan/article/details/20369549

Linux内存映射(mmap)

http://www.cnblogs.com/lknlfy/archive/2012/04/27/2473804.html

Linux内核mmap机制

https://blog.csdn.net/ptonlix/article/details/79298575

由mmap引发的SIGBUS

https://blog.csdn.net/ctthuangcheng/article/details/8916015

你可能感兴趣的文章
docker private registry using rados beckend
查看>>
使用 docker 后出现的网络异常现象
查看>>
ceph ( requests are blocked ) 异常解决方法
查看>>
ceph 报警 [ low disk space] 解决
查看>>
python 调用 lvs 脚本 [备忘]
查看>>
openstack 命令行管理二十一 - 云盘管理 (备忘)
查看>>
docker 文件位置[备忘]
查看>>
rhel7 kickstart 参考[备忘]
查看>>
DNS请求分析
查看>>
docker - 资源限制
查看>>
puppet 配置 1. 服务器, 客户端配置说明
查看>>
puppet 配置 2 模块
查看>>
puppet 配置 3. 资源
查看>>
打造自己的 DockerImage
查看>>
rhel7.2 优化技巧
查看>>
megacli 划分, 删除 raid 方法备忘
查看>>
ceph - crush map 与 pool
查看>>
openstack 管理二十二 - cinder 连接多个存储 backend
查看>>
puppet 配置 3.1 管理 sysct.conf
查看>>
puppet 配置 3.2 管理 hosts
查看>>