aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2009-02-23 21:57:20 -0500
committerTejun Heo <tj@kernel.org>2009-02-23 21:57:20 -0500
commitc132937556f56ee4b831ef4b23f1846e05fde102 (patch)
tree0f93037ff2ebbdc321ebd0bbfc4752823c8d6a0e /include/linux
parentcb83b42e23bd6c4bf91793a320fbe83787c13596 (diff)
bootmem: clean up arch-specific bootmem wrapping
Impact: cleaner and consistent bootmem wrapping By setting CONFIG_HAVE_ARCH_BOOTMEM_NODE, archs can define arch-specific wrappers for bootmem allocation. However, this is done a bit strangely in that only the high level convenience macros can be changed while lower level, but still exported, interface functions can't be wrapped. This not only is messy but also leads to strange situation where alloc_bootmem() does what the arch wants it to do but the equivalent __alloc_bootmem() call doesn't although they should be able to be used interchangeably. This patch updates bootmem such that archs can override / wrap the backend function - alloc_bootmem_core() instead of the highlevel interface functions to allow simpler and consistent wrapping. Also, HAVE_ARCH_BOOTMEM_NODE is renamed to HAVE_ARCH_BOOTMEM. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Johannes Weiner <hannes@saeurebad.de>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/bootmem.h10
1 files changed, 4 insertions, 6 deletions
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
index 95837bfb5256..3a87f93081ed 100644
--- a/include/linux/bootmem.h
+++ b/include/linux/bootmem.h
@@ -69,10 +69,9 @@ extern int reserve_bootmem_node(pg_data_t *pgdat,
69 unsigned long physaddr, 69 unsigned long physaddr,
70 unsigned long size, 70 unsigned long size,
71 int flags); 71 int flags);
72#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE 72extern int reserve_bootmem(unsigned long addr,
73extern int reserve_bootmem(unsigned long addr, unsigned long size, int flags); 73 unsigned long size,
74#endif 74 int flags);
75
76extern void *__alloc_bootmem_nopanic(unsigned long size, 75extern void *__alloc_bootmem_nopanic(unsigned long size,
77 unsigned long align, 76 unsigned long align,
78 unsigned long goal); 77 unsigned long goal);
@@ -94,7 +93,7 @@ extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
94 unsigned long size, 93 unsigned long size,
95 unsigned long align, 94 unsigned long align,
96 unsigned long goal); 95 unsigned long goal);
97#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE 96
98#define alloc_bootmem(x) \ 97#define alloc_bootmem(x) \
99 __alloc_bootmem(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) 98 __alloc_bootmem(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
100#define alloc_bootmem_nopanic(x) \ 99#define alloc_bootmem_nopanic(x) \
@@ -113,7 +112,6 @@ extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
113 __alloc_bootmem_node(pgdat, x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) 112 __alloc_bootmem_node(pgdat, x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
114#define alloc_bootmem_low_pages_node(pgdat, x) \ 113#define alloc_bootmem_low_pages_node(pgdat, x) \
115 __alloc_bootmem_low_node(pgdat, x, PAGE_SIZE, 0) 114 __alloc_bootmem_low_node(pgdat, x, PAGE_SIZE, 0)
116#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
117 115
118extern int reserve_bootmem_generic(unsigned long addr, unsigned long size, 116extern int reserve_bootmem_generic(unsigned long addr, unsigned long size,
119 int flags); 117 int flags);