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.

Reply via email to