13#ifndef ZEPHYR_INCLUDE_SYS_MEM_BLOCKS_H_ 
   14#define ZEPHYR_INCLUDE_SYS_MEM_BLOCKS_H_ 
   28#define MAX_MULTI_ALLOCATORS 8 
   44struct sys_multi_mem_blocks;
 
   79        (
struct sys_multi_mem_blocks *group, 
void *cfg);
 
   85struct sys_mem_blocks {
 
   98#ifdef CONFIG_SYS_MEM_BLOCKS_RUNTIME_STATS 
  108struct sys_multi_mem_blocks {
 
  124#define _SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF(name, blk_sz, num_blks, buf, mbmod) \ 
  125        _SYS_BITARRAY_DEFINE(_sys_mem_blocks_bitmap_##name,             \ 
  127        mbmod sys_mem_blocks_t name = {                                 \ 
  128                .num_blocks = num_blks,                                 \ 
  129                .blk_sz_shift = ilog2(blk_sz),                          \ 
  131                .bitmap = &_sys_mem_blocks_bitmap_##name,               \ 
  143#define _SYS_MEM_BLOCKS_DEFINE(name, blk_sz, num_blks, balign, mbmod)   \ 
  144        mbmod uint8_t __noinit_named(sys_mem_blocks_buf_##name)         \ 
  145                __aligned(WB_UP(balign))                                \ 
  146                _sys_mem_blocks_buf_##name[num_blks * WB_UP(blk_sz)];   \ 
  147        _SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF(name, blk_sz, num_blks,     \ 
  148                                           _sys_mem_blocks_buf_##name,  \ 
  163#define SYS_MEM_BLOCKS_DEFINE(name, blk_sz, num_blks, buf_align) \ 
  164        _SYS_MEM_BLOCKS_DEFINE(name, blk_sz, num_blks, buf_align,) 
  174#define SYS_MEM_BLOCKS_DEFINE_STATIC(name, blk_sz, num_blks, buf_align) \ 
  175        _SYS_MEM_BLOCKS_DEFINE(name, blk_sz, num_blks, buf_align, static) 
  186#define SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF(name, blk_sz, num_blks, buf) \ 
  187        _SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF(name, blk_sz, num_blks, buf,) 
  197#define SYS_MEM_BLOCKS_DEFINE_STATIC_WITH_EXT_BUF(name, blk_sz, num_blks, buf) \ 
  198        _SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF(name, blk_sz, num_blks, buf, static) 
  298#ifdef CONFIG_SYS_MEM_BLOCKS_RUNTIME_STATS 
  374                               void *cfg, 
size_t count,
 
  394                              size_t count, 
void **in_blocks);
 
ZTEST_BMEM int count
Definition: main.c:33
 
void sys_multi_mem_blocks_add_allocator(sys_multi_mem_blocks_t *group, sys_mem_blocks_t *alloc)
Add an allocator to an allocator group.
 
int sys_mem_blocks_get(sys_mem_blocks_t *mem_block, void *in_block, size_t count)
Force allocation of a specified blocks in a memory block object.
 
sys_mem_blocks_t *(* sys_multi_mem_blocks_choice_fn_t)(struct sys_multi_mem_blocks *group, void *cfg)
Multi memory blocks allocator choice function.
Definition: mem_blocks.h:79
 
int sys_mem_blocks_free_contiguous(sys_mem_blocks_t *mem_block, void *block, size_t count)
Free contiguous multiple memory blocks.
 
int sys_mem_blocks_alloc(sys_mem_blocks_t *mem_block, size_t count, void **out_blocks)
Allocate multiple memory blocks.
 
int sys_mem_blocks_alloc_contiguous(sys_mem_blocks_t *mem_block, size_t count, void **out_block)
Allocate a contiguous set of memory blocks.
 
int sys_mem_blocks_is_region_free(sys_mem_blocks_t *mem_block, void *in_block, size_t count)
check if the region is free
 
int sys_multi_mem_blocks_free(sys_multi_mem_blocks_t *group, size_t count, void **in_blocks)
Free memory allocated from multi memory blocks allocator group.
 
struct sys_mem_blocks sys_mem_blocks_t
Memory Blocks Allocator.
Definition: mem_blocks.h:51
 
struct sys_multi_mem_blocks sys_multi_mem_blocks_t
Multi Memory Blocks Allocator.
Definition: mem_blocks.h:58
 
void sys_multi_mem_blocks_init(sys_multi_mem_blocks_t *group, sys_multi_mem_blocks_choice_fn_t choice_fn)
Initialize multi memory blocks allocator group.
 
int sys_mem_blocks_free(sys_mem_blocks_t *mem_block, size_t count, void **in_blocks)
Free multiple memory blocks.
 
int sys_multi_mem_blocks_alloc(sys_multi_mem_blocks_t *group, void *cfg, size_t count, void **out_blocks, size_t *blk_size)
Allocate memory from multi memory blocks allocator group.
 
Provide ilog2() function.
 
#define MAX_MULTI_ALLOCATORS
Definition: mem_blocks.h:28
 
static struct k_spinlock lock
Definition: spinlock_error_case.c:13
 
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
 
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
 
Kernel Spin Lock.
Definition: spinlock.h:43
 
Definition: test_pipe_contexts.c:43
 
Definition: bitarray.h:19
 
Definition: mem_stats.h:24
 
static ZTEST_BMEM char buffer[8]
Definition: test_mbox_api.c:551
 
void * block
Definition: test_threads_cancel_abort.c:108