in case impl mmap with nopage in device driver
sys flow:
page fault when looking at page table
interrupt for the fault
...
--stack1
asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code)
@http://lxr.linux.no/linux-old+v2.4.31/arch/i386/mm/fault.c#L140
{
...
switch (handle_mm_fault(mm, vma, address, write))
...
}
--stack2
int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct * vma,
unsigned long address, int write_access)
@http://lxr.linux.no/linux-old+v2.4.31/mm/memory.c#L1370
{
...
return handle_pte_fault(mm, vma, address, write_access, pte);
...
}
--stack3
static inline int handle_pte_fault(struct mm_struct *mm,
struct vm_area_struct * vma, unsigned long address,
int write_access, pte_t * pte)
@http://lxr.linux.no/linux-old+v2.4.31/mm/memory.c#L1337
{
...
return do_no_page(mm, vma, address, write_access, pte);
...
}
--stack4
static int do_no_page(struct mm_struct * mm, struct vm_area_struct * vma,
unsigned long address, int write_access, pte_t *page_table)
@http://lxr.linux.no/linux-old+v2.4.31/mm/memory.c#L1249
{
..
vma->vm_ops->nopage(vma, address & PAGE_MASK, 0);
..
}
Thursday, August 28, 2008
linux mmap: vm_area_struct->vm_ops->nopage
Posted by winman at 12:07 AM 0 comments
Labels: mmap nopage
Subscribe to:
Posts (Atom)