| 
    Zephyr Project API
    3.3.0
    
   A Scalable Open Source RTOS 
   | 
 
Macros | |
| #define | SYS_MEM_BLOCKS_DEFINE(name, blk_sz, num_blks, buf_align) _SYS_MEM_BLOCKS_DEFINE(name, blk_sz, num_blks, buf_align,) | 
| Create a memory block object with a new backing buffer.  More... | |
| #define | SYS_MEM_BLOCKS_DEFINE_STATIC(name, blk_sz, num_blks, buf_align) _SYS_MEM_BLOCKS_DEFINE(name, blk_sz, num_blks, buf_align, static) | 
| Create a static memory block object with a new backing buffer.  More... | |
| #define | SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF(name, blk_sz, num_blks, buf) _SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF(name, blk_sz, num_blks, buf,) | 
| Create a memory block object with a providing backing buffer.  More... | |
| #define | SYS_MEM_BLOCKS_DEFINE_STATIC_WITH_EXT_BUF(name, blk_sz, num_blks, buf) _SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF(name, blk_sz, num_blks, buf, static) | 
| Create a static memory block object with a providing backing buffer.  More... | |
Typedefs | |
| typedef struct sys_mem_blocks | sys_mem_blocks_t | 
| Memory Blocks Allocator.  More... | |
| typedef struct sys_multi_mem_blocks | sys_multi_mem_blocks_t | 
| Multi Memory Blocks Allocator.  More... | |
| typedef 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.  More... | |
Functions | |
| int | sys_mem_blocks_alloc (sys_mem_blocks_t *mem_block, size_t count, void **out_blocks) | 
| Allocate multiple memory blocks.  More... | |
| 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.  More... | |
| 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.  More... | |
| 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  More... | |
| int | sys_mem_blocks_free (sys_mem_blocks_t *mem_block, size_t count, void **in_blocks) | 
| Free multiple memory blocks.  More... | |
| int | sys_mem_blocks_free_contiguous (sys_mem_blocks_t *mem_block, void *block, size_t count) | 
| Free contiguous multiple memory blocks.  More... | |
| 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.  More... | |
| 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.  More... | |
| 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.  More... | |
| 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.  More... | |
| #define SYS_MEM_BLOCKS_DEFINE | ( | name, | |
| blk_sz, | |||
| num_blks, | |||
| buf_align | |||
| ) | _SYS_MEM_BLOCKS_DEFINE(name, blk_sz, num_blks, buf_align,) | 
#include <include/zephyr/sys/mem_blocks.h>
Create a memory block object with a new backing buffer.
| name | Name of the memory block object. | 
| blk_sz | Size of each memory block (in bytes). | 
| num_blks | Total number of memory blocks. | 
| buf_align | Alignment of the memory block buffer (power of 2). | 
| #define SYS_MEM_BLOCKS_DEFINE_STATIC | ( | name, | |
| blk_sz, | |||
| num_blks, | |||
| buf_align | |||
| ) | _SYS_MEM_BLOCKS_DEFINE(name, blk_sz, num_blks, buf_align, static) | 
#include <include/zephyr/sys/mem_blocks.h>
Create a static memory block object with a new backing buffer.
| name | Name of the memory block object. | 
| blk_sz | Size of each memory block (in bytes). | 
| num_blks | Total number of memory blocks. | 
| buf_align | Alignment of the memory block buffer (power of 2). | 
| #define SYS_MEM_BLOCKS_DEFINE_STATIC_WITH_EXT_BUF | ( | name, | |
| blk_sz, | |||
| num_blks, | |||
| buf | |||
| ) | _SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF(name, blk_sz, num_blks, buf, static) | 
#include <include/zephyr/sys/mem_blocks.h>
Create a static memory block object with a providing backing buffer.
| name | Name of the memory block object. | 
| blk_sz | Size of each memory block (in bytes). | 
| num_blks | Total number of memory blocks. | 
| buf | Backing buffer of type uint8_t. | 
| #define SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF | ( | name, | |
| blk_sz, | |||
| num_blks, | |||
| buf | |||
| ) | _SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF(name, blk_sz, num_blks, buf,) | 
#include <include/zephyr/sys/mem_blocks.h>
Create a memory block object with a providing backing buffer.
| name | Name of the memory block object. | 
| blk_sz | Size of each memory block (in bytes). | 
| num_blks | Total number of memory blocks. | 
| buf | Backing buffer of type uint8_t. | 
#include <include/zephyr/sys/mem_blocks.h>
Memory Blocks Allocator.
| typedef sys_mem_blocks_t *(* sys_multi_mem_blocks_choice_fn_t) (struct sys_multi_mem_blocks *group, void *cfg) | 
#include <include/zephyr/sys/mem_blocks.h>
Multi memory blocks allocator choice function.
This is a user-provided functions whose responsibility is selecting a specific memory blocks allocator based on the opaque cfg value, which is specified by the user as an argument to sys_multi_mem_blocks_alloc(). The callback returns a pointer to the chosen allocator where the allocation is performed.
NULL may be returned, which will cause the allocation to fail and a -EINVAL reported to the calling code.
| group | Multi memory blocks allocator structure. | 
| cfg | An opaque user-provided value. It may be interpreted in any way by the application. | 
#include <include/zephyr/sys/mem_blocks.h>
Multi Memory Blocks Allocator.
| int sys_mem_blocks_alloc | ( | sys_mem_blocks_t * | mem_block, | 
| size_t | count, | ||
| void ** | out_blocks | ||
| ) | 
#include <include/zephyr/sys/mem_blocks.h>
Allocate multiple memory blocks.
Allocate multiple memory blocks, and place their pointers into the output array.
| [in] | mem_block | Pointer to memory block object. | 
| [in] | count | Number of blocks to allocate. | 
| [out] | out_blocks | Output array to be populated by pointers to the memory blocks. It must have at least count elements. | 
| 0 | Successful | 
| -EINVAL | Invalid argument supplied. | 
| -ENOMEM | Not enough blocks for allocation. | 
| int sys_mem_blocks_alloc_contiguous | ( | sys_mem_blocks_t * | mem_block, | 
| size_t | count, | ||
| void ** | out_block | ||
| ) | 
#include <include/zephyr/sys/mem_blocks.h>
Allocate a contiguous set of memory blocks.
Allocate multiple memory blocks, and place their pointers into the output array.
| [in] | mem_block | Pointer to memory block object. | 
| [in] | count | Number of blocks to allocate. | 
| [out] | out_block | Output pointer to the start of the allocated block set | 
| 0 | Successful | 
| -EINVAL | Invalid argument supplied. | 
| -ENOMEM | Not enough contiguous blocks for allocation. | 
| int sys_mem_blocks_free | ( | sys_mem_blocks_t * | mem_block, | 
| size_t | count, | ||
| void ** | in_blocks | ||
| ) | 
#include <include/zephyr/sys/mem_blocks.h>
Free multiple memory blocks.
Free multiple memory blocks according to the array of memory block pointers.
| [in] | mem_block | Pointer to memory block object. | 
| [in] | count | Number of blocks to free. | 
| [in] | in_blocks | Input array of pointers to the memory blocks. | 
| 0 | Successful | 
| -EINVAL | Invalid argument supplied. | 
| -EFAULT | Invalid pointers supplied. | 
| int sys_mem_blocks_free_contiguous | ( | sys_mem_blocks_t * | mem_block, | 
| void * | block, | ||
| size_t | count | ||
| ) | 
#include <include/zephyr/sys/mem_blocks.h>
Free contiguous multiple memory blocks.
Free contiguous multiple memory blocks
| [in] | mem_block | Pointer to memory block object. | 
| [in] | block | Pointer to the first memory block | 
| [in] | count | Number of blocks to free. | 
| 0 | Successful | 
| -EINVAL | Invalid argument supplied. | 
| -EFAULT | Invalid pointer supplied. | 
| int sys_mem_blocks_get | ( | sys_mem_blocks_t * | mem_block, | 
| void * | in_block, | ||
| size_t | count | ||
| ) | 
#include <include/zephyr/sys/mem_blocks.h>
Force allocation of a specified blocks in a memory block object.
Allocate a specified blocks in a memory block object. Note: use caution when mixing sys_mem_blocks_get and sys_mem_blocks_alloc, allocation may take any of the free memory space
| [in] | mem_block | Pointer to memory block object. | 
| [in] | in_block | Address of the first required block to allocate | 
| [in] | count | Number of blocks to allocate. | 
| 0 | Successful | 
| -EINVAL | Invalid argument supplied. | 
| -ENOMEM | Some of blocks are taken and cannot be allocated | 
| int sys_mem_blocks_is_region_free | ( | sys_mem_blocks_t * | mem_block, | 
| void * | in_block, | ||
| size_t | count | ||
| ) | 
#include <include/zephyr/sys/mem_blocks.h>
check if the region is free
| [in] | mem_block | Pointer to memory block object. | 
| [in] | in_block | Address of the first block to check | 
| [in] | count | Number of blocks to check. | 
| 1 | All memory blocks are free | 
| 0 | At least one of the memory blocks is taken | 
| void sys_multi_mem_blocks_add_allocator | ( | sys_multi_mem_blocks_t * | group, | 
| sys_mem_blocks_t * | alloc | ||
| ) | 
#include <include/zephyr/sys/mem_blocks.h>
Add an allocator to an allocator group.
This adds a known allocator to an existing multi memory blocks allocator group.
| group | Multi memory blocks allocator structure. | 
| alloc | Allocator to add | 
| int sys_multi_mem_blocks_alloc | ( | sys_multi_mem_blocks_t * | group, | 
| void * | cfg, | ||
| size_t | count, | ||
| void ** | out_blocks, | ||
| size_t * | blk_size | ||
| ) | 
#include <include/zephyr/sys/mem_blocks.h>
Allocate memory from multi memory blocks allocator group.
Just as for sys_mem_blocks_alloc(), allocates multiple blocks of memory. Takes an opaque configuration pointer passed to the choice function, which is used by integration code to choose an allocator.
| [in] | group | Multi memory blocks allocator structure. | 
| [in] | cfg | Opaque configuration parameter, as for sys_multi_mem_blocks_choice_fn_t | 
| [in] | count | Number of blocks to allocate | 
| [out] | out_blocks | Output array to be populated by pointers to the memory blocks. It must have at least count elements.  | 
| [out] | blk_size | If not NULL, output the block size of the chosen allocator. | 
| 0 | Successful | 
| -EINVAL | Invalid argument supplied, or no allocator chosen. | 
| -ENOMEM | Not enough blocks for allocation. | 
| int sys_multi_mem_blocks_free | ( | sys_multi_mem_blocks_t * | group, | 
| size_t | count, | ||
| void ** | in_blocks | ||
| ) | 
#include <include/zephyr/sys/mem_blocks.h>
Free memory allocated from multi memory blocks allocator group.
Free previous allocated memory blocks from sys_multi_mem_blocks_alloc().
Note that all blocks in in_blocks must be from the same allocator.
| [in] | group | Multi memory blocks allocator structure. | 
| [in] | count | Number of blocks to free. | 
| [in] | in_blocks | Input array of pointers to the memory blocks. | 
| 0 | Successful | 
| -EINVAL | Invalid argument supplied, or no allocator chosen. | 
| -EFAULT | Invalid pointer(s) supplied. | 
| void sys_multi_mem_blocks_init | ( | sys_multi_mem_blocks_t * | group, | 
| sys_multi_mem_blocks_choice_fn_t | choice_fn | ||
| ) | 
#include <include/zephyr/sys/mem_blocks.h>
Initialize multi memory blocks allocator group.
Initialize a sys_multi_mem_block struct with the specified choice function. Note that individual allocator must be added later with sys_multi_mem_blocks_add_allocator.
| group | Multi memory blocks allocator structure. | 
| choice_fn | A sys_multi_mem_blocks_choice_fn_t callback used to select the allocator to be used at allocation time |