diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-02-18 17:48:12 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-02-18 18:37:53 -0500 |
commit | c296861291669f305deef19b78042330d7135017 (patch) | |
tree | a623faa7815c0eb70ea463966c8a8715e7e69246 | |
parent | 5955c7a2cfb6a35429adea5dc480002b15ca8cfc (diff) |
vmalloc: add __get_vm_area_caller()
We have get_vm_area_caller() and __get_vm_area() but not
__get_vm_area_caller()
On powerpc, I use __get_vm_area() to separate the ranges of addresses
given to vmalloc vs. ioremap (various good reasons for that) so in order
to be able to implement the new caller tracking in /proc/vmallocinfo, I
need a "_caller" variant of it.
(akpm: needed for ongoing powerpc development, so merge it early)
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | include/linux/vmalloc.h | 4 | ||||
-rw-r--r-- | mm/vmalloc.c | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index 506e7620a986..9c0890c7a06a 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h | |||
@@ -84,6 +84,10 @@ extern struct vm_struct *get_vm_area_caller(unsigned long size, | |||
84 | unsigned long flags, void *caller); | 84 | unsigned long flags, void *caller); |
85 | extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, | 85 | extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, |
86 | unsigned long start, unsigned long end); | 86 | unsigned long start, unsigned long end); |
87 | extern struct vm_struct *__get_vm_area_caller(unsigned long size, | ||
88 | unsigned long flags, | ||
89 | unsigned long start, unsigned long end, | ||
90 | void *caller); | ||
87 | extern struct vm_struct *get_vm_area_node(unsigned long size, | 91 | extern struct vm_struct *get_vm_area_node(unsigned long size, |
88 | unsigned long flags, int node, | 92 | unsigned long flags, int node, |
89 | gfp_t gfp_mask); | 93 | gfp_t gfp_mask); |
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 75f49d312e8c..4dd2636d0b92 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
@@ -1106,6 +1106,14 @@ struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, | |||
1106 | } | 1106 | } |
1107 | EXPORT_SYMBOL_GPL(__get_vm_area); | 1107 | EXPORT_SYMBOL_GPL(__get_vm_area); |
1108 | 1108 | ||
1109 | struct vm_struct *__get_vm_area_caller(unsigned long size, unsigned long flags, | ||
1110 | unsigned long start, unsigned long end, | ||
1111 | void *caller) | ||
1112 | { | ||
1113 | return __get_vm_area_node(size, flags, start, end, -1, GFP_KERNEL, | ||
1114 | caller); | ||
1115 | } | ||
1116 | |||
1109 | /** | 1117 | /** |
1110 | * get_vm_area - reserve a contiguous kernel virtual area | 1118 | * get_vm_area - reserve a contiguous kernel virtual area |
1111 | * @size: size of the area | 1119 | * @size: size of the area |