// Create a slab cache kmem_cache_t * kmem_cache_create ( const char *name, size_t size, size_t align, unsigned long flags, void (* ctor) (void *, kmem_cache_t *, unsigned long), void (* dtor) (void *, kmem_cache_t *, unsigned long));
name - slab cache name for debugging
size - object size for this slab cache
align - optional object alignment
ctor - optional object constructor
dtor - optional object destructor
// Allocate and free slabs of the cache void *kmem_cache_alloc (kmem_cache_t *cachep, int flags); void kmem_cache_free (kmem_cache_t *cachep, void *objp);
SLAB_DEBUG_FREE - check correctness of free
SLAB_RED_ZONE - create red zone after objects
SLAB_POISON - fill free objects with poison data
SLAB_STORE_USER - remember return address to last object user
SLAB_CACHE_DMA - allocate memory for use with DMA
SLAB_HWCACHE_ALIGN - align objects on cache lines