24#if VSF_USE_HEAP == ENABLED
29#if VSF_HEAP_CFG_TRACE == ENABLED
38#if defined(__VSF_HEAP_CLASS_IMPLEMENT)
39# define __VSF_CLASS_IMPLEMENT__
40# undef __VSF_HEAP_CLASS_IMPLEMENT
41#elif defined(__VSF_HEAP_CLASS_INHERIT__)
42# define __VSF_CLASS_INHERIT__
43# undef __VSF_HEAP_CLASS_INHERIT__
54#ifndef VSF_HEAP_CFG_TRACE_LEAKAGE
55# define VSF_HEAP_CFG_TRACE_LEAKAGE DISABLED
58#if VSF_ARCH_PROVIDE_HEAP == ENABLED
59# ifndef VSF_USE_ARCH_HEAP
60# define VSF_USE_ARCH_HEAP ENABLED
63# if VSF_USE_ARCH_HEAP == ENABLED
64# warning VSF_USE_ARCH_HEAP is enabled, but arch does not provide heap
65# undef VSF_USE_ARCH_HEAP
67# define VSF_USE_ARCH_HEAP DISABLED
70#if !defined(VSF_HEAP_SIZE) && VSF_USE_ARCH_HEAP != ENABLED && !defined(__VSF_APPLET__)
71# warning VSF_HEAP_SIZE is not defined, use 128K as default
72# define VSF_HEAP_SIZE (128 * 1024)
76# define VSF_HEAP_ALIGN (2 * sizeof(uintalu_t))
79#if VSF_HEAP_CFG_TRACE == ENABLED
80# define vsf_heap_malloc_aligned(__size, __alignment) \
82 void * ptr = vsf_heap_malloc_aligned_imp(__size, __alignment); \
83 vsf_trace_debug("%s: malloc_align 0x%p %d" VSF_TRACE_CFG_LINEEND, __FUNCTION__, ptr, __size);\
86# define vsf_heap_malloc(__size) \
88 void * ptr = vsf_heap_malloc_imp(__size); \
89 vsf_trace_debug("%s: malloc 0x%p %d" VSF_TRACE_CFG_LINEEND, __FUNCTION__, ptr, __size);\
92# define vsf_heap_realloc_aligned(__buffer, __size, __alignment) \
94 void * ptr = vsf_heap_realloc_aligned_imp(__buffer, __size, __alignment);\
95 vsf_trace_debug("%s: realloc_align 0x%p --> 0x%p %d" VSF_TRACE_CFG_LINEEND, __FUNCTION__, __buffer, ptr, __size);\
98# define vsf_heap_realloc(__buffer, __size) \
100 void * ptr = vsf_heap_realloc_imp(__buffer, __size); \
101 vsf_trace_debug("%s: realloc 0x%p --> 0x%p %d" VSF_TRACE_CFG_LINEEND, __FUNCTION__, __buffer, ptr, __size);\
104# define vsf_heap_free(__ptr) \
106 vsf_trace_debug("%s: free 0x%p" VSF_TRACE_CFG_LINEEND, __FUNCTION__, (__ptr));\
107 vsf_heap_free_imp(__ptr); \
110# define vsf_heap_malloc_aligned vsf_heap_malloc_aligned_imp
111# define vsf_heap_malloc vsf_heap_malloc_imp
112# define vsf_heap_realloc_aligned vsf_heap_realloc_aligned_imp
113# define vsf_heap_realloc vsf_heap_realloc_imp
114# define vsf_heap_free vsf_heap_free_imp
117#ifndef VSF_HEAP_CFG_STATISTICS
118# define VSF_HEAP_CFG_STATISTICS ENABLED
123#if VSF_HEAP_CFG_STATISTICS == ENABLED
158#if VSF_USE_ARCH_HEAP != ENABLED
168#if (VSF_HEAP_CFG_STATISTICS == ENABLED) \
169 && ( (VSF_USE_ARCH_HEAP != ENABLED) \
170 || (VSF_ARCH_HEAP_HAS_STATISTICS == ENABLED))
189#if VSF_HEAP_CFG_STATISTICS == ENABLED
192#if VSF_HEAP_CFG_TRACE_LEAKAGE == ENABLED
198#if VSF_USE_ARCH_HEAP != ENABLED
200extern void vsf_heap_init(
void);
206extern void vsf_heap_add_memory(
vsf_mem_t mem);
208#if (VSF_HEAP_CFG_STATISTICS == ENABLED) \
209 && ( (VSF_USE_ARCH_HEAP != ENABLED) \
210 || (VSF_ARCH_HEAP_HAS_STATISTICS == ENABLED))
223#if VSF_HEAP_CFG_TRACE_LEAKAGE == ENABLED
#define ENABLED
Definition __type.h:28
def_interface(i_adc_t) i_peripheral_t
vsf_err_t(* Init)(vsf_adc_cfg_t *pCfg)
Definition adc_interface.h:38
Definition vsf_heap.h:130
end_def_interface(i_pm_wakeup_t) struct vsf_pm_pclk_cfg_t
Definition device.h:249
#define vsf_class(__name)
Definition ooc_class.h:48
unsigned uint32_t
Definition stdint.h:9
unsigned int uint_fast32_t
Definition stdint.h:27
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_list.h:883
Definition vsf_heap.h:124
uint32_t all_size
Definition vsf_heap.h:125
uint32_t used_size
Definition vsf_heap.h:126
Definition vsf_utilities.h:51
const i_heap_t VSF_HEAP
Definition vsf_heap.c:116
void __vsf_heap_init(vsf_heap_t *heap)
Definition vsf_heap.c:584
void * vsf_heap_malloc_aligned_imp(uint_fast32_t size, uint_fast32_t alignment)
Definition vsf_heap.c:813
uint_fast32_t vsf_heap_size(uint8_t *buffer)
Definition vsf_heap.c:982
#define VSF_HEAP_CFG_STATISTICS
Definition vsf_heap.h:118
void(* Statistics)(vsf_heap_statistics_t *statistics)
Definition vsf_heap.h:171
uint_fast32_t __vsf_heap_size(vsf_heap_t *heap, void *buffer)
Definition vsf_heap.c:533
void * vsf_heap_calloc(uint_fast32_t n, uint_fast32_t size)
Definition vsf_heap.c:1012
void * __vsf_heap_realloc_aligned(vsf_heap_t *heap, void *buffer, uint_fast32_t size, uint_fast32_t alignment)
Definition vsf_heap.c:473
void vsf_heap_free_imp(void *buffer)
Definition vsf_heap.c:996
void __vsf_heap_dump(vsf_heap_t *heap, bool lock)
Definition vsf_heap.c:603
void vsf_heap_statistics(vsf_heap_statistics_t *statistics)
Definition vsf_heap.c:800
uint_fast32_t alignment
Definition vsf_heap.h:163
void(* Free)(void *buffer)
Definition vsf_heap.h:167
void * vsf_heap_realloc_imp(void *buffer, uint_fast32_t size)
Definition vsf_heap.c:924
#define VSF_HEAP_CFG_TRACE_LEAKAGE
Definition vsf_heap.h:55
void vsf_heap_dump(bool lock)
Definition vsf_heap.c:736
void __vsf_heap_statistics(vsf_heap_t *heap, vsf_heap_statistics_t *statistics)
Definition vsf_heap.c:592
void * vsf_heap_realloc_aligned_imp(void *buffer, uint_fast32_t size, uint_fast32_t alignment)
Definition vsf_heap.c:873
void * vsf_heap_malloc_imp(uint_fast32_t size)
Definition vsf_heap.c:843
void * __vsf_heap_malloc_aligned(vsf_heap_t *heap, uint_fast32_t size, uint_fast32_t alignment)
Definition vsf_heap.c:444
char * vsf_heap_strdup(const char *str)
Definition vsf_heap.c:1029
void __vsf_heap_free(vsf_heap_t *heap, void *buffer)
Definition vsf_heap.c:547
void __vsf_heap_add_buffer(vsf_heap_t *heap, uint8_t *buffer, uint_fast32_t size)
Definition vsf_heap.c:401
uint32_t size
Definition vsf_memfs.h:50
declare_interface(i_msg_tree_node_t) def_interface(i_msg_tree_node_t) vsf_msgt_handler_t msg_handler