You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.9 KiB
79 lines
1.9 KiB
#ifndef _LINUX_SLAB_DEF_H |
|
#define _LINUX_SLAB_DEF_H |
|
|
|
#include <linux/reciprocal_div.h> |
|
|
|
/* |
|
* Definitions unique to the original Linux SLAB allocator. |
|
*/ |
|
|
|
struct kmem_cache { |
|
struct array_cache __percpu *cpu_cache; |
|
|
|
/* 1) Cache tunables. Protected by slab_mutex */ |
|
unsigned int batchcount; |
|
unsigned int limit; |
|
unsigned int shared; |
|
|
|
unsigned int size; |
|
struct reciprocal_value reciprocal_buffer_size; |
|
/* 2) touched by every alloc & free from the backend */ |
|
|
|
unsigned int flags; /* constant flags */ |
|
unsigned int num; /* # of objs per slab */ |
|
|
|
/* 3) cache_grow/shrink */ |
|
/* order of pgs per slab (2^n) */ |
|
unsigned int gfporder; |
|
|
|
/* force GFP flags, e.g. GFP_DMA */ |
|
gfp_t allocflags; |
|
|
|
size_t colour; /* cache colouring range */ |
|
unsigned int colour_off; /* colour offset */ |
|
struct kmem_cache *freelist_cache; |
|
unsigned int freelist_size; |
|
|
|
/* constructor func */ |
|
void (*ctor)(void *obj); |
|
|
|
/* 4) cache creation/removal */ |
|
const char *name; |
|
struct list_head list; |
|
int refcount; |
|
int object_size; |
|
int align; |
|
|
|
/* 5) 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. 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; |
|
#endif /* CONFIG_DEBUG_SLAB */ |
|
#ifdef CONFIG_MEMCG_KMEM |
|
struct memcg_cache_params memcg_params; |
|
#endif |
|
|
|
struct kmem_cache_node *node[MAX_NUMNODES]; |
|
}; |
|
|
|
#endif /* _LINUX_SLAB_DEF_H */
|
|
|