aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@sgi.com>2006-12-13 03:34:23 -0500
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-13 12:05:49 -0500
commit2e892f43ccb602e8ffad73396a1000f2040c9e0b (patch)
tree2f799810eccebeb5d432daed93ed9654238887b6 /mm
parent872225ca77519a243d7e19270b062b0ac53418d8 (diff)
[PATCH] Cleanup slab headers / API to allow easy addition of new slab allocators
This is a response to an earlier discussion on linux-mm about splitting slab.h components per allocator. Patch is against 2.6.19-git11. See http://marc.theaimsgroup.com/?l=linux-mm&m=116469577431008&w=2 This patch cleans up the slab header definitions. We define the common functions of slob and slab in slab.h and put the extra definitions needed for slab's kmalloc implementations in <linux/slab_def.h>. In order to get a greater set of common functions we add several empty functions to slob.c and also rename slob's kmalloc to __kmalloc. Slob does not need any special definitions since we introduce a fallback case. If there is no need for a slab implementation to provide its own kmalloc mess^H^H^Hacros then we simply fall back to __kmalloc functions. That is sufficient for SLOB. Sort the function in slab.h according to their functionality. First the functions operating on struct kmem_cache * then the kmalloc related functions followed by special debug and fallback definitions. Also redo a lot of comments. Signed-off-by: Christoph Lameter <clameter@sgi.com>? Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/slob.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/mm/slob.c b/mm/slob.c
index 542394184a58..b90091c4b08c 100644
--- a/mm/slob.c
+++ b/mm/slob.c
@@ -157,7 +157,7 @@ static int fastcall find_order(int size)
157 return order; 157 return order;
158} 158}
159 159
160void *kmalloc(size_t size, gfp_t gfp) 160void *__kmalloc(size_t size, gfp_t gfp)
161{ 161{
162 slob_t *m; 162 slob_t *m;
163 bigblock_t *bb; 163 bigblock_t *bb;
@@ -186,8 +186,7 @@ void *kmalloc(size_t size, gfp_t gfp)
186 slob_free(bb, sizeof(bigblock_t)); 186 slob_free(bb, sizeof(bigblock_t));
187 return 0; 187 return 0;
188} 188}
189 189EXPORT_SYMBOL(__kmalloc);
190EXPORT_SYMBOL(kmalloc);
191 190
192void kfree(const void *block) 191void kfree(const void *block)
193{ 192{
@@ -329,6 +328,17 @@ EXPORT_SYMBOL(kmem_cache_name);
329static struct timer_list slob_timer = TIMER_INITIALIZER( 328static struct timer_list slob_timer = TIMER_INITIALIZER(
330 (void (*)(unsigned long))kmem_cache_init, 0, 0); 329 (void (*)(unsigned long))kmem_cache_init, 0, 0);
331 330
331int kmem_cache_shrink(struct kmem_cache *d)
332{
333 return 0;
334}
335EXPORT_SYMBOL(kmem_cache_shrink);
336
337int kmem_ptr_validate(struct kmem_cache *a, void *b)
338{
339 return 0;
340}
341
332void kmem_cache_init(void) 342void kmem_cache_init(void)
333{ 343{
334 void *p = slob_alloc(PAGE_SIZE, 0, PAGE_SIZE-1); 344 void *p = slob_alloc(PAGE_SIZE, 0, PAGE_SIZE-1);