• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/mm/

Lines Matching refs:vma

16  * Any behaviour which results in changes to the vma->vm_flags needs to
37 static long madvise_behavior(struct vm_area_struct * vma,
41 struct mm_struct * mm = vma->vm_mm;
44 int new_flags = vma->vm_flags;
64 if (new_flags == vma->vm_flags) {
65 *prev = vma;
69 pgoff = vma->vm_pgoff + ((start - vma->vm_start) >> PAGE_SHIFT);
70 *prev = vma_merge(mm, *prev, start, end, new_flags, vma->anon_vma,
71 vma->vm_file, pgoff, vma_policy(vma));
73 vma = *prev;
77 *prev = vma;
79 if (start != vma->vm_start) {
80 error = split_vma(mm, vma, start, 1);
85 if (end != vma->vm_end) {
86 error = split_vma(mm, vma, end, 0);
95 vma->vm_flags = new_flags;
106 static long madvise_willneed(struct vm_area_struct * vma,
110 struct file *file = vma->vm_file;
120 *prev = vma;
121 start = ((start - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff;
122 if (end > vma->vm_end)
123 end = vma->vm_end;
124 end = ((end - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff;
150 static long madvise_dontneed(struct vm_area_struct * vma,
154 *prev = vma;
155 if (vma->vm_flags & (VM_LOCKED|VM_HUGETLB|VM_PFNMAP))
158 if (unlikely(vma->vm_flags & VM_NONLINEAR)) {
160 .nonlinear_vma = vma,
163 zap_page_range(vma, start, end - start, &details);
165 zap_page_range(vma, start, end - start, NULL);
176 static long madvise_remove(struct vm_area_struct *vma,
186 if (vma->vm_flags & (VM_LOCKED|VM_NONLINEAR|VM_HUGETLB))
189 if (!vma->vm_file || !vma->vm_file->f_mapping
190 || !vma->vm_file->f_mapping->host) {
194 if ((vma->vm_flags & (VM_SHARED|VM_WRITE)) != (VM_SHARED|VM_WRITE))
197 mapping = vma->vm_file->f_mapping;
199 offset = (loff_t)(start - vma->vm_start)
200 + ((loff_t)vma->vm_pgoff << PAGE_SHIFT);
201 endoff = (loff_t)(end - vma->vm_start - 1)
202 + ((loff_t)vma->vm_pgoff << PAGE_SHIFT);
212 madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev,
219 if (vma->vm_flags & VM_IO) {
227 error = madvise_behavior(vma, prev, start, end, behavior);
230 error = madvise_remove(vma, prev, start, end);
234 error = madvise_willneed(vma, prev, start, end);
238 error = madvise_dontneed(vma, prev, start, end);
287 struct vm_area_struct * vma, *prev;
318 vma = find_vma_prev(current->mm, start, &prev);
319 if (vma && start > vma->vm_start)
320 prev = vma;
325 if (!vma)
328 /* Here start < (end|vma->vm_end). */
329 if (start < vma->vm_start) {
331 start = vma->vm_start;
336 /* Here vma->vm_start <= start < (end|vma->vm_end) */
337 tmp = vma->vm_end;
341 /* Here vma->vm_start <= start < tmp <= (end|vma->vm_end). */
342 error = madvise_vma(vma, &prev, start, tmp, behavior);
352 vma = prev->vm_next;
354 vma = find_vma(current->mm, start);