慢慢欣赏linux文件缓冲区 mmap分析

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值