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 #ifndef UCX_MEMPOOL_H
39 #define UCX_MEMPOOL_H
40
41 #include "ucx.h"
42 #include <stddef.h>
43 #include "allocator.h"
44
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
48
49
50
51
52 typedef struct {
53
54 UcxAllocator *allocator;
55
56
57 void **data;
58
59
60 size_t ndata;
61
62
63 size_t size;
64 } UcxMempool;
65
66
67 #define ucx_mempool_new_default() ucx_mempool_new(
16)
68
69
70
71
72
73
74
75
76
77
78
79
80 UcxMempool *ucx_mempool_new(
size_t n);
81
82
83
84
85
86
87
88
89
90 int ucx_mempool_chcap(UcxMempool *pool,
size_t newcap);
91
92
93
94
95
96
97
98
99
100
101
102 #define ucx_mempool_clamp(pool) ucx_mempool_chcap(pool, \
103 (pool->ndata & ~0xF)+0x10)
104
105
106
107
108
109
110
111
112
113 void *ucx_mempool_malloc(UcxMempool *pool,
size_t n);
114
115
116
117
118
119
120
121
122
123
124
125 void *ucx_mempool_calloc(UcxMempool *pool,
size_t nelem,
size_t elsize);
126
127
128
129
130
131
132
133
134
135
136
137
138
139 void *ucx_mempool_realloc(UcxMempool *pool,
void *ptr,
size_t n);
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154 void ucx_mempool_free(UcxMempool *pool,
void *ptr);
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170 void ucx_mempool_destroy(UcxMempool *pool);
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188 void ucx_mempool_set_destr(
void *ptr, ucx_destructor func);
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203 void ucx_mempool_reg_destr(UcxMempool *pool,
void *ptr, ucx_destructor destr);
204
205 #ifdef __cplusplus
206 }
207 #endif
208
209 #endif
210
211