diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-13 14:32:09 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-13 14:32:09 -0400 |
commit | b8256b45d1245ad16221e8f965241267bd26c79d (patch) | |
tree | 88a72ca74e658322496f398fa579d51d10c69055 /arch/x86/mm/gup.c | |
parent | 8255309b887fcac11f791913a2d1d0b966a40d32 (diff) | |
parent | a30469e7921a6dd2067e9e836d7787cfa0105627 (diff) |
Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86: add linux kernel support for YMM state
x86: fix wrong section of pat_disable & make it static
x86: Fix section mismatches in mpparse
x86: fix set_fixmap to use phys_addr_t
x86: Document get_user_pages_fast()
x86, intr-remap: fix eoi for interrupt remapping without x2apic
Diffstat (limited to 'arch/x86/mm/gup.c')
-rw-r--r-- | arch/x86/mm/gup.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c index be54176e9eb2..6340cef6798a 100644 --- a/arch/x86/mm/gup.c +++ b/arch/x86/mm/gup.c | |||
@@ -219,6 +219,22 @@ static int gup_pud_range(pgd_t pgd, unsigned long addr, unsigned long end, | |||
219 | return 1; | 219 | return 1; |
220 | } | 220 | } |
221 | 221 | ||
222 | /** | ||
223 | * get_user_pages_fast() - pin user pages in memory | ||
224 | * @start: starting user address | ||
225 | * @nr_pages: number of pages from start to pin | ||
226 | * @write: whether pages will be written to | ||
227 | * @pages: array that receives pointers to the pages pinned. | ||
228 | * Should be at least nr_pages long. | ||
229 | * | ||
230 | * Attempt to pin user pages in memory without taking mm->mmap_sem. | ||
231 | * If not successful, it will fall back to taking the lock and | ||
232 | * calling get_user_pages(). | ||
233 | * | ||
234 | * Returns number of pages pinned. This may be fewer than the number | ||
235 | * requested. If nr_pages is 0 or negative, returns 0. If no pages | ||
236 | * were pinned, returns -errno. | ||
237 | */ | ||
222 | int get_user_pages_fast(unsigned long start, int nr_pages, int write, | 238 | int get_user_pages_fast(unsigned long start, int nr_pages, int write, |
223 | struct page **pages) | 239 | struct page **pages) |
224 | { | 240 | { |