mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 03:30:53 +07:00
cbb79694d5
The slab aliasing logic causes some strange contortions in slub. So add a call to deal with aliases to slab_common.c but disable it for other slab allocators by providng stubs that fail to create aliases. Full general support for aliases will require additional cleanup passes and more standardization of fields in kmem_cache. Signed-off-by: Christoph Lameter <cl@linux.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
52 lines
1.6 KiB
C
52 lines
1.6 KiB
C
#ifndef MM_SLAB_H
|
|
#define MM_SLAB_H
|
|
/*
|
|
* Internal slab definitions
|
|
*/
|
|
|
|
/*
|
|
* State of the slab allocator.
|
|
*
|
|
* This is used to describe the states of the allocator during bootup.
|
|
* Allocators use this to gradually bootstrap themselves. Most allocators
|
|
* have the problem that the structures used for managing slab caches are
|
|
* allocated from slab caches themselves.
|
|
*/
|
|
enum slab_state {
|
|
DOWN, /* No slab functionality yet */
|
|
PARTIAL, /* SLUB: kmem_cache_node available */
|
|
PARTIAL_ARRAYCACHE, /* SLAB: kmalloc size for arraycache available */
|
|
PARTIAL_L3, /* SLAB: kmalloc size for l3 struct available */
|
|
UP, /* Slab caches usable but not all extras yet */
|
|
FULL /* Everything is working */
|
|
};
|
|
|
|
extern enum slab_state slab_state;
|
|
|
|
/* The slab cache mutex protects the management structures during changes */
|
|
extern struct mutex slab_mutex;
|
|
|
|
/* The list of all slab caches on the system */
|
|
extern struct list_head slab_caches;
|
|
|
|
/* The slab cache that manages slab cache information */
|
|
extern struct kmem_cache *kmem_cache;
|
|
|
|
/* Functions provided by the slab allocators */
|
|
struct kmem_cache *__kmem_cache_create(const char *name, size_t size,
|
|
size_t align, unsigned long flags, void (*ctor)(void *));
|
|
|
|
#ifdef CONFIG_SLUB
|
|
struct kmem_cache *__kmem_cache_alias(const char *name, size_t size,
|
|
size_t align, unsigned long flags, void (*ctor)(void *));
|
|
#else
|
|
static inline struct kmem_cache *__kmem_cache_alias(const char *name, size_t size,
|
|
size_t align, unsigned long flags, void (*ctor)(void *))
|
|
{ return NULL; }
|
|
#endif
|
|
|
|
|
|
int __kmem_cache_shutdown(struct kmem_cache *);
|
|
|
|
#endif
|