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 | 87 | fs/nfs/mmap.c | static void nfs_file_mmap_nopage(int error_code, struct vm_area_struct * area, |
area | 90 | fs/nfs/mmap.c | struct inode * inode = area->vm_inode; |
area | 100 | fs/nfs/mmap.c | pos = address - area->vm_start + area->vm_offset; |
area | 103 | fs/nfs/mmap.c | if (share_page(area, area->vm_task, inode, address, error_code, page)) { |
area | 104 | fs/nfs/mmap.c | ++area->vm_task->min_flt; |
area | 108 | fs/nfs/mmap.c | ++area->vm_task->maj_flt; |
area | 111 | fs/nfs/mmap.c | put_page(area->vm_task, BAD_PAGE, address, PAGE_PRIVATE); |
area | 116 | fs/nfs/mmap.c | if (address + PAGE_SIZE > area->vm_end) { |
area | 117 | fs/nfs/mmap.c | clear = address + PAGE_SIZE - area->vm_end; |
area | 144 | fs/nfs/mmap.c | if (share_page(area, area->vm_task, inode, address, error_code, page)) |
area | 152 | fs/nfs/mmap.c | if (put_page(area->vm_task,page,address,area->vm_page_prot)) |
area | 59 | include/linux/mm.h | void (*open)(struct vm_area_struct * area); |
area | 60 | include/linux/mm.h | void (*close)(struct vm_area_struct * area); |
area | 62 | include/linux/mm.h | struct vm_area_struct * area, unsigned long address); |
area | 63 | include/linux/mm.h | void (*wppage)(struct vm_area_struct * area, unsigned long address); |
area | 65 | include/linux/mm.h | int (*unmap)(struct vm_area_struct *area, unsigned long, size_t); |
area | 752 | mm/memory.c | int share_page(struct vm_area_struct * area, struct task_struct * tsk, |
area | 758 | mm/memory.c | if (!inode || inode->i_count < 2 || !area->vm_ops) |
area | 766 | mm/memory.c | if(!area) continue; |
area | 769 | mm/memory.c | if(area){ |
area | 772 | mm/memory.c | if (mpnt->vm_ops == area->vm_ops && |
area | 773 | mm/memory.c | mpnt->vm_inode->i_ino == area->vm_inode->i_ino&& |
area | 774 | mm/memory.c | mpnt->vm_inode->i_dev == area->vm_inode->i_dev){ |
area | 775 | mm/memory.c | if (mpnt->vm_ops->share(mpnt, area, address)) |
area | 1145 | mm/memory.c | void file_mmap_nopage(int error_code, struct vm_area_struct * area, unsigned long address) |
area | 1147 | mm/memory.c | struct inode * inode = area->vm_inode; |
area | 1152 | mm/memory.c | int prot = area->vm_page_prot; |
area | 1155 | mm/memory.c | block = address - area->vm_start + area->vm_offset; |
area | 1159 | mm/memory.c | if (share_page(area, area->vm_task, inode, address, error_code, page)) { |
area | 1160 | mm/memory.c | ++area->vm_task->min_flt; |
area | 1164 | mm/memory.c | ++area->vm_task->maj_flt; |
area | 1167 | mm/memory.c | put_page(area->vm_task, BAD_PAGE, address, PAGE_PRIVATE); |
area | 1177 | mm/memory.c | if (share_page(area, area->vm_task, inode, address, error_code, page)) |
area | 1180 | mm/memory.c | if (put_page(area->vm_task,page,address,prot)) |
area | 1186 | mm/memory.c | void file_mmap_free(struct vm_area_struct * area) |
area | 1188 | mm/memory.c | if (area->vm_inode) |
area | 1189 | mm/memory.c | iput(area->vm_inode); |
area | 1191 | mm/memory.c | if (area->vm_inode) |
area | 1192 | mm/memory.c | printk("Free inode %x:%d (%d)\n",area->vm_inode->i_dev, |
area | 1193 | 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; |