Select one of the symbols to view example projects that use it.
 
Outline
#include <stdlib.h>
#include <stdint.h>
#include "esp_err.h"
#include "esp_bit_defs.h"
#include "esp_heap_caps.h"
esp_cache_aligned_malloc(size_t, uint32_t, void **, size_t *);
esp_cache_aligned_malloc_prefer(size_t, void **, size_t *, size_t, ...);
esp_cache_aligned_calloc(size_t, size_t, uint32_t, void **, size_t *);
esp_cache_aligned_calloc_prefer(size_t, size_t, void **, size_t *, size_t, ...);
esp_cache_get_alignment(uint32_t, size_t *);
Files
loading...
SourceVuESP-IDF Framework and ExamplesESP-IDFcomponents/esp_mm/include/esp_private/esp_cache_private.h
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/* * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 *//* ... */ #pragma once #include <stdlib.h> #include <stdint.h> #include "esp_err.h" #include "esp_bit_defs.h" #include "esp_heap_caps.h"5 includes #ifdef __cplusplus extern "C" { #endif /** * @brief Helper function for malloc a cache aligned data memory buffer * * @note Now only support 'MALLOC_CAP_INTERNAL', 'MALLOC_CAP_DMA' and 'MALLOC_CAP_SPIRAM' * * @param[in] size Size in bytes, the amount of memory to allocate * @param[in] heap_caps Flags, see `MALLOC_CAP_x` * @param[out] out_ptr A pointer to the memory allocated successfully * @param[out] actual_size Actual size for allocation in bytes, when the size you specified doesn't meet the cache alignment requirements, this value might be bigger than the size you specified. Set null if you don't care this value. * * @deprecated This function is deprecated and will be removed in the future. * Use 'heap_caps_malloc' with MALLOC_CAP_CACHE_ALIGNED caps instead * * @return * - ESP_OK: * - ESP_ERR_INVALID_ARG: Invalid argument * - ESP_ERR_NO_MEM: No enough memory for allocation *//* ... */ __attribute__((deprecated("Use 'heap_caps_malloc' with MALLOC_CAP_CACHE_ALIGNED caps instead"))) esp_err_t esp_cache_aligned_malloc(size_t size, uint32_t heap_caps, void **out_ptr, size_t *actual_size); /** * @brief Helper function for malloc a cache aligned data memory buffer as preference in decreasing order. * * @note Now only support 'MALLOC_CAP_INTERNAL', 'MALLOC_CAP_DMA' and 'MALLOC_CAP_SPIRAM' * * @param[in] size Size in bytes, the amount of memory to allocate * @param[out] out_ptr A pointer to the memory allocated successfully * @param[out] actual_size Actual size for allocation in bytes, when the size you specified doesn't meet the cache alignment requirements, this value might be bigger than the size you specified. Set null if you don't care this value. * @param[in] flag_nums Number of variable parameters * @param[in] spread param The spread params are bitwise OR of Flags, see `MALLOC_CAP_x`. This API prefers to allocate memory with the first parameter. If failed, allocate memory with * the next parameter. It will try in this order until allocating a chunk of memory successfully * or fail to allocate memories with any of the parameters. * * @deprecated This function is deprecated and will be removed in the future. * Use 'heap_caps_malloc_prefer' with MALLOC_CAP_CACHE_ALIGNED caps instead * * @return * - ESP_OK: * - ESP_ERR_INVALID_ARG: Invalid argument * - ESP_ERR_NO_MEM: No enough memory for allocation *//* ... */ __attribute__((deprecated("Use 'heap_caps_malloc_prefer' with MALLOC_CAP_CACHE_ALIGNED caps instead"))) esp_err_t esp_cache_aligned_malloc_prefer(size_t size, void **out_ptr, size_t *actual_size, size_t flag_nums, ...); /** * @brief Helper function for calloc a cache aligned data memory buffer * * @note Now only support 'MALLOC_CAP_INTERNAL', 'MALLOC_CAP_DMA' and 'MALLOC_CAP_SPIRAM' * * @param[in] n Number of continuing chunks of memory to allocate * @param[in] size Size of one chunk, in bytes * @param[in] heap_caps Flags, see `MALLOC_CAP_x` * @param[out] out_ptr A pointer to the memory allocated successfully * @param[out] actual_size Actual size for allocation in bytes, when the size you specified doesn't meet the cache alignment requirements, this value might be bigger than the size you specified. Set null if you don't care this value. * * @deprecated This function is deprecated and will be removed in the future. * Use 'heap_caps_calloc' with MALLOC_CAP_CACHE_ALIGNED caps instead * * @return * - ESP_OK: * - ESP_ERR_INVALID_ARG: Invalid argument * - ESP_ERR_NO_MEM: No enough memory for allocation *//* ... */ __attribute__((deprecated("Use 'heap_caps_calloc' with MALLOC_CAP_CACHE_ALIGNED caps instead"))) esp_err_t esp_cache_aligned_calloc(size_t n, size_t size, uint32_t heap_caps, void **out_ptr, size_t *actual_size); /** * @brief Helper function for calloc a cache aligned data memory buffer as preference in decreasing order. * * @note Now only support 'MALLOC_CAP_INTERNAL', 'MALLOC_CAP_DMA' and 'MALLOC_CAP_SPIRAM' * * @param[in] n Number of continuing chunks of memory to allocate * @param[in] size Size in bytes, the amount of memory to allocate * @param[out] out_ptr A pointer to the memory allocated successfully * @param[out] actual_size Actual size for allocation in bytes, when the size you specified doesn't meet the cache alignment requirements, this value might be bigger than the size you specified. Set null if you don't care this value. * @param[in] flag_nums Number of variable parameters * @param[in] spread param The spread params are bitwise OR of Flags, see `MALLOC_CAP_x`. This API prefers to allocate memory with the first parameter. If failed, allocate memory with * the next parameter. It will try in this order until allocating a chunk of memory successfully * or fail to allocate memories with any of the parameters. * * @deprecated This function is deprecated and will be removed in the future. * Use 'heap_caps_calloc_prefer' with MALLOC_CAP_CACHE_ALIGNED caps instead * * @return * - ESP_OK: * - ESP_ERR_INVALID_ARG: Invalid argument * - ESP_ERR_NO_MEM: No enough memory for allocation *//* ... */ __attribute__((deprecated("Use 'heap_caps_calloc' with MALLOC_CAP_CACHE_ALIGNED caps instead"))) esp_err_t esp_cache_aligned_calloc_prefer(size_t n, size_t size, void **out_ptr, size_t *actual_size, size_t flag_nums, ...); /** * @brief Get Cache alignment requirement for data * * @note Now only support 'MALLOC_CAP_INTERNAL', 'MALLOC_CAP_DMA' and 'MALLOC_CAP_SPIRAM' * * @param[in] heap_caps Flags, see `MALLOC_CAP_x` * @param[out] out_alignment Alignment * * @return * - ESP_OK: * - ESP_ERR_INVALID_ARG: Invalid argument *//* ... */ esp_err_t esp_cache_get_alignment(uint32_t heap_caps, size_t *out_alignment); #ifdef __cplusplus }{...} #endif
Details