Hi, Lennart asked for madvise(WILLNEED) to work on anonymous pages, he plans to use this to pre-fault pages. He currently uses: mlock/munlock for this purpose.
[ compile tested only ] Signed-off-by: Peter Zijlstra <[EMAIL PROTECTED]> --- diff --git a/mm/madvise.c b/mm/madvise.c index 93ee375..eff60ce 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -100,6 +100,24 @@ out: return error; } +static long madvice_willneed_anon(struct vm_area_struct *vma, + struct vm_area_struct **prev, + unsigned long start, unsigned long end) +{ + int ret, len; + + *prev = vma; + if (end > vma->vm_end) + end = vma->vm_end; + + len = end - start; + ret = get_user_pages(current, current->mm, start, len, + 0, 0, NULL, NULL); + if (ret < 0) + return ret; + return ret == len ? 0 : -1; +} + /* * Schedule all required I/O operations. Do not wait for completion. */ @@ -110,7 +128,7 @@ static long madvise_willneed(struct vm_area_struct * vma, struct file *file = vma->vm_file; if (!file) - return -EBADF; + return madvice_willneed_anon(vma, prev, start, end); if (file->f_mapping->a_ops->get_xip_page) { /* no bad return value, but ignore advice */ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/