cleanup: include/: move misc/mempool.h to sys/mempool.h
move misc/mempool.h to sys/mempool.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 <anas.nashif@intel.com>
This commit is contained in:
parent
1ed300b318
commit
08ee8b09ba
7 changed files with 113 additions and 98 deletions
|
@ -1,101 +1,15 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 Intel Corporation
|
* Copyright (c) 2019 Intel Corporation
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ZEPHYR_INCLUDE_MISC_MEMPOOL_H_
|
#ifndef ZEPHYR_INCLUDE_MISC_MEMPOOL_H_
|
||||||
#define ZEPHYR_INCLUDE_MISC_MEMPOOL_H_
|
#define ZEPHYR_INCLUDE_MISC_MEMPOOL_H_
|
||||||
|
|
||||||
#include <kernel.h>
|
#ifndef CONFIG_COMPAT_INCLUDES
|
||||||
#include <sys/mempool_base.h>
|
#warning "This header file has moved, include <sys/mempool.h> instead."
|
||||||
#include <misc/mutex.h>
|
|
||||||
|
|
||||||
struct sys_mem_pool {
|
|
||||||
struct sys_mem_pool_base base;
|
|
||||||
struct sys_mutex mutex;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct sys_mem_pool_block {
|
|
||||||
struct sys_mem_pool *pool;
|
|
||||||
u32_t level : 4;
|
|
||||||
u32_t block : 28;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Statically define system memory pool
|
|
||||||
*
|
|
||||||
* The memory pool's buffer contains @a n_max blocks that are @a max_size bytes
|
|
||||||
* long. The memory pool allows blocks to be repeatedly partitioned into
|
|
||||||
* quarters, down to blocks of @a min_size bytes long. The buffer is aligned
|
|
||||||
* to a @a align -byte boundary.
|
|
||||||
*
|
|
||||||
* If the pool is to be accessed outside the module where it is defined, it
|
|
||||||
* can be declared via
|
|
||||||
*
|
|
||||||
* @code extern struct sys_mem_pool <name>; @endcode
|
|
||||||
*
|
|
||||||
* This pool will not be in an initialized state. You will still need to
|
|
||||||
* run sys_mem_pool_init() on it before using any other APIs.
|
|
||||||
*
|
|
||||||
* @param name Name of the memory pool.
|
|
||||||
* @param ignored ignored, any value
|
|
||||||
* @param minsz Size of the smallest blocks in the pool (in bytes).
|
|
||||||
* @param maxsz Size of the largest blocks in the pool (in bytes).
|
|
||||||
* @param nmax Number of maximum sized blocks in the pool.
|
|
||||||
* @param align Alignment of the pool's buffer (power of 2).
|
|
||||||
* @param section Destination binary section for pool data
|
|
||||||
*/
|
|
||||||
#define SYS_MEM_POOL_DEFINE(name, ignored, minsz, maxsz, nmax, align, section) \
|
|
||||||
char __aligned(align) Z_GENERIC_SECTION(section) \
|
|
||||||
_mpool_buf_##name[_ALIGN4(maxsz) * nmax \
|
|
||||||
+ _MPOOL_BITS_SIZE(maxsz, minsz, nmax)]; \
|
|
||||||
struct sys_mem_pool_lvl Z_GENERIC_SECTION(section) \
|
|
||||||
_mpool_lvls_##name[Z_MPOOL_LVLS(maxsz, minsz)]; \
|
|
||||||
Z_GENERIC_SECTION(section) struct sys_mem_pool name = { \
|
|
||||||
.base = { \
|
|
||||||
.buf = _mpool_buf_##name, \
|
|
||||||
.max_sz = _ALIGN4(maxsz), \
|
|
||||||
.n_max = nmax, \
|
|
||||||
.n_levels = Z_MPOOL_LVLS(maxsz, minsz), \
|
|
||||||
.levels = _mpool_lvls_##name, \
|
|
||||||
.flags = SYS_MEM_POOL_USER \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Initialize a memory pool
|
|
||||||
*
|
|
||||||
* This is intended to complete initialization of memory pools that have been
|
|
||||||
* declared with SYS_MEM_POOL_DEFINE().
|
|
||||||
*
|
|
||||||
* @param p Memory pool to initialize
|
|
||||||
*/
|
|
||||||
static inline void sys_mem_pool_init(struct sys_mem_pool *p)
|
|
||||||
{
|
|
||||||
z_sys_mem_pool_base_init(&p->base);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Allocate a block of memory
|
|
||||||
*
|
|
||||||
* Allocate a chunk of memory from a memory pool. This cannot be called from
|
|
||||||
* interrupt context.
|
|
||||||
*
|
|
||||||
* @param p Address of the memory pool
|
|
||||||
* @param size Requested size of the memory block
|
|
||||||
* @return A pointer to the requested memory, or NULL if none is available
|
|
||||||
*/
|
|
||||||
void *sys_mem_pool_alloc(struct sys_mem_pool *p, size_t size);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Free memory allocated from a memory pool
|
|
||||||
*
|
|
||||||
* Free memory previously allocated by sys_mem_pool_alloc().
|
|
||||||
* It is safe to pass NULL to this function, in which case it is a no-op.
|
|
||||||
*
|
|
||||||
* @param ptr Pointer to previously allocated memory
|
|
||||||
*/
|
|
||||||
void sys_mem_pool_free(void *ptr);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <sys/mempool.h>
|
||||||
|
|
||||||
|
#endif /* ZEPHYR_INCLUDE_MISC_MEMPOOL_H_ */
|
||||||
|
|
101
include/sys/mempool.h
Normal file
101
include/sys/mempool.h
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ZEPHYR_INCLUDE_SYS_MEMPOOL_H_
|
||||||
|
#define ZEPHYR_INCLUDE_SYS_MEMPOOL_H_
|
||||||
|
|
||||||
|
#include <kernel.h>
|
||||||
|
#include <sys/mempool_base.h>
|
||||||
|
#include <misc/mutex.h>
|
||||||
|
|
||||||
|
struct sys_mem_pool {
|
||||||
|
struct sys_mem_pool_base base;
|
||||||
|
struct sys_mutex mutex;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sys_mem_pool_block {
|
||||||
|
struct sys_mem_pool *pool;
|
||||||
|
u32_t level : 4;
|
||||||
|
u32_t block : 28;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Statically define system memory pool
|
||||||
|
*
|
||||||
|
* The memory pool's buffer contains @a n_max blocks that are @a max_size bytes
|
||||||
|
* long. The memory pool allows blocks to be repeatedly partitioned into
|
||||||
|
* quarters, down to blocks of @a min_size bytes long. The buffer is aligned
|
||||||
|
* to a @a align -byte boundary.
|
||||||
|
*
|
||||||
|
* If the pool is to be accessed outside the module where it is defined, it
|
||||||
|
* can be declared via
|
||||||
|
*
|
||||||
|
* @code extern struct sys_mem_pool <name>; @endcode
|
||||||
|
*
|
||||||
|
* This pool will not be in an initialized state. You will still need to
|
||||||
|
* run sys_mem_pool_init() on it before using any other APIs.
|
||||||
|
*
|
||||||
|
* @param name Name of the memory pool.
|
||||||
|
* @param ignored ignored, any value
|
||||||
|
* @param minsz Size of the smallest blocks in the pool (in bytes).
|
||||||
|
* @param maxsz Size of the largest blocks in the pool (in bytes).
|
||||||
|
* @param nmax Number of maximum sized blocks in the pool.
|
||||||
|
* @param align Alignment of the pool's buffer (power of 2).
|
||||||
|
* @param section Destination binary section for pool data
|
||||||
|
*/
|
||||||
|
#define SYS_MEM_POOL_DEFINE(name, ignored, minsz, maxsz, nmax, align, section) \
|
||||||
|
char __aligned(align) Z_GENERIC_SECTION(section) \
|
||||||
|
_mpool_buf_##name[_ALIGN4(maxsz) * nmax \
|
||||||
|
+ _MPOOL_BITS_SIZE(maxsz, minsz, nmax)]; \
|
||||||
|
struct sys_mem_pool_lvl Z_GENERIC_SECTION(section) \
|
||||||
|
_mpool_lvls_##name[Z_MPOOL_LVLS(maxsz, minsz)]; \
|
||||||
|
Z_GENERIC_SECTION(section) struct sys_mem_pool name = { \
|
||||||
|
.base = { \
|
||||||
|
.buf = _mpool_buf_##name, \
|
||||||
|
.max_sz = _ALIGN4(maxsz), \
|
||||||
|
.n_max = nmax, \
|
||||||
|
.n_levels = Z_MPOOL_LVLS(maxsz, minsz), \
|
||||||
|
.levels = _mpool_lvls_##name, \
|
||||||
|
.flags = SYS_MEM_POOL_USER \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initialize a memory pool
|
||||||
|
*
|
||||||
|
* This is intended to complete initialization of memory pools that have been
|
||||||
|
* declared with SYS_MEM_POOL_DEFINE().
|
||||||
|
*
|
||||||
|
* @param p Memory pool to initialize
|
||||||
|
*/
|
||||||
|
static inline void sys_mem_pool_init(struct sys_mem_pool *p)
|
||||||
|
{
|
||||||
|
z_sys_mem_pool_base_init(&p->base);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Allocate a block of memory
|
||||||
|
*
|
||||||
|
* Allocate a chunk of memory from a memory pool. This cannot be called from
|
||||||
|
* interrupt context.
|
||||||
|
*
|
||||||
|
* @param p Address of the memory pool
|
||||||
|
* @param size Requested size of the memory block
|
||||||
|
* @return A pointer to the requested memory, or NULL if none is available
|
||||||
|
*/
|
||||||
|
void *sys_mem_pool_alloc(struct sys_mem_pool *p, size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Free memory allocated from a memory pool
|
||||||
|
*
|
||||||
|
* Free memory previously allocated by sys_mem_pool_alloc().
|
||||||
|
* It is safe to pass NULL to this function, in which case it is a no-op.
|
||||||
|
*
|
||||||
|
* @param ptr Pointer to previously allocated memory
|
||||||
|
*/
|
||||||
|
void sys_mem_pool_free(void *ptr);
|
||||||
|
|
||||||
|
#endif
|
|
@ -7,7 +7,7 @@
|
||||||
#include "lvgl_mem.h"
|
#include "lvgl_mem.h"
|
||||||
#include <zephyr.h>
|
#include <zephyr.h>
|
||||||
#include <init.h>
|
#include <init.h>
|
||||||
#include <misc/mempool.h>
|
#include <sys/mempool.h>
|
||||||
|
|
||||||
K_MEM_POOL_DEFINE(lvgl_mem_pool,
|
K_MEM_POOL_DEFINE(lvgl_mem_pool,
|
||||||
CONFIG_LVGL_MEM_POOL_MIN_SIZE,
|
CONFIG_LVGL_MEM_POOL_MIN_SIZE,
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include "lvgl_mem.h"
|
#include "lvgl_mem.h"
|
||||||
#include <zephyr.h>
|
#include <zephyr.h>
|
||||||
#include <init.h>
|
#include <init.h>
|
||||||
#include <misc/mempool.h>
|
#include <sys/mempool.h>
|
||||||
|
|
||||||
SYS_MEM_POOL_DEFINE(lvgl_mem_pool, NULL,
|
SYS_MEM_POOL_DEFINE(lvgl_mem_pool, NULL,
|
||||||
CONFIG_LVGL_MEM_POOL_MIN_SIZE,
|
CONFIG_LVGL_MEM_POOL_MIN_SIZE,
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include <init.h>
|
#include <init.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/math_extras.h>
|
#include <sys/math_extras.h>
|
||||||
#include <misc/mempool.h>
|
#include <sys/mempool.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <app_memory/app_memdomain.h>
|
#include <app_memory/app_memdomain.h>
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/__assert.h>
|
#include <sys/__assert.h>
|
||||||
#include <sys/mempool_base.h>
|
#include <sys/mempool_base.h>
|
||||||
#include <misc/mempool.h>
|
#include <sys/mempool.h>
|
||||||
|
|
||||||
#ifdef CONFIG_MISRA_SANE
|
#ifdef CONFIG_MISRA_SANE
|
||||||
#define LVL_ARRAY_SZ(n) (8 * sizeof(void *) / 2)
|
#define LVL_ARRAY_SZ(n) (8 * sizeof(void *) / 2)
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ztest.h>
|
#include <ztest.h>
|
||||||
#include <misc/mempool.h>
|
#include <sys/mempool.h>
|
||||||
|
|
||||||
|
|
||||||
#define BLK_SIZE_MIN 256
|
#define BLK_SIZE_MIN 256
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue