7#ifndef ZEPHYR_INCLUDE_SYS_HEAP_LISTENER_H
8#define ZEPHYR_INCLUDE_SYS_HEAP_LISTENER_H
18#if defined(CONFIG_HEAP_LISTENER) || defined(__DOXYGEN__)
71 void *mem,
size_t bytes);
90 void *mem,
size_t bytes);
181#define HEAP_ID_FROM_POINTER(heap_pointer) ((uintptr_t)heap_pointer)
188#define HEAP_ID_LIBC ((uintptr_t)0)
207#define HEAP_LISTENER_ALLOC_DEFINE(name, _heap_id, _alloc_cb) \
208 struct heap_listener name = { \
209 .heap_id = _heap_id, \
210 .event = HEAP_ALLOC, \
212 .alloc_cb = _alloc_cb \
233#define HEAP_LISTENER_FREE_DEFINE(name, _heap_id, _free_cb) \
234 struct heap_listener name = { \
235 .heap_id = _heap_id, \
236 .event = HEAP_FREE, \
238 .free_cb = _free_cb \
259#define HEAP_LISTENER_RESIZE_DEFINE(name, _heap_id, _resize_cb) \
260 struct heap_listener name = { \
261 .heap_id = _heap_id, \
262 .event = HEAP_RESIZE, \
264 .resize_cb = _resize_cb \
272#define HEAP_ID_FROM_POINTER(heap_pointer) ((uintptr_t)NULL)
292 ARG_UNUSED(old_heap_end);
293 ARG_UNUSED(new_heap_end);
void(* heap_listener_resize_cb_t)(uintptr_t heap_id, void *old_heap_end, void *new_heap_end)
Callback used when heap is resized.
Definition: heap_listener.h:50
void heap_listener_register(struct heap_listener *listener)
Register heap event listener.
void heap_listener_unregister(struct heap_listener *listener)
Unregister heap event listener.
void heap_listener_notify_free(uintptr_t heap_id, void *mem, size_t bytes)
Notify listeners of heap free event.
heap_event_types
Definition: heap_listener.h:25
void(* heap_listener_alloc_cb_t)(uintptr_t heap_id, void *mem, size_t bytes)
Callback used when there is heap allocation.
Definition: heap_listener.h:70
void heap_listener_notify_resize(uintptr_t heap_id, void *old_heap_end, void *new_heap_end)
Notify listeners of heap resize event.
void(* heap_listener_free_cb_t)(uintptr_t heap_id, void *mem, size_t bytes)
Callback used when memory is freed from heap.
Definition: heap_listener.h:89
void heap_listener_notify_alloc(uintptr_t heap_id, void *mem, size_t bytes)
Notify listeners of heap allocation event.
@ HEAP_RESIZE
Definition: heap_listener.h:32
@ HEAP_ALLOC
Definition: heap_listener.h:33
@ HEAP_FREE
Definition: heap_listener.h:34
@ HEAP_REALLOC
Definition: heap_listener.h:35
@ HEAP_EVT_UNKNOWN
Definition: heap_listener.h:30
@ HEAP_MAX_EVENTS
Definition: heap_listener.h:37
Single-linked list implementation.
struct _snode sys_snode_t
Definition: slist.h:33
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:75
Definition: heap_listener.h:92
heap_listener_resize_cb_t resize_cb
Definition: heap_listener.h:112
enum heap_event_types event
Definition: heap_listener.h:107
heap_listener_alloc_cb_t alloc_cb
Definition: heap_listener.h:110
heap_listener_free_cb_t free_cb
Definition: heap_listener.h:111
uintptr_t heap_id
Definition: heap_listener.h:102
sys_snode_t node
Definition: heap_listener.h:94