slab: move struct kmem_cache to headers
PATCH 4/13 slab: move struct kmem_cache to headers
Quoted 1 line
From
c418354ad71e10cfd6abc78328d643c1699c7998Mon Sep 17 00:00:00 2001
From: Pekka Enberg <[email protected]>
Date: Fri, 9 May 2008 20:32:44 +0200
Subject: [PATCH 04/13] slab: move struct kmem_cache to headers
Move the SLAB struct kmem_cache definition to <linux/slab_def.h> like with SLUB so kmemcheck can access ->ctor and ->flags.
Cc Ingo Molnar <[email protected]>
Cc Christoph Lameter <[email protected]>
Cc Andrew Morton <[email protected]>
Signed-off-by Pekka Enberg <[email protected]>
Signed-off-by Vegard Nossum <[email protected]>
--- include/linux/slab_def.h | 81 ++++++++++++++++++++++++++++++++++++++++++++++ mm/slab.c | 81 ---------------------------------------------- 2 files changed, 81 insertions(+), 81 deletions(-)
include/linux/slab_def.h +81 -0
@@ -15,6 +15,87 @@#include <asm/cache.h> /* kmalloc_sizes.h needs L1_CACHE_BYTES */ #include <linux/compiler.h> +/* +* struct kmem_cache +* +* manages a cache. +*/ + +struct kmem_cache { +/* 1) per-cpu data, touched during every alloc/free */ +struct array_cache *array[NR_CPUS ]; +/* 2) Cache tunables. Protected by cache_chain_mutex */ +unsigned int batchcount; +unsigned int limit; +unsigned int shared; + +unsigned int buffer_size; +u32 reciprocal_buffer_size; +/* 3) touched by every alloc & free from the backend */ + +unsigned int flags;/* constant flags */ +unsigned int num;/* # of objs per slab */ + +/* 4) cache_grow/shrink */ +/* order of pgs per slab (2^n) */ +unsigned int gfporder; + +/* force GFP flags, e.g. GFP_DMA */ +gfp_t gfpflags; + +size_t colour;/* cache colouring range */ +unsigned int colour_off;/* colour offset */ +struct kmem_cache *slabp_cache; +unsigned int slab_size; +unsigned int dflags;/* dynamic flags */ + +/* constructor func */ +void (*ctor)(struct kmem_cache *,void *); + +/* 5) cache creation/removal */ +const char *name; +struct list_head next; + +/* 6) statistics */ +#ifdef CONFIG_DEBUG_SLAB +unsigned long num_active; +unsigned long num_allocations; +unsigned long high_mark; +unsigned long grown; +unsigned long reaped; +unsigned long errors; +unsigned long max_freeable; +unsigned long node_allocs; +unsigned long node_frees; +unsigned long node_overflow; +atomic_t allochit; +atomic_t allocmiss; +atomic_t freehit; +atomic_t freemiss; + +/* +* If debugging is enabled, then the allocator can add additional +* fields and/or padding to every object. buffer_size contains the total +* object size including these internal fields, the following two +* variables contain the offset to the user object and its size. +*/ +int obj_offset; +int obj_size; +#endif /* CONFIG_DEBUG_SLAB */ + +/* +* We put nodelists[] at the end of kmem_cache, because we want to size +* this array to nr_node_ids slots instead of MAX_NUMNODES +* (see kmem_cache_init()) +* We still use [MAX_NUMNODES] and not [1] or [0] because cache_cache +* is statically defined, so we reserve the max number of nodes. +*/ +struct kmem_list3 *nodelists[MAX_NUMNODES ]; +/* +* Do not add fields after nodelists[] +*/ +}; +/* Size description struct for general caches. */ struct cache_sizes {size_t cs_size;
mm/slab.c +0 -81
87 lines not on this page · raw message
Signature · 1 line
1.5.5.1