On Tue, Jan 16, 2018 at 12:17:01PM -0600, Christopher Lameter wrote: > Draft patch of how the data structs could change. kmem_cache_attr is read > only. Looks good. Although I would add Kees' user feature: struct kmem_cache_attr { char name[16]; unsigned int size; unsigned int align; + unsigned int useroffset; + unsigned int usersize; slab_flags_t flags; kmem_cache_ctor ctor; } And I'd start with +struct kmem_cache *kmem_cache_create_attr(const kmem_cache_attr *); leaving the old kmem_cache_create to kmalloc a kmem_cache_attr and initialise it. Can we also do something like this? -#define KMEM_CACHE(__struct, __flags) kmem_cache_create(#__struct,\ - sizeof(struct __struct), __alignof__(struct __struct),\ - (__flags), NULL) +#define KMEM_CACHE(__struct, __flags) ({ \ + const struct kmem_cache_attr kca ## __stringify(__struct) = { \ + .name = #__struct, \ + .size = sizeof(struct __struct), \ + .align = __alignof__(struct __struct), \ + .flags = (__flags), \ + }; \ + kmem_cache_create_attr(&kca ## __stringify(__struct)); \ +}) That way we won't need to convert any of those users.