taglinefilesource code
area26fs/nfs/mmap.cextern int share_page(struct vm_area_struct * area, struct task_struct * tsk,
area33fs/nfs/mmap.cstatic void nfs_file_mmap_nopage(int error_code, struct vm_area_struct * area,
area36fs/nfs/mmap.cextern void file_mmap_free(struct vm_area_struct * area);
area87fs/nfs/mmap.cstatic void nfs_file_mmap_nopage(int error_code, struct vm_area_struct * area,
area90fs/nfs/mmap.cstruct inode * inode = area->vm_inode;
area100fs/nfs/mmap.cpos = address - area->vm_start + area->vm_offset;
area103fs/nfs/mmap.cif (share_page(area, area->vm_task, inode, address, error_code, page)) {
area104fs/nfs/mmap.c++area->vm_task->min_flt;
area108fs/nfs/mmap.c++area->vm_task->maj_flt;
area111fs/nfs/mmap.cput_page(area->vm_task, BAD_PAGE, address, PAGE_PRIVATE);
area116fs/nfs/mmap.cif (address + PAGE_SIZE > area->vm_end) {
area117fs/nfs/mmap.cclear = address + PAGE_SIZE - area->vm_end;
area144fs/nfs/mmap.cif (share_page(area, area->vm_task, inode, address, error_code, page))
area152fs/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);
area48include/linux/mm.hint (*unmap)(struct vm_area_struct *area, unsigned long, size_t);
area761mm/memory.cint share_page(struct vm_area_struct * area, struct task_struct * tsk,
area767mm/memory.cif (!inode || inode->i_count < 2 || !area->vm_ops)
area775mm/memory.cif(!area) continue;
area778mm/memory.cif(area){
area781mm/memory.cif (mpnt->vm_ops == area->vm_ops &&
area782mm/memory.cmpnt->vm_inode->i_ino == area->vm_inode->i_ino&&
area783mm/memory.cmpnt->vm_inode->i_dev == area->vm_inode->i_dev){
area784mm/memory.cif (mpnt->vm_ops->share(mpnt, area, address))
area1156mm/memory.cvoid file_mmap_nopage(int error_code, struct vm_area_struct * area, unsigned long address)
area1158mm/memory.cstruct inode * inode = area->vm_inode;
area1163mm/memory.cint prot = area->vm_page_prot;
area1166mm/memory.cblock = address - area->vm_start + area->vm_offset;
area1170mm/memory.cif (share_page(area, area->vm_task, inode, address, error_code, page)) {
area1171mm/memory.c++area->vm_task->min_flt;
area1175mm/memory.c++area->vm_task->maj_flt;
area1178mm/memory.cput_page(area->vm_task, BAD_PAGE, address, PAGE_PRIVATE);
area1188mm/memory.cif (share_page(area, area->vm_task, inode, address, error_code, page))
area1191mm/memory.cif (put_page(area->vm_task,page,address,prot))
area1197mm/memory.cvoid file_mmap_free(struct vm_area_struct * area)
area1199mm/memory.cif (area->vm_inode)
area1200mm/memory.ciput(area->vm_inode);
area1202mm/memory.cif (area->vm_inode)
area1203mm/memory.cprintk("Free inode %x:%d (%d)\n",area->vm_inode->i_dev, 
area1204mm/memory.carea->vm_inode->i_ino, area->vm_inode->i_count);
area175mm/mmap.cvoid unmap_fixup(struct vm_area_struct *area,
area181mm/mmap.cif (addr < area->vm_start || addr >= area->vm_end ||
area182mm/mmap.cend <= area->vm_start || end > area->vm_end ||
area186mm/mmap.carea->vm_start, area->vm_end, addr, end);
area191mm/mmap.cif (addr == area->vm_start && end == area->vm_end) {
area192mm/mmap.cif (area->vm_ops && area->vm_ops->close)
area193mm/mmap.carea->vm_ops->close(area);
area198mm/mmap.cif (addr >= area->vm_start && end == area->vm_end)
area199mm/mmap.carea->vm_end = addr;
area200mm/mmap.cif (addr == area->vm_start && end <= area->vm_end) {
area201mm/mmap.carea->vm_offset += (end - area->vm_start);
area202mm/mmap.carea->vm_start = end;
area206mm/mmap.cif (addr > area->vm_start && end < area->vm_end)
area211mm/mmap.c*mpnt = *area;
area212mm/mmap.cmpnt->vm_offset += (end - area->vm_start);
area217mm/mmap.carea->vm_end = addr;  /* Truncate area */
area222mm/mmap.c*mpnt = *area;
area149mm/vmalloc.cstruct vm_struct **p, *tmp, *area;
area154mm/vmalloc.carea = (struct vm_struct *) kmalloc(sizeof(*area), GFP_KERNEL);
area155mm/vmalloc.cif (!area)
area158mm/vmalloc.carea->size = size + PAGE_SIZE;
area159mm/vmalloc.carea->next = NULL;
area165mm/vmalloc.carea->addr = addr;
area166mm/vmalloc.carea->next = *p;
area167mm/vmalloc.c*p = area;