On Tue, 16 Jan 2018, Matthew Wilcox wrote:
quoted
Sure this data is never changed. It can be const.
It's changed at initialisation. Look:
kmem_cache_create(const char *name, size_t size, size_t align,
slab_flags_t flags, void (*ctor)(void *))
s = create_cache(cache_name, size, size,
calculate_alignment(flags, align, size),
flags, ctor, NULL, NULL);
The 'align' that ends up in s->align, is not the user-specified align.
It's also dependent on runtime information (cache_line_size()), so it
can't be calculated at compile time.
Then we would need another align field in struct kmem_cache that takes the
changes value?
'flags' also gets mangled:
flags &= CACHE_CREATE_MASK;
Well ok then that also belongs into kmem_cache and the original value
stays in kmem_cache_attr.
unsigned int would be my preference.
Great.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>