diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2015-06-28 19:06:51 +0200 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2015-06-28 23:50:56 +0200 |
commit | e611d89837b13fc1ba1055410cdcb2aacbf485b3 (patch) | |
tree | d6ce7252b856baa59ac27f7b8a938d9e3d4e0686 /backport/backport-include/linux/mm.h | |
parent | 94733e3faeea63c7390691e66591b6d194f9b6b2 (diff) |
backport: add get_user_pages_{locked,unlocked}()
The get_user_pages_locked() function is needed by the frame vector code
which will be added in the next patch. While adding that, this patch
also replaces the get_user_pages_unlocked() function with the original
version from the next kernel.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Diffstat (limited to 'backport/backport-include/linux/mm.h')
-rw-r--r-- | backport/backport-include/linux/mm.h | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/backport/backport-include/linux/mm.h b/backport/backport-include/linux/mm.h index d6cbffeb..f9e0ced1 100644 --- a/backport/backport-include/linux/mm.h +++ b/backport/backport-include/linux/mm.h @@ -31,20 +31,24 @@ void kvfree(const void *addr); #endif /* < 3.15 */ #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,20,0)) +#define get_user_pages_locked LINUX_BACKPORT(get_user_pages_locked) +long get_user_pages_locked(struct task_struct *tsk, struct mm_struct *mm, + unsigned long start, unsigned long nr_pages, + int write, int force, struct page **pages, + int *locked); +#define __get_user_pages_unlocked LINUX_BACKPORT(__get_user_pages_unlocked) +long __get_user_pages_unlocked(struct task_struct *tsk, struct mm_struct *mm, + unsigned long start, unsigned long nr_pages, + int write, int force, struct page **pages, + unsigned int gup_flags); #define get_user_pages_unlocked LINUX_BACKPORT(get_user_pages_unlocked) -static inline long -get_user_pages_unlocked(struct task_struct *tsk, struct mm_struct *mm, - unsigned long start, unsigned long nr_pages, - int write, int force, struct page **pages) -{ - long err; - - down_read(&mm->mmap_sem); - err = get_user_pages(tsk, mm, start, nr_pages, write, force, pages, - NULL); - up_read(&mm->mmap_sem); +long get_user_pages_unlocked(struct task_struct *tsk, struct mm_struct *mm, + unsigned long start, unsigned long nr_pages, + int write, int force, struct page **pages); +#endif - return err; -} +#ifndef FOLL_TRIED +#define FOLL_TRIED 0x800 /* a retry, previous pass started an IO */ #endif + #endif /* __BACKPORT_MM_H */ |