[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>
This commit is contained in:
committed by
Linus Torvalds
parent
872225ca77
commit
2e892f43cc
16
mm/slob.c
16
mm/slob.c
@@ -157,7 +157,7 @@ static int fastcall find_order(int size)
|
||||
return order;
|
||||
}
|
||||
|
||||
void *kmalloc(size_t size, gfp_t gfp)
|
||||
void *__kmalloc(size_t size, gfp_t gfp)
|
||||
{
|
||||
slob_t *m;
|
||||
bigblock_t *bb;
|
||||
@@ -186,8 +186,7 @@ void *kmalloc(size_t size, gfp_t gfp)
|
||||
slob_free(bb, sizeof(bigblock_t));
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(kmalloc);
|
||||
EXPORT_SYMBOL(__kmalloc);
|
||||
|
||||
void kfree(const void *block)
|
||||
{
|
||||
@@ -329,6 +328,17 @@ EXPORT_SYMBOL(kmem_cache_name);
|
||||
static struct timer_list slob_timer = TIMER_INITIALIZER(
|
||||
(void (*)(unsigned long))kmem_cache_init, 0, 0);
|
||||
|
||||
int kmem_cache_shrink(struct kmem_cache *d)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(kmem_cache_shrink);
|
||||
|
||||
int kmem_ptr_validate(struct kmem_cache *a, void *b)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void kmem_cache_init(void)
|
||||
{
|
||||
void *p = slob_alloc(PAGE_SIZE, 0, PAGE_SIZE-1);
|
||||
|
Reference in New Issue
Block a user