mempool: make alignment/rounding 64-bit compatible
Minimum alignment and rounding must be done on a word boundary. Let's replace _ALIGN4() with WB_UP() which is equivalent on 32-bit targets, and 64-bit aware. Also enforce a minimal alignment on the memory pool. This is making a difference mostly on64-bit targets where the widely used 4-byte alignment is not sufficient. The _ALIGN4() macro has no users left so it is removed. Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
This commit is contained in:
parent
d62e229680
commit
cf974371fb
5 changed files with 9 additions and 11 deletions
|
@ -4159,13 +4159,13 @@ struct k_mem_pool {
|
|||
* @req K-MPOOL-001
|
||||
*/
|
||||
#define K_MEM_POOL_DEFINE(name, minsz, maxsz, nmax, align) \
|
||||
char __aligned(align) _mpool_buf_##name[_ALIGN4(maxsz) * nmax \
|
||||
char __aligned(WB_UP(align)) _mpool_buf_##name[WB_UP(maxsz) * nmax \
|
||||
+ _MPOOL_BITS_SIZE(maxsz, minsz, nmax)]; \
|
||||
struct sys_mem_pool_lvl _mpool_lvls_##name[Z_MPOOL_LVLS(maxsz, minsz)]; \
|
||||
Z_STRUCT_SECTION_ITERABLE(k_mem_pool, name) = { \
|
||||
.base = { \
|
||||
.buf = _mpool_buf_##name, \
|
||||
.max_sz = _ALIGN4(maxsz), \
|
||||
.max_sz = WB_UP(maxsz), \
|
||||
.n_max = nmax, \
|
||||
.n_levels = Z_MPOOL_LVLS(maxsz, minsz), \
|
||||
.levels = _mpool_lvls_##name, \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue