VSF Documented
multi_heap.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2026 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18/*
19 * Clean-room re-implementation of ESP-IDF public API "multi_heap.h".
20 *
21 * Provides independent heap instances backed by VSF's per-instance
22 * vsf_heap_t API (__vsf_heap_init / __vsf_heap_add_buffer / ...).
23 *
24 * Baseline: ESP-IDF v5.1 public API.
25 */
26
27#ifndef __VSF_ESPIDF_MULTI_HEAP_H__
28#define __VSF_ESPIDF_MULTI_HEAP_H__
29
30#include <stdint.h>
31#include <stdlib.h>
32#include <stdbool.h>
33
34#ifdef __cplusplus
35extern "C" {
36#endif
37
39
40typedef struct {
49
52void multi_heap_free(multi_heap_handle_t heap, void *p);
53void *multi_heap_realloc(multi_heap_handle_t heap, void *p, size_t size);
55
57void multi_heap_set_lock(multi_heap_handle_t heap, void *lock);
58
60bool multi_heap_check(multi_heap_handle_t heap, bool print_errors);
61
64
66
68 size_t alignment, size_t offset);
71 const size_t new_minimum_free_bytes_value);
72
73typedef bool (*multi_heap_walker_cb_t)(void *block_ptr, size_t block_size,
74 int block_used, void *user_data);
76 void *user_data);
77
80
81#ifdef __cplusplus
82}
83#endif
84
85#endif // __VSF_ESPIDF_MULTI_HEAP_H__
bool
Definition type.h:60
size_t multi_heap_free_size(multi_heap_handle_t heap)
Definition multi_heap_port.c:124
void * multi_heap_aligned_alloc(multi_heap_handle_t heap, size_t size, size_t alignment)
Definition multi_heap_port.c:70
void multi_heap_dump(multi_heap_handle_t heap)
Definition multi_heap_port.c:110
void multi_heap_free(multi_heap_handle_t heap, void *p)
Definition multi_heap_port.c:85
void * multi_heap_aligned_alloc_offs(multi_heap_handle_t heap, size_t size, size_t alignment, size_t offset)
Definition multi_heap_port.c:77
void * multi_heap_realloc(multi_heap_handle_t heap, void *p, size_t size)
Definition multi_heap_port.c:91
void multi_heap_restore_minimum_free_bytes(multi_heap_handle_t heap, const size_t new_minimum_free_bytes_value)
Definition multi_heap_port.c:164
size_t multi_heap_reset_minimum_free_bytes(multi_heap_handle_t heap)
Definition multi_heap_port.c:156
size_t multi_heap_minimum_free_size(multi_heap_handle_t heap)
Definition multi_heap_port.c:132
multi_heap_handle_t multi_heap_register(void *start, size_t size)
Definition multi_heap_port.c:41
void * multi_heap_find_containing_block(multi_heap_handle_t heap, void *ptr)
Definition multi_heap_port.c:184
void multi_heap_walk(multi_heap_handle_t heap, multi_heap_walker_cb_t walker_func, void *user_data)
Definition multi_heap_port.c:171
bool(* multi_heap_walker_cb_t)(void *block_ptr, size_t block_size, int block_used, void *user_data)
Definition multi_heap.h:73
struct vsf_espidf_multi_heap * multi_heap_handle_t
Definition multi_heap.h:38
void multi_heap_get_info(multi_heap_handle_t heap, multi_heap_info_t *info)
Definition multi_heap_port.c:140
size_t multi_heap_get_full_block_size(multi_heap_handle_t heap, void *p)
Definition multi_heap_port.c:179
void * multi_heap_malloc(multi_heap_handle_t heap, size_t size)
Definition multi_heap_port.c:63
bool multi_heap_check(multi_heap_handle_t heap, bool print_errors)
Definition multi_heap_port.c:118
void multi_heap_set_lock(multi_heap_handle_t heap, void *lock)
Definition multi_heap_port.c:104
size_t multi_heap_get_allocated_size(multi_heap_handle_t heap, void *p)
Definition multi_heap_port.c:98
Definition multi_heap.h:40
size_t total_blocks
Definition multi_heap.h:47
size_t allocated_blocks
Definition multi_heap.h:45
size_t total_free_bytes
Definition multi_heap.h:41
size_t minimum_free_bytes
Definition multi_heap.h:44
size_t free_blocks
Definition multi_heap.h:46
size_t largest_free_block
Definition multi_heap.h:43
size_t total_allocated_bytes
Definition multi_heap.h:42
Definition esp_heap_caps_init_port.c:39
uint_fast32_t alignment
Definition vsf_heap.h:172
uint64_t offset
Definition vsf_memfs.h:49
uint32_t size
Definition vsf_memfs.h:50
vsf_pbuf_t * block_ptr
User specified free.
Definition vsf_pbuf.h:127
Generated from commit: vsfteam/vsf@c3767bf