linux kernel - Where to find vma->fault()? -


i understand vma->fault() take 2 arguments vma , vmf. not sure vma->fault() inside of because cannot find code or document talks initialization of field in vm_area_struct->vm_ops->fault().

if understand correctly, looking implementation vma->fault(), being executed in mm/memory.c in __do_fault() function:

ret = vma->vm_ops->fault(vma, &vmf); 

tl;dr

short answer: special_mapping_fault() function set .fault callback.

long story

when trying find thing this, 1 shouldn't underestimate power of simple unix tools, grep. knowing .fault callback belongs memory management, know should mm/ directory. here answer:

$ grep -sirhn '\.fault = ' mm/* 

and output next:

mm/hugetlb.c:2594:  .fault = hugetlb_vm_op_fault, mm/mmap.c:3001:     .fault = special_mapping_fault, mm/mmap.c:3007:     .fault = special_mapping_fault, 

investigating further can figure out mm/hugetlb.c part of hugetlb fs implemetation, hence has nothing case.

for both other cases can see special_mapping_fault() function using .fault callback.


Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -