tag | line | file | source code |
area | 26 | fs/nfs/mmap.c | extern int share_page(struct vm_area_struct * area, struct task_struct * tsk, |
area | 33 | fs/nfs/mmap.c | static void nfs_file_mmap_nopage(int error_code, struct vm_area_struct * area, |
area | 36 | fs/nfs/mmap.c | extern void file_mmap_free(struct vm_area_struct * area); |
area | 88 | fs/nfs/mmap.c | static void nfs_file_mmap_nopage(int error_code, struct vm_area_struct * area, |
area | 91 | fs/nfs/mmap.c | struct inode * inode = area->vm_inode; |
area | 101 | fs/nfs/mmap.c | pos = address - area->vm_start + area->vm_offset; |
area | 104 | fs/nfs/mmap.c | if (share_page(area, area->vm_task, inode, address, error_code, page)) { |
area | 105 | fs/nfs/mmap.c | ++area->vm_task->mm->min_flt; |
area | 109 | fs/nfs/mmap.c | ++area->vm_task->mm->maj_flt; |
area | 112 | fs/nfs/mmap.c | put_page(area->vm_task, BAD_PAGE, address, PAGE_PRIVATE); |
area | 117 | fs/nfs/mmap.c | if (address + PAGE_SIZE > area->vm_end) { |
area | 118 | fs/nfs/mmap.c | clear = address + PAGE_SIZE - area->vm_end; |
area | 145 | fs/nfs/mmap.c | if (share_page(area, area->vm_task, inode, address, error_code, page)) |
area | 153 | fs/nfs/mmap.c | if (put_page(area->vm_task,page,address,area->vm_page_prot)) |
area | 56 | include/linux/mm.h | void (*open)(struct vm_area_struct * area); |
area | 57 | include/linux/mm.h | void (*close)(struct vm_area_struct * area); |
area | 59 | include/linux/mm.h | struct vm_area_struct * area, unsigned long address); |
area | 60 | include/linux/mm.h | void (*wppage)(struct vm_area_struct * area, unsigned long address); |
area | 62 | include/linux/mm.h | int (*unmap)(struct vm_area_struct *area, unsigned long, size_t); |
area | 803 | mm/memory.c | int share_page(struct vm_area_struct * area, struct task_struct * tsk, |
area | 809 | mm/memory.c | if (!inode || inode->i_count < 2 || !area->vm_ops) |
area | 817 | mm/memory.c | if(!area) continue; |
area | 820 | mm/memory.c | if(area){ |
area | 823 | mm/memory.c | if (mpnt->vm_ops == area->vm_ops && |
area | 824 | mm/memory.c | mpnt->vm_inode->i_ino == area->vm_inode->i_ino&& |
area | 825 | mm/memory.c | mpnt->vm_inode->i_dev == area->vm_inode->i_dev){ |
area | 826 | mm/memory.c | if (mpnt->vm_ops->share(mpnt, area, address)) |
area | 1217 | mm/memory.c | void file_mmap_nopage(int error_code, struct vm_area_struct * area, unsigned long address) |
area | 1219 | mm/memory.c | struct inode * inode = area->vm_inode; |
area | 1224 | mm/memory.c | int prot = area->vm_page_prot; |
area | 1227 | mm/memory.c | block = address - area->vm_start + area->vm_offset; |
area | 1231 | mm/memory.c | if (share_page(area, area->vm_task, inode, address, error_code, page)) { |
area | 1232 | mm/memory.c | ++area->vm_task->mm->min_flt; |
area | 1236 | mm/memory.c | ++area->vm_task->mm->maj_flt; |
area | 1239 | mm/memory.c | put_page(area->vm_task, BAD_PAGE, address, PAGE_PRIVATE); |
area | 1249 | mm/memory.c | if (share_page(area, area->vm_task, inode, address, error_code, page)) |
area | 1252 | mm/memory.c | if (put_page(area->vm_task,page,address,prot)) |
area | 1258 | mm/memory.c | void file_mmap_free(struct vm_area_struct * area) |
area | 1260 | mm/memory.c | if (area->vm_inode) |
area | 1261 | mm/memory.c | iput(area->vm_inode); |
area | 1263 | mm/memory.c | if (area->vm_inode) |
area | 1264 | mm/memory.c | printk("Free inode %x:%d (%d)\n",area->vm_inode->i_dev, |
area | 1265 | mm/memory.c | area->vm_inode->i_ino, area->vm_inode->i_count); |
area | 178 | mm/mmap.c | void unmap_fixup(struct vm_area_struct *area, |
area | 184 | mm/mmap.c | if (addr < area->vm_start || addr >= area->vm_end || |
area | 185 | mm/mmap.c | end <= area->vm_start || end > area->vm_end || |
area | 189 | mm/mmap.c | area->vm_start, area->vm_end, addr, end); |
area | 194 | mm/mmap.c | if (addr == area->vm_start && end == area->vm_end) { |
area | 195 | mm/mmap.c | if (area->vm_ops && area->vm_ops->close) |
area | 196 | mm/mmap.c | area->vm_ops->close(area); |
area | 201 | mm/mmap.c | if (addr >= area->vm_start && end == area->vm_end) |
area | 202 | mm/mmap.c | area->vm_end = addr; |
area | 203 | mm/mmap.c | if (addr == area->vm_start && end <= area->vm_end) { |
area | 204 | mm/mmap.c | area->vm_offset += (end - area->vm_start); |
area | 205 | mm/mmap.c | area->vm_start = end; |
area | 209 | mm/mmap.c | if (addr > area->vm_start && end < area->vm_end) |
area | 214 | mm/mmap.c | *mpnt = *area; |
area | 215 | mm/mmap.c | mpnt->vm_offset += (end - area->vm_start); |
area | 220 | mm/mmap.c | area->vm_end = addr; /* Truncate area */ |
area | 225 | mm/mmap.c | *mpnt = *area; |
area | 152 | mm/vmalloc.c | struct vm_struct **p, *tmp, *area; |
area | 157 | mm/vmalloc.c | area = (struct vm_struct *) kmalloc(sizeof(*area), GFP_KERNEL); |
area | 158 | mm/vmalloc.c | if (!area) |
area | 161 | mm/vmalloc.c | area->size = size + PAGE_SIZE; |
area | 162 | mm/vmalloc.c | area->next = NULL; |
area | 168 | mm/vmalloc.c | area->addr = addr; |
area | 169 | mm/vmalloc.c | area->next = *p; |
area | 170 | mm/vmalloc.c | *p = area; |