LCOV - code coverage report
Current view: top level - zephyr/mem_mgmt - mem_attr_heap.h Coverage Total Hit
Test: new.info Lines: 83.3 % 6 5
Test Date: 2025-09-05 20:47:19

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2023 Carlo Caione, <ccaione@baylibre.com>
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : #ifndef ZEPHYR_INCLUDE_MEM_ATTR_HEAP_H_
       8              : #define ZEPHYR_INCLUDE_MEM_ATTR_HEAP_H_
       9              : 
      10              : /**
      11              :  * @brief Memory heaps based on memory attributes
      12              :  * @defgroup memory_attr_heap Memory heaps based on memory attributes
      13              :  * @ingroup mem_mgmt
      14              :  * @{
      15              :  */
      16              : 
      17              : #include <zephyr/mem_mgmt/mem_attr.h>
      18              : 
      19              : #ifdef __cplusplus
      20              : extern "C" {
      21              : #endif
      22              : 
      23              : /**
      24              :  * @brief Init the memory pool
      25              :  *
      26              :  * This must be the first function to be called to initialize the memory pools
      27              :  * from all the memory regions with the a software attribute.
      28              :  *
      29              :  * @retval 0 on success.
      30              :  * @retval -EALREADY if the pool was already initialized.
      31              :  * @retval -ENOMEM too many regions already allocated.
      32              :  */
      33            1 : int mem_attr_heap_pool_init(void);
      34              : 
      35              : /**
      36              :  * @brief Allocate memory with a specified attribute and size.
      37              :  *
      38              :  * Allocates a block of memory of the specified size in bytes and with a
      39              :  * specified capability / attribute. The attribute is used to select the
      40              :  * correct memory heap to allocate memory from.
      41              :  *
      42              :  * @param attr capability / attribute requested for the memory block.
      43              :  * @param bytes requested size of the allocation in bytes.
      44              :  *
      45              :  * @retval ptr a valid pointer to the allocated memory.
      46              :  * @retval NULL if no memory is available with that attribute and size.
      47              :  */
      48            1 : void *mem_attr_heap_alloc(uint32_t attr, size_t bytes);
      49              : 
      50              : /**
      51              :  * @brief Allocate aligned memory with a specified attribute, size and alignment.
      52              :  *
      53              :  * Allocates a block of memory of the specified size in bytes and with a
      54              :  * specified capability / attribute. Takes an additional parameter specifying a
      55              :  * power of two alignment in bytes.
      56              :  *
      57              :  * @param attr capability / attribute requested for the memory block.
      58              :  * @param align power of two alignment for the returned pointer in bytes.
      59              :  * @param bytes requested size of the allocation in bytes.
      60              :  *
      61              :  * @retval ptr a valid pointer to the allocated memory.
      62              :  * @retval NULL if no memory is available with that attribute and size.
      63              :  */
      64            1 : void *mem_attr_heap_aligned_alloc(uint32_t attr, size_t align, size_t bytes);
      65              : 
      66              : /**
      67              :  * @brief Free the allocated memory
      68              :  *
      69              :  * Used to free the passed block of memory that must be the return value of a
      70              :  * previously call to @ref mem_attr_heap_alloc or @ref
      71              :  * mem_attr_heap_aligned_alloc.
      72              :  *
      73              :  * @param block block to free, must be a pointer to a block allocated by
      74              :  *        @ref mem_attr_heap_alloc or @ref mem_attr_heap_aligned_alloc.
      75              :  */
      76            1 : void mem_attr_heap_free(void *block);
      77              : 
      78              : /**
      79              :  * @brief Get a specific memory region descriptor for a provided address
      80              :  *
      81              :  * Finds the memory region descriptor struct controlling the provided pointer.
      82              :  *
      83              :  * @param addr address to be found, must be a pointer to a block allocated by
      84              :  *             @ref mem_attr_heap_alloc or @ref mem_attr_heap_aligned_alloc.
      85              :  *
      86              :  * @retval str pointer to a memory region structure the address belongs to.
      87              :  */
      88            1 : const struct mem_attr_region_t *mem_attr_heap_get_region(void *addr);
      89              : 
      90              : #ifdef __cplusplus
      91              : }
      92              : #endif
      93              : 
      94              : /**
      95              :  * @}
      96              :  */
      97              : 
      98              : #endif /* ZEPHYR_INCLUDE_MEM_ATTR_HEAP_H_ */
        

Generated by: LCOV version 2.0-1