taglinefilesource code
area24fs/nfs/mmap.cextern int share_page(struct vm_area_struct * area, struct task_struct * tsk,
area31fs/nfs/mmap.cstatic void nfs_file_mmap_nopage(int error_code, struct vm_area_struct * area,
area34fs/nfs/mmap.cextern void file_mmap_free(struct vm_area_struct * area);
area84fs/nfs/mmap.cstatic void nfs_file_mmap_nopage(int error_code, struct vm_area_struct * area,
area87fs/nfs/mmap.cstruct inode * inode = area->vm_inode;
area97fs/nfs/mmap.cpos = address - area->vm_start + area->vm_offset;
area100fs/nfs/mmap.cif (share_page(area, area->vm_task, inode, address, error_code, page)) {
area101fs/nfs/mmap.c++area->vm_task->min_flt;
area105fs/nfs/mmap.c++area->vm_task->maj_flt;
area108fs/nfs/mmap.cput_page(area->vm_task, BAD_PAGE, address, PAGE_PRIVATE);
area113fs/nfs/mmap.cif (address + PAGE_SIZE > area->vm_end) {
area114fs/nfs/mmap.cclear = address + PAGE_SIZE - area->vm_end;
area141fs/nfs/mmap.cif (share_page(area, area->vm_task, inode, address, error_code, page))
area149fs/nfs/mmap.cif (put_page(area->vm_task,page,address,area->vm_page_prot))
area42include/linux/mm.hvoid (*open)(struct vm_area_struct * area);
area43include/linux/mm.hvoid (*close)(struct vm_area_struct * area);
area45include/linux/mm.hstruct vm_area_struct * area, unsigned long address);
area46include/linux/mm.hvoid (*wppage)(struct vm_area_struct * area, unsigned long address);
area757mm/memory.cint share_page(struct vm_area_struct * area, struct task_struct * tsk,
area763mm/memory.cif (!inode || inode->i_count < 2 || !area->vm_ops)
area771mm/memory.cif(!area) continue;
area774mm/memory.cif(area){
area777mm/memory.cif (mpnt->vm_ops == area->vm_ops &&
area778mm/memory.cmpnt->vm_inode->i_ino == area->vm_inode->i_ino&&
area779mm/memory.cmpnt->vm_inode->i_dev == area->vm_inode->i_dev){
area780mm/memory.cif (mpnt->vm_ops->share(mpnt, area, address))
area1123mm/memory.cvoid file_mmap_nopage(int error_code, struct vm_area_struct * area, unsigned long address)
area1125mm/memory.cstruct inode * inode = area->vm_inode;
area1132mm/memory.cint prot = area->vm_page_prot; /* prot for buffer cache.. */
area1135mm/memory.cblock = address - area->vm_start + area->vm_offset;
area1139mm/memory.cif (share_page(area, area->vm_task, inode, address, error_code, page)) {
area1140mm/memory.c++area->vm_task->min_flt;
area1144mm/memory.c++area->vm_task->maj_flt;
area1147mm/memory.cput_page(area->vm_task, BAD_PAGE, address, PAGE_PRIVATE);
area1160mm/memory.cif (address + PAGE_SIZE > area->vm_end) {
area1161mm/memory.cclear = address + PAGE_SIZE - area->vm_end;
area1167mm/memory.cif (share_page(area, area->vm_task, inode, address, error_code, page))
area1175mm/memory.cif (put_page(area->vm_task,page,address,area->vm_page_prot))
area1181mm/memory.cvoid file_mmap_free(struct vm_area_struct * area)
area1183mm/memory.cif (area->vm_inode)
area1184mm/memory.ciput(area->vm_inode);
area1186mm/memory.cif (area->vm_inode)
area1187mm/memory.cprintk("Free inode %x:%d (%d)\n",area->vm_inode->i_dev, 
area1188mm/memory.carea->vm_inode->i_ino, area->vm_inode->i_count);