aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorArjan van de Ven <arjanv@infradead.org>2004-10-27 18:25:43 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-10-27 18:25:43 -0700
commite1f40fc0cf09f591b474a0c17fc4e5ca7438c7dd (patch)
tree9f767cf3b4ab8a74038a61cd10f50537ad6f15f7 /mm
parent0e5079135a7ac864ca6f9135bbbb8de0f5191e85 (diff)
downloadhistory-e1f40fc0cf09f591b474a0c17fc4e5ca7438c7dd.tar.gz
[PATCH] vmalloc_to_page helper
After William did the remap_pfn_range change, a very common pattern became: page = page_to_pfn(vmalloc_to_page((void *)pos)); if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) { the patch below adds a very simple helper, vmalloc_to_pfn() to simplify this a bit. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/memory.c10
-rw-r--r--mm/nommu.c6
2 files changed, 16 insertions, 0 deletions
diff --git a/mm/memory.c b/mm/memory.c
index e5c68a782442bb..2f2ba8b1b03278 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1805,6 +1805,16 @@ struct page * vmalloc_to_page(void * vmalloc_addr)
EXPORT_SYMBOL(vmalloc_to_page);
+/*
+ * Map a vmalloc()-space virtual address to the physical page frame number.
+ */
+unsigned long vmalloc_to_pfn(void * vmalloc_addr)
+{
+ return page_to_pfn(vmalloc_to_page(vmalloc_addr));
+}
+
+EXPORT_SYMBOL(vmalloc_to_pfn);
+
#if !defined(CONFIG_ARCH_GATE_AREA)
#if defined(AT_SYSINFO_EHDR)
diff --git a/mm/nommu.c b/mm/nommu.c
index c99c32fd30d11e..1e780d5c58127a 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -144,6 +144,12 @@ struct page * vmalloc_to_page(void *addr)
return virt_to_page(addr);
}
+unsigned long vmalloc_to_pfn(void *addr)
+{
+ return page_to_pfn(virt_to_page(addr));
+}
+
+
long vread(char *buf, char *addr, unsigned long count)
{
memcpy(buf, addr, count);