make kmem_find_general_cachep static in slab.c
Subsystems (2)
PATCH 1/1 make kmem_find_general_cachep static in slab.c
include/linux/slab.h +0 -1
@@ -55,7 +55,6 @@/* prototypes */ extern void kmem_cache_init (void ); -extern kmem_cache_t *kmem_find_general_cachep (size_t ,int gfpflags);extern kmem_cache_t *kmem_cache_create (const char *,size_t ,size_t ,unsigned long ,void (*)(void *,kmem_cache_t *,unsigned long ),void (*)(void *,kmem_cache_t *,unsigned long ));
mm/slab.c +16 -18
@@ -562,6 +562,22 @@return cachep->array[smp_processor_id ()]; } +static kmem_cache_t *kmem_find_general_cachep (size_t size,int gfpflags) +{ +struct cache_sizes *csizep = malloc_sizes; + +/* This function could be moved to the header file, and +* made inline so consumers can quickly determine what +* cache pointer they require. +*/ +for ( ; csizep->cs_size; csizep++) { +if (size > csizep->cs_size) +continue ; +break ; + } +return (gfpflags &GFP_DMA ) ? csizep->cs_dmacachep : csizep->cs_cachep; +} +/* Cal the num objs, wastage, and bytes left over for a given slab size. */ static void cache_estimate (unsigned long gfporder,size_t size,size_t align,int flags,size_t *left_over,unsigned int *num)
@@ -2554,24 +2570,6 @@ }EXPORT_SYMBOL (kmem_cache_size); - -kmem_cache_t *kmem_find_general_cachep (size_t size,int gfpflags) -{ -struct cache_sizes *csizep = malloc_sizes; - -/* This function could be moved to the header file, and -* made inline so consumers can quickly determine what -* cache pointer they require. -*/ -for ( ; csizep->cs_size; csizep++) { -if (size > csizep->cs_size) -continue ; -break ; - } -return (gfpflags &GFP_DMA ) ? csizep->cs_dmacachep : csizep->cs_cachep; -} - -EXPORT_SYMBOL (kmem_find_general_cachep);struct ccupdate_struct {kmem_cache_t *cachep;
Quoted 6 lines · Manfred Spraul
Why?
It's intended for users that want to kmalloc always the same amount of memory.
For example the network layer could callkmem_find_general_cacheponce fordev->mtuand then just callkmem_cache_allocinstead of kmalloc. The loop in kmalloc often needs more cpu cycles than the actual alloc.
Because there's no single user, and for constant size arguments kmalloc already optimizes very well, so I rather doubt people are ever going to use this one.
Is the basic don't design APIs for a maybe future scheme.
include/linux/slab.h line 59
Quoted 9 lines · Christoph Hellwig
include/linux/slab.h +0
-1@@ -55,7 +55,6 @@/* prototypes */ extern void kmem_cache_init (void ); -extern kmem_cache_t *kmem_find_general_cachep (size_t ,int gfpflags);
Why?
It's intended for users that want to kmalloc always the same amount of memory.
For example the network layer could call kmem_find_general_cachep once for dev->mtu and then just call kmem_cache_alloc instead of kmalloc. The loop in kmalloc often needs more cpu cycles than the actual alloc.
--
Manfred