Blame view
include/linux/slab_def.h
1.85 KB
2e892f43c
|
1 2 |
#ifndef _LINUX_SLAB_DEF_H #define _LINUX_SLAB_DEF_H |
809fa972f
|
3 |
#include <linux/reciprocal_div.h> |
2e892f43c
|
4 5 |
/* * Definitions unique to the original Linux SLAB allocator. |
8eae985f0
|
6 7 8 |
*/ struct kmem_cache { |
bf0dea23a
|
9 |
struct array_cache __percpu *cpu_cache; |
24755e2e3
|
10 |
/* 1) Cache tunables. Protected by slab_mutex */ |
8eae985f0
|
11 12 13 |
unsigned int batchcount; unsigned int limit; unsigned int shared; |
3b0efdfa1
|
14 |
unsigned int size; |
809fa972f
|
15 |
struct reciprocal_value reciprocal_buffer_size; |
b56efcf0a
|
16 |
/* 2) touched by every alloc & free from the backend */ |
8eae985f0
|
17 18 19 |
unsigned int flags; /* constant flags */ unsigned int num; /* # of objs per slab */ |
b56efcf0a
|
20 |
/* 3) cache_grow/shrink */ |
8eae985f0
|
21 22 23 24 |
/* order of pgs per slab (2^n) */ unsigned int gfporder; /* force GFP flags, e.g. GFP_DMA */ |
a618e89f1
|
25 |
gfp_t allocflags; |
8eae985f0
|
26 27 28 |
size_t colour; /* cache colouring range */ unsigned int colour_off; /* colour offset */ |
8456a648c
|
29 30 |
struct kmem_cache *freelist_cache; unsigned int freelist_size; |
8eae985f0
|
31 32 33 |
/* constructor func */ void (*ctor)(void *obj); |
b56efcf0a
|
34 |
/* 4) cache creation/removal */ |
8eae985f0
|
35 |
const char *name; |
3b0efdfa1
|
36 37 38 39 |
struct list_head list; int refcount; int object_size; int align; |
8eae985f0
|
40 |
|
b56efcf0a
|
41 |
/* 5) statistics */ |
8eae985f0
|
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
#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 |
3b0efdfa1
|
60 |
* fields and/or padding to every object. size contains the total |
8eae985f0
|
61 62 63 64 |
* object size including these internal fields, the following two * variables contain the offset to the user object and its size. */ int obj_offset; |
8eae985f0
|
65 |
#endif /* CONFIG_DEBUG_SLAB */ |
ba6c496ed
|
66 |
#ifdef CONFIG_MEMCG_KMEM |
f7ce3190c
|
67 |
struct memcg_cache_params memcg_params; |
ba6c496ed
|
68 |
#endif |
8eae985f0
|
69 |
|
bf0dea23a
|
70 |
struct kmem_cache_node *node[MAX_NUMNODES]; |
8eae985f0
|
71 |
}; |
2e892f43c
|
72 |
#endif /* _LINUX_SLAB_DEF_H */ |