From 1ed300b3183f6955ddfd0cf6d99f5b888f74ea90 Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Wed, 26 Jun 2019 10:33:46 -0400 Subject: [PATCH] cleanup: include/: move misc/mempool_base.h to sys/mempool_base.h move misc/mempool_base.h to sys/mempool_base.h and create a shim for backward-compatibility. No functional changes to the headers. A warning in the shim can be controlled with CONFIG_COMPAT_INCLUDES. Related to #16539 Signed-off-by: Anas Nashif --- include/kernel_includes.h | 2 +- include/misc/mempool.h | 2 +- include/misc/mempool_base.h | 107 +---------------- include/sys/mempool_base.h | 112 ++++++++++++++++++ lib/os/mempool.c | 2 +- .../controller/ll_sw/nordic/hal/nrf5/cntr.c | 2 +- .../controller/ll_sw/nordic/hal/nrf5/ecb.c | 2 +- .../ll_sw/nordic/hal/nrf5/radio/radio.c | 2 +- .../controller/ll_sw/nordic/hal/nrf5/ticker.c | 2 +- 9 files changed, 124 insertions(+), 109 deletions(-) create mode 100644 include/sys/mempool_base.h diff --git a/include/kernel_includes.h b/include/kernel_includes.h index 100f2f59497..5829b6b2812 100644 --- a/include/kernel_includes.h +++ b/include/kernel_includes.h @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/misc/mempool.h b/include/misc/mempool.h index b56088e797d..1cdf7a0c85e 100644 --- a/include/misc/mempool.h +++ b/include/misc/mempool.h @@ -8,7 +8,7 @@ #define ZEPHYR_INCLUDE_MISC_MEMPOOL_H_ #include -#include +#include #include struct sys_mem_pool { diff --git a/include/misc/mempool_base.h b/include/misc/mempool_base.h index 127cb2e22ba..b89af2c7b7f 100644 --- a/include/misc/mempool_base.h +++ b/include/misc/mempool_base.h @@ -1,112 +1,15 @@ /* - * Copyright (c) 2018 Intel Corporation + * Copyright (c) 2019 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ - #ifndef ZEPHYR_INCLUDE_MISC_MEMPOOL_BASE_H_ #define ZEPHYR_INCLUDE_MISC_MEMPOOL_BASE_H_ -#include -#include +#ifndef CONFIG_COMPAT_INCLUDES +#warning "This header file has moved, include instead." +#endif -/* - * Definitions and macros used by both the IRQ-safe k_mem_pool and user-mode - * compatible sys_mem_pool implementations - */ - -struct sys_mem_pool_lvl { - union { - u32_t *bits_p; - u32_t bits; - }; - sys_dlist_t free_list; -}; - -#define SYS_MEM_POOL_KERNEL BIT(0) -#define SYS_MEM_POOL_USER BIT(1) - -struct sys_mem_pool_base { - void *buf; - size_t max_sz; - u16_t n_max; - u8_t n_levels; - s8_t max_inline_level; - struct sys_mem_pool_lvl *levels; - u8_t flags; -}; - -#define _ALIGN4(n) ((((n)+3)/4)*4) - -#define Z_MPOOL_HAVE_LVL(maxsz, minsz, l) (((maxsz) >> (2*(l))) \ - >= (minsz) ? 1 : 0) - -#define __MPOOL_LVLS(maxsz, minsz) \ - (Z_MPOOL_HAVE_LVL((maxsz), (minsz), 0) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 1) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 2) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 3) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 4) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 5) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 6) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 7) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 8) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 9) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 10) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 11) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 12) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 13) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 14) + \ - Z_MPOOL_HAVE_LVL((maxsz), (minsz), 15)) - -#define _MPOOL_MINBLK sizeof(sys_dnode_t) - -#define Z_MPOOL_LVLS(maxsz, minsz) \ - __MPOOL_LVLS((maxsz), (minsz) >= _MPOOL_MINBLK ? (minsz) : \ - _MPOOL_MINBLK) - -/* Rounds the needed bits up to integer multiples of u32_t */ -#define Z_MPOOL_LBIT_WORDS_UNCLAMPED(n_max, l) \ - ((((n_max) << (2*(l))) + 31) / 32) - -/* One word gets stored free unioned with the pointer, otherwise the - * calculated unclamped value - */ -#define Z_MPOOL_LBIT_WORDS(n_max, l) \ - (Z_MPOOL_LBIT_WORDS_UNCLAMPED(n_max, l) < 2 ? 0 \ - : Z_MPOOL_LBIT_WORDS_UNCLAMPED(n_max, l)) - -/* How many bytes for the bitfields of a single level? */ -#define Z_MPOOL_LBIT_BYTES(maxsz, minsz, l, n_max) \ - (Z_MPOOL_LVLS((maxsz), (minsz)) > (l) ? \ - 4 * Z_MPOOL_LBIT_WORDS((n_max), l) : 0) - -/* Size of the bitmap array that follows the buffer in allocated memory */ -#define _MPOOL_BITS_SIZE(maxsz, minsz, n_max) \ - (Z_MPOOL_LBIT_BYTES(maxsz, minsz, 0, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 1, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 2, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 3, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 4, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 5, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 6, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 7, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 8, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 9, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 10, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 11, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 12, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 13, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 14, n_max) + \ - Z_MPOOL_LBIT_BYTES(maxsz, minsz, 15, n_max)) - - -void z_sys_mem_pool_base_init(struct sys_mem_pool_base *p); - -int z_sys_mem_pool_block_alloc(struct sys_mem_pool_base *p, size_t size, - u32_t *level_p, u32_t *block_p, void **data_p); - -void z_sys_mem_pool_block_free(struct sys_mem_pool_base *p, u32_t level, - u32_t block); +#include #endif /* ZEPHYR_INCLUDE_MISC_MEMPOOL_BASE_H_ */ diff --git a/include/sys/mempool_base.h b/include/sys/mempool_base.h new file mode 100644 index 00000000000..66e27a7190d --- /dev/null +++ b/include/sys/mempool_base.h @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2018 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_SYS_MEMPOOL_BASE_H_ +#define ZEPHYR_INCLUDE_SYS_MEMPOOL_BASE_H_ + +#include +#include + +/* + * Definitions and macros used by both the IRQ-safe k_mem_pool and user-mode + * compatible sys_mem_pool implementations + */ + +struct sys_mem_pool_lvl { + union { + u32_t *bits_p; + u32_t bits; + }; + sys_dlist_t free_list; +}; + +#define SYS_MEM_POOL_KERNEL BIT(0) +#define SYS_MEM_POOL_USER BIT(1) + +struct sys_mem_pool_base { + void *buf; + size_t max_sz; + u16_t n_max; + u8_t n_levels; + s8_t max_inline_level; + struct sys_mem_pool_lvl *levels; + u8_t flags; +}; + +#define _ALIGN4(n) ((((n)+3)/4)*4) + +#define Z_MPOOL_HAVE_LVL(maxsz, minsz, l) (((maxsz) >> (2*(l))) \ + >= (minsz) ? 1 : 0) + +#define __MPOOL_LVLS(maxsz, minsz) \ + (Z_MPOOL_HAVE_LVL((maxsz), (minsz), 0) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 1) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 2) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 3) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 4) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 5) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 6) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 7) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 8) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 9) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 10) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 11) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 12) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 13) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 14) + \ + Z_MPOOL_HAVE_LVL((maxsz), (minsz), 15)) + +#define _MPOOL_MINBLK sizeof(sys_dnode_t) + +#define Z_MPOOL_LVLS(maxsz, minsz) \ + __MPOOL_LVLS((maxsz), (minsz) >= _MPOOL_MINBLK ? (minsz) : \ + _MPOOL_MINBLK) + +/* Rounds the needed bits up to integer multiples of u32_t */ +#define Z_MPOOL_LBIT_WORDS_UNCLAMPED(n_max, l) \ + ((((n_max) << (2*(l))) + 31) / 32) + +/* One word gets stored free unioned with the pointer, otherwise the + * calculated unclamped value + */ +#define Z_MPOOL_LBIT_WORDS(n_max, l) \ + (Z_MPOOL_LBIT_WORDS_UNCLAMPED(n_max, l) < 2 ? 0 \ + : Z_MPOOL_LBIT_WORDS_UNCLAMPED(n_max, l)) + +/* How many bytes for the bitfields of a single level? */ +#define Z_MPOOL_LBIT_BYTES(maxsz, minsz, l, n_max) \ + (Z_MPOOL_LVLS((maxsz), (minsz)) > (l) ? \ + 4 * Z_MPOOL_LBIT_WORDS((n_max), l) : 0) + +/* Size of the bitmap array that follows the buffer in allocated memory */ +#define _MPOOL_BITS_SIZE(maxsz, minsz, n_max) \ + (Z_MPOOL_LBIT_BYTES(maxsz, minsz, 0, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 1, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 2, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 3, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 4, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 5, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 6, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 7, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 8, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 9, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 10, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 11, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 12, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 13, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 14, n_max) + \ + Z_MPOOL_LBIT_BYTES(maxsz, minsz, 15, n_max)) + + +void z_sys_mem_pool_base_init(struct sys_mem_pool_base *p); + +int z_sys_mem_pool_block_alloc(struct sys_mem_pool_base *p, size_t size, + u32_t *level_p, u32_t *block_p, void **data_p); + +void z_sys_mem_pool_block_free(struct sys_mem_pool_base *p, u32_t level, + u32_t block); + +#endif /* ZEPHYR_INCLUDE_SYS_MEMPOOL_BASE_H_ */ diff --git a/lib/os/mempool.c b/lib/os/mempool.c index 5d0ed004be9..b5fa816fdaf 100644 --- a/lib/os/mempool.c +++ b/lib/os/mempool.c @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #ifdef CONFIG_MISRA_SANE diff --git a/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/cntr.c b/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/cntr.c index 28868d5e4c9..3873c8375db 100644 --- a/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/cntr.c +++ b/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/cntr.c @@ -6,7 +6,7 @@ */ #include -#include +#include #include "hal/cntr.h" diff --git a/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/ecb.c b/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/ecb.c index f8ecba13afb..31f9d9394c7 100644 --- a/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/ecb.c +++ b/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/ecb.c @@ -8,7 +8,7 @@ #include #include -#include +#include #include "util/mem.h" #include "hal/ecb.h" diff --git a/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.c b/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.c index 881a98e65bb..abbe9835282 100644 --- a/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.c +++ b/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.c @@ -6,7 +6,7 @@ */ #include -#include +#include #include #include "util/mem.h" diff --git a/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/ticker.c b/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/ticker.c index 7037f49c1d6..97d48fe5a0a 100644 --- a/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/ticker.c +++ b/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/ticker.c @@ -7,7 +7,7 @@ #include #include -#include +#include #include "hal/cntr.h"