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->mm->min_flt;
area108fs/nfs/mmap.c++area->vm_task->mm->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))
area59include/linux/mm.hvoid (*open)(struct vm_area_struct * area);
area60include/linux/mm.hvoid (*close)(struct vm_area_struct * area);
area62include/linux/mm.hstruct vm_area_struct * area, unsigned long address);
area63include/linux/mm.hvoid (*wppage)(struct vm_area_struct * area, unsigned long address);
area65include/linux/mm.hint (*unmap)(struct vm_area_struct *area, unsigned long, size_t);
area754mm/memory.cint share_page(struct vm_area_struct * area, struct task_struct * tsk,
area760mm/memory.cif (!inode || inode->i_count < 2 || !area->vm_ops)
area768mm/memory.cif(!area) continue;
area771mm/memory.cif(area){
area774mm/memory.cif (mpnt->vm_ops == area->vm_ops &&
area775mm/memory.cmpnt->vm_inode->i_ino == area->vm_inode->i_ino&&
area776mm/memory.cmpnt->vm_inode->i_dev == area->vm_inode->i_dev){
area777mm/memory.cif (mpnt->vm_ops->share(mpnt, area, address))
area1154mm/memory.cvoid file_mmap_nopage(int error_code, struct vm_area_struct * area, unsigned long address)
area1156mm/memory.cstruct inode * inode = area->vm_inode;
area1161mm/memory.cint prot = area->vm_page_prot;
area1164mm/memory.cblock = address - area->vm_start + area->vm_offset;
area1168mm/memory.cif (share_page(area, area->vm_task, inode, address, error_code, page)) {
area1169mm/memory.c++area->vm_task->mm->min_flt;
area1173mm/memory.c++area->vm_task->mm->maj_flt;
area1176mm/memory.cput_page(area->vm_task, BAD_PAGE, address, PAGE_PRIVATE);
area1186mm/memory.cif (share_page(area, area->vm_task, inode, address, error_code, page))
area1189mm/memory.cif (put_page(area->vm_task,page,address,prot))
area1195mm/memory.cvoid file_mmap_free(struct vm_area_struct * area)
area1197mm/memory.cif (area->vm_inode)
area1198mm/memory.ciput(area->vm_inode);
area1200mm/memory.cif (area->vm_inode)
area1201mm/memory.cprintk("Free inode %x:%d (%d)\n",area->vm_inode->i_dev, 
area1202mm/memory.carea->vm_inode->i_ino, area->vm_inode->i_count);
area178mm/mmap.cvoid unmap_fixup(struct vm_area_struct *area,
area184mm/mmap.cif (addr < area->vm_start || addr >= area->vm_end ||
area185mm/mmap.cend <= area->vm_start || end > area->vm_end ||
area189mm/mmap.carea->vm_start, area->vm_end, addr, end);
area194mm/mmap.cif (addr == area->vm_start && end == area->vm_end) {
area195mm/mmap.cif (area->vm_ops && area->vm_ops->close)
area196mm/mmap.carea->vm_ops->close(area);
area201mm/mmap.cif (addr >= area->vm_start && end == area->vm_end)
area202mm/mmap.carea->vm_end = addr;
area203mm/mmap.cif (addr == area->vm_start && end <= area->vm_end) {
area204mm/mmap.carea->vm_offset += (end - area->vm_start);
area205mm/mmap.carea->vm_start = end;
area209mm/mmap.cif (addr > area->vm_start && end < area->vm_end)
area214mm/mmap.c*mpnt = *area;
area215mm/mmap.cmpnt->vm_offset += (end - area->vm_start);
area220mm/mmap.carea->vm_end = addr;  /* Truncate area */
area225mm/mmap.c*mpnt = *area;
area152mm/vmalloc.cstruct vm_struct **p, *tmp, *area;
area157mm/vmalloc.carea = (struct vm_struct *) kmalloc(sizeof(*area), GFP_KERNEL);
area158mm/vmalloc.cif (!area)
area161mm/vmalloc.carea->size = size + PAGE_SIZE;
area162mm/vmalloc.carea->next = NULL;
area168mm/vmalloc.carea->addr = addr;
area169mm/vmalloc.carea->next = *p;
area170mm/vmalloc.c*p = area;