diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2008-07-25 22:45:34 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-26 15:00:07 -0400 |
commit | 51cc50685a4275c6a02653670af9f108a64e01cf (patch) | |
tree | 819d47bd2b0c8a9d1835d863853804b0a0242b97 /mm | |
parent | d91958815d214ea365b98cbff6215383897edcb6 (diff) |
SL*B: drop kmem cache argument from constructor
Kmem cache passed to constructor is only needed for constructors that are
themselves multiplexeres. Nobody uses this "feature", nor does anybody uses
passed kmem cache in non-trivial way, so pass only pointer to object.
Non-trivial places are:
arch/powerpc/mm/init_64.c
arch/powerpc/mm/hugetlbpage.c
This is flag day, yes.
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Acked-by: Christoph Lameter <cl@linux-foundation.org>
Cc: Jon Tollefson <kniht@linux.vnet.ibm.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Matt Mackall <mpm@selenic.com>
[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]
[akpm@linux-foundation.org: fix mm/slab.c]
[akpm@linux-foundation.org: fix ubifs]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/rmap.c | 2 | ||||
-rw-r--r-- | mm/shmem.c | 2 | ||||
-rw-r--r-- | mm/slab.c | 11 | ||||
-rw-r--r-- | mm/slob.c | 7 | ||||
-rw-r--r-- | mm/slub.c | 13 |
5 files changed, 16 insertions, 19 deletions
@@ -138,7 +138,7 @@ void anon_vma_unlink(struct vm_area_struct *vma) | |||
138 | anon_vma_free(anon_vma); | 138 | anon_vma_free(anon_vma); |
139 | } | 139 | } |
140 | 140 | ||
141 | static void anon_vma_ctor(struct kmem_cache *cachep, void *data) | 141 | static void anon_vma_ctor(void *data) |
142 | { | 142 | { |
143 | struct anon_vma *anon_vma = data; | 143 | struct anon_vma *anon_vma = data; |
144 | 144 | ||
diff --git a/mm/shmem.c b/mm/shmem.c index 1089092aecaf..952d361774bb 100644 --- a/mm/shmem.c +++ b/mm/shmem.c | |||
@@ -2352,7 +2352,7 @@ static void shmem_destroy_inode(struct inode *inode) | |||
2352 | kmem_cache_free(shmem_inode_cachep, SHMEM_I(inode)); | 2352 | kmem_cache_free(shmem_inode_cachep, SHMEM_I(inode)); |
2353 | } | 2353 | } |
2354 | 2354 | ||
2355 | static void init_once(struct kmem_cache *cachep, void *foo) | 2355 | static void init_once(void *foo) |
2356 | { | 2356 | { |
2357 | struct shmem_inode_info *p = (struct shmem_inode_info *) foo; | 2357 | struct shmem_inode_info *p = (struct shmem_inode_info *) foo; |
2358 | 2358 | ||
@@ -406,7 +406,7 @@ struct kmem_cache { | |||
406 | unsigned int dflags; /* dynamic flags */ | 406 | unsigned int dflags; /* dynamic flags */ |
407 | 407 | ||
408 | /* constructor func */ | 408 | /* constructor func */ |
409 | void (*ctor)(struct kmem_cache *, void *); | 409 | void (*ctor)(void *obj); |
410 | 410 | ||
411 | /* 5) cache creation/removal */ | 411 | /* 5) cache creation/removal */ |
412 | const char *name; | 412 | const char *name; |
@@ -2137,8 +2137,7 @@ static int __init_refok setup_cpu_cache(struct kmem_cache *cachep) | |||
2137 | */ | 2137 | */ |
2138 | struct kmem_cache * | 2138 | struct kmem_cache * |
2139 | kmem_cache_create (const char *name, size_t size, size_t align, | 2139 | kmem_cache_create (const char *name, size_t size, size_t align, |
2140 | unsigned long flags, | 2140 | unsigned long flags, void (*ctor)(void *)) |
2141 | void (*ctor)(struct kmem_cache *, void *)) | ||
2142 | { | 2141 | { |
2143 | size_t left_over, slab_size, ralign; | 2142 | size_t left_over, slab_size, ralign; |
2144 | struct kmem_cache *cachep = NULL, *pc; | 2143 | struct kmem_cache *cachep = NULL, *pc; |
@@ -2653,7 +2652,7 @@ static void cache_init_objs(struct kmem_cache *cachep, | |||
2653 | * They must also be threaded. | 2652 | * They must also be threaded. |
2654 | */ | 2653 | */ |
2655 | if (cachep->ctor && !(cachep->flags & SLAB_POISON)) | 2654 | if (cachep->ctor && !(cachep->flags & SLAB_POISON)) |
2656 | cachep->ctor(cachep, objp + obj_offset(cachep)); | 2655 | cachep->ctor(objp + obj_offset(cachep)); |
2657 | 2656 | ||
2658 | if (cachep->flags & SLAB_RED_ZONE) { | 2657 | if (cachep->flags & SLAB_RED_ZONE) { |
2659 | if (*dbg_redzone2(cachep, objp) != RED_INACTIVE) | 2658 | if (*dbg_redzone2(cachep, objp) != RED_INACTIVE) |
@@ -2669,7 +2668,7 @@ static void cache_init_objs(struct kmem_cache *cachep, | |||
2669 | cachep->buffer_size / PAGE_SIZE, 0); | 2668 | cachep->buffer_size / PAGE_SIZE, 0); |
2670 | #else | 2669 | #else |
2671 | if (cachep->ctor) | 2670 | if (cachep->ctor) |
2672 | cachep->ctor(cachep, objp); | 2671 | cachep->ctor(objp); |
2673 | #endif | 2672 | #endif |
2674 | slab_bufctl(slabp)[i] = i + 1; | 2673 | slab_bufctl(slabp)[i] = i + 1; |
2675 | } | 2674 | } |
@@ -3093,7 +3092,7 @@ static void *cache_alloc_debugcheck_after(struct kmem_cache *cachep, | |||
3093 | #endif | 3092 | #endif |
3094 | objp += obj_offset(cachep); | 3093 | objp += obj_offset(cachep); |
3095 | if (cachep->ctor && cachep->flags & SLAB_POISON) | 3094 | if (cachep->ctor && cachep->flags & SLAB_POISON) |
3096 | cachep->ctor(cachep, objp); | 3095 | cachep->ctor(objp); |
3097 | #if ARCH_SLAB_MINALIGN | 3096 | #if ARCH_SLAB_MINALIGN |
3098 | if ((u32)objp & (ARCH_SLAB_MINALIGN-1)) { | 3097 | if ((u32)objp & (ARCH_SLAB_MINALIGN-1)) { |
3099 | printk(KERN_ERR "0x%p: not aligned to ARCH_SLAB_MINALIGN=%d\n", | 3098 | printk(KERN_ERR "0x%p: not aligned to ARCH_SLAB_MINALIGN=%d\n", |
@@ -525,12 +525,11 @@ struct kmem_cache { | |||
525 | unsigned int size, align; | 525 | unsigned int size, align; |
526 | unsigned long flags; | 526 | unsigned long flags; |
527 | const char *name; | 527 | const char *name; |
528 | void (*ctor)(struct kmem_cache *, void *); | 528 | void (*ctor)(void *); |
529 | }; | 529 | }; |
530 | 530 | ||
531 | struct kmem_cache *kmem_cache_create(const char *name, size_t size, | 531 | struct kmem_cache *kmem_cache_create(const char *name, size_t size, |
532 | size_t align, unsigned long flags, | 532 | size_t align, unsigned long flags, void (*ctor)(void *)) |
533 | void (*ctor)(struct kmem_cache *, void *)) | ||
534 | { | 533 | { |
535 | struct kmem_cache *c; | 534 | struct kmem_cache *c; |
536 | 535 | ||
@@ -575,7 +574,7 @@ void *kmem_cache_alloc_node(struct kmem_cache *c, gfp_t flags, int node) | |||
575 | b = slob_new_page(flags, get_order(c->size), node); | 574 | b = slob_new_page(flags, get_order(c->size), node); |
576 | 575 | ||
577 | if (c->ctor) | 576 | if (c->ctor) |
578 | c->ctor(c, b); | 577 | c->ctor(b); |
579 | 578 | ||
580 | return b; | 579 | return b; |
581 | } | 580 | } |
@@ -1012,7 +1012,7 @@ __setup("slub_debug", setup_slub_debug); | |||
1012 | 1012 | ||
1013 | static unsigned long kmem_cache_flags(unsigned long objsize, | 1013 | static unsigned long kmem_cache_flags(unsigned long objsize, |
1014 | unsigned long flags, const char *name, | 1014 | unsigned long flags, const char *name, |
1015 | void (*ctor)(struct kmem_cache *, void *)) | 1015 | void (*ctor)(void *)) |
1016 | { | 1016 | { |
1017 | /* | 1017 | /* |
1018 | * Enable debugging if selected on the kernel commandline. | 1018 | * Enable debugging if selected on the kernel commandline. |
@@ -1040,7 +1040,7 @@ static inline int check_object(struct kmem_cache *s, struct page *page, | |||
1040 | static inline void add_full(struct kmem_cache_node *n, struct page *page) {} | 1040 | static inline void add_full(struct kmem_cache_node *n, struct page *page) {} |
1041 | static inline unsigned long kmem_cache_flags(unsigned long objsize, | 1041 | static inline unsigned long kmem_cache_flags(unsigned long objsize, |
1042 | unsigned long flags, const char *name, | 1042 | unsigned long flags, const char *name, |
1043 | void (*ctor)(struct kmem_cache *, void *)) | 1043 | void (*ctor)(void *)) |
1044 | { | 1044 | { |
1045 | return flags; | 1045 | return flags; |
1046 | } | 1046 | } |
@@ -1103,7 +1103,7 @@ static void setup_object(struct kmem_cache *s, struct page *page, | |||
1103 | { | 1103 | { |
1104 | setup_object_debug(s, page, object); | 1104 | setup_object_debug(s, page, object); |
1105 | if (unlikely(s->ctor)) | 1105 | if (unlikely(s->ctor)) |
1106 | s->ctor(s, object); | 1106 | s->ctor(object); |
1107 | } | 1107 | } |
1108 | 1108 | ||
1109 | static struct page *new_slab(struct kmem_cache *s, gfp_t flags, int node) | 1109 | static struct page *new_slab(struct kmem_cache *s, gfp_t flags, int node) |
@@ -2286,7 +2286,7 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) | |||
2286 | static int kmem_cache_open(struct kmem_cache *s, gfp_t gfpflags, | 2286 | static int kmem_cache_open(struct kmem_cache *s, gfp_t gfpflags, |
2287 | const char *name, size_t size, | 2287 | const char *name, size_t size, |
2288 | size_t align, unsigned long flags, | 2288 | size_t align, unsigned long flags, |
2289 | void (*ctor)(struct kmem_cache *, void *)) | 2289 | void (*ctor)(void *)) |
2290 | { | 2290 | { |
2291 | memset(s, 0, kmem_size); | 2291 | memset(s, 0, kmem_size); |
2292 | s->name = name; | 2292 | s->name = name; |
@@ -3042,7 +3042,7 @@ static int slab_unmergeable(struct kmem_cache *s) | |||
3042 | 3042 | ||
3043 | static struct kmem_cache *find_mergeable(size_t size, | 3043 | static struct kmem_cache *find_mergeable(size_t size, |
3044 | size_t align, unsigned long flags, const char *name, | 3044 | size_t align, unsigned long flags, const char *name, |
3045 | void (*ctor)(struct kmem_cache *, void *)) | 3045 | void (*ctor)(void *)) |
3046 | { | 3046 | { |
3047 | struct kmem_cache *s; | 3047 | struct kmem_cache *s; |
3048 | 3048 | ||
@@ -3082,8 +3082,7 @@ static struct kmem_cache *find_mergeable(size_t size, | |||
3082 | } | 3082 | } |
3083 | 3083 | ||
3084 | struct kmem_cache *kmem_cache_create(const char *name, size_t size, | 3084 | struct kmem_cache *kmem_cache_create(const char *name, size_t size, |
3085 | size_t align, unsigned long flags, | 3085 | size_t align, unsigned long flags, void (*ctor)(void *)) |
3086 | void (*ctor)(struct kmem_cache *, void *)) | ||
3087 | { | 3086 | { |
3088 | struct kmem_cache *s; | 3087 | struct kmem_cache *s; |
3089 | 3088 | ||