diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-12-13 03:34:23 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-13 12:05:49 -0500 |
commit | 2e892f43ccb602e8ffad73396a1000f2040c9e0b (patch) | |
tree | 2f799810eccebeb5d432daed93ed9654238887b6 /mm | |
parent | 872225ca77519a243d7e19270b062b0ac53418d8 (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.c | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -157,7 +157,7 @@ static int fastcall find_order(int size) | |||
157 | return order; | 157 | return order; |
158 | } | 158 | } |
159 | 159 | ||
160 | void *kmalloc(size_t size, gfp_t gfp) | 160 | void *__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 | 189 | EXPORT_SYMBOL(__kmalloc); | |
190 | EXPORT_SYMBOL(kmalloc); | ||
191 | 190 | ||
192 | void kfree(const void *block) | 191 | void kfree(const void *block) |
193 | { | 192 | { |
@@ -329,6 +328,17 @@ EXPORT_SYMBOL(kmem_cache_name); | |||
329 | static struct timer_list slob_timer = TIMER_INITIALIZER( | 328 | static 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 | ||
331 | int kmem_cache_shrink(struct kmem_cache *d) | ||
332 | { | ||
333 | return 0; | ||
334 | } | ||
335 | EXPORT_SYMBOL(kmem_cache_shrink); | ||
336 | |||
337 | int kmem_ptr_validate(struct kmem_cache *a, void *b) | ||
338 | { | ||
339 | return 0; | ||
340 | } | ||
341 | |||
332 | void kmem_cache_init(void) | 342 | void 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); |