1use super::types::*;
4
5unsafe extern "C" {
6 pub fn mi_malloc(size: usize) -> *mut ::std::os::raw::c_void;
7 pub fn mi_calloc(count: usize, size: usize) -> *mut ::std::os::raw::c_void;
8 pub fn mi_realloc(
9 p: *mut ::std::os::raw::c_void,
10 newsize: usize,
11 ) -> *mut ::std::os::raw::c_void;
12 pub fn mi_expand(p: *mut ::std::os::raw::c_void, newsize: usize)
13 -> *mut ::std::os::raw::c_void;
14 pub fn mi_free(p: *mut ::std::os::raw::c_void);
15 pub fn mi_strdup(s: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
16 pub fn mi_strndup(s: *const ::std::os::raw::c_char, n: usize) -> *mut ::std::os::raw::c_char;
17 pub fn mi_realpath(
18 fname: *const ::std::os::raw::c_char,
19 resolved_name: *mut ::std::os::raw::c_char,
20 ) -> *mut ::std::os::raw::c_char;
21 pub fn mi_malloc_small(size: usize) -> *mut ::std::os::raw::c_void;
22 pub fn mi_zalloc_small(size: usize) -> *mut ::std::os::raw::c_void;
23 pub fn mi_zalloc(size: usize) -> *mut ::std::os::raw::c_void;
24 pub fn mi_mallocn(count: usize, size: usize) -> *mut ::std::os::raw::c_void;
25 pub fn mi_reallocn(
26 p: *mut ::std::os::raw::c_void,
27 count: usize,
28 size: usize,
29 ) -> *mut ::std::os::raw::c_void;
30 pub fn mi_reallocf(
31 p: *mut ::std::os::raw::c_void,
32 newsize: usize,
33 ) -> *mut ::std::os::raw::c_void;
34 pub fn mi_usable_size(p: *const ::std::os::raw::c_void) -> usize;
35 pub fn mi_good_size(size: usize) -> usize;
36 pub fn mi_register_deferred_free(
37 deferred_free: mi_deferred_free_fun,
38 arg: *mut ::std::os::raw::c_void,
39 );
40 pub fn mi_register_output(out: mi_output_fun, arg: *mut ::std::os::raw::c_void);
41 pub fn mi_register_error(fun: mi_error_fun, arg: *mut ::std::os::raw::c_void);
42 pub fn mi_collect(force: bool);
43 pub fn mi_version() -> ::std::os::raw::c_int;
44 pub fn mi_stats_reset();
45 pub fn mi_stats_merge();
46 pub fn mi_stats_print(out: *mut ::std::os::raw::c_void);
47 pub fn mi_stats_print_out(out: mi_output_fun, arg: *mut ::std::os::raw::c_void);
48 pub fn mi_thread_stats_print_out(out: mi_output_fun, arg: *mut ::std::os::raw::c_void);
49 pub fn mi_options_print();
50 pub fn mi_process_info(
51 elapsed_msecs: *mut usize,
52 user_msecs: *mut usize,
53 system_msecs: *mut usize,
54 current_rss: *mut usize,
55 peak_rss: *mut usize,
56 current_commit: *mut usize,
57 peak_commit: *mut usize,
58 page_faults: *mut usize,
59 );
60 pub fn mi_process_init();
61 pub fn mi_process_done();
62 pub fn mi_thread_init();
63 pub fn mi_thread_done();
64 pub fn mi_malloc_aligned(size: usize, alignment: usize) -> *mut ::std::os::raw::c_void;
65 pub fn mi_malloc_aligned_at(
66 size: usize,
67 alignment: usize,
68 offset: usize,
69 ) -> *mut ::std::os::raw::c_void;
70 pub fn mi_zalloc_aligned(size: usize, alignment: usize) -> *mut ::std::os::raw::c_void;
71 pub fn mi_zalloc_aligned_at(
72 size: usize,
73 alignment: usize,
74 offset: usize,
75 ) -> *mut ::std::os::raw::c_void;
76 pub fn mi_calloc_aligned(
77 count: usize,
78 size: usize,
79 alignment: usize,
80 ) -> *mut ::std::os::raw::c_void;
81 pub fn mi_calloc_aligned_at(
82 count: usize,
83 size: usize,
84 alignment: usize,
85 offset: usize,
86 ) -> *mut ::std::os::raw::c_void;
87 pub fn mi_realloc_aligned(
88 p: *mut ::std::os::raw::c_void,
89 newsize: usize,
90 alignment: usize,
91 ) -> *mut ::std::os::raw::c_void;
92 pub fn mi_realloc_aligned_at(
93 p: *mut ::std::os::raw::c_void,
94 newsize: usize,
95 alignment: usize,
96 offset: usize,
97 ) -> *mut ::std::os::raw::c_void;
98 pub fn mi_umalloc(size: usize, block_size: *mut usize) -> *mut ::std::os::raw::c_void;
99 pub fn mi_ucalloc(
100 count: usize,
101 size: usize,
102 block_size: *mut usize,
103 ) -> *mut ::std::os::raw::c_void;
104 pub fn mi_urealloc(
105 p: *mut ::std::os::raw::c_void,
106 newsize: usize,
107 block_size_pre: *mut usize,
108 block_size_post: *mut usize,
109 ) -> *mut ::std::os::raw::c_void;
110 pub fn mi_ufree(p: *mut ::std::os::raw::c_void, block_size: *mut usize);
111 pub fn mi_umalloc_aligned(
112 size: usize,
113 alignment: usize,
114 block_size: *mut usize,
115 ) -> *mut ::std::os::raw::c_void;
116 pub fn mi_uzalloc_aligned(
117 size: usize,
118 alignment: usize,
119 block_size: *mut usize,
120 ) -> *mut ::std::os::raw::c_void;
121 pub fn mi_umalloc_small(size: usize, block_size: *mut usize) -> *mut ::std::os::raw::c_void;
122 pub fn mi_uzalloc_small(size: usize, block_size: *mut usize) -> *mut ::std::os::raw::c_void;
123 pub fn mi_heap_new() -> *mut mi_heap_t;
124 pub fn mi_heap_delete(heap: *mut mi_heap_t);
125 pub fn mi_heap_destroy(heap: *mut mi_heap_t);
126 pub fn mi_heap_set_default(heap: *mut mi_heap_t) -> *mut mi_heap_t;
127 pub fn mi_heap_get_default() -> *mut mi_heap_t;
128 pub fn mi_heap_get_backing() -> *mut mi_heap_t;
129 pub fn mi_heap_collect(heap: *mut mi_heap_t, force: bool);
130 pub fn mi_heap_malloc(heap: *mut mi_heap_t, size: usize) -> *mut ::std::os::raw::c_void;
131 pub fn mi_heap_zalloc(heap: *mut mi_heap_t, size: usize) -> *mut ::std::os::raw::c_void;
132 pub fn mi_heap_calloc(
133 heap: *mut mi_heap_t,
134 count: usize,
135 size: usize,
136 ) -> *mut ::std::os::raw::c_void;
137 pub fn mi_heap_mallocn(
138 heap: *mut mi_heap_t,
139 count: usize,
140 size: usize,
141 ) -> *mut ::std::os::raw::c_void;
142 pub fn mi_heap_malloc_small(heap: *mut mi_heap_t, size: usize) -> *mut ::std::os::raw::c_void;
143 pub fn mi_heap_realloc(
144 heap: *mut mi_heap_t,
145 p: *mut ::std::os::raw::c_void,
146 newsize: usize,
147 ) -> *mut ::std::os::raw::c_void;
148 pub fn mi_heap_reallocn(
149 heap: *mut mi_heap_t,
150 p: *mut ::std::os::raw::c_void,
151 count: usize,
152 size: usize,
153 ) -> *mut ::std::os::raw::c_void;
154 pub fn mi_heap_reallocf(
155 heap: *mut mi_heap_t,
156 p: *mut ::std::os::raw::c_void,
157 newsize: usize,
158 ) -> *mut ::std::os::raw::c_void;
159 pub fn mi_heap_strdup(
160 heap: *mut mi_heap_t,
161 s: *const ::std::os::raw::c_char,
162 ) -> *mut ::std::os::raw::c_char;
163 pub fn mi_heap_strndup(
164 heap: *mut mi_heap_t,
165 s: *const ::std::os::raw::c_char,
166 n: usize,
167 ) -> *mut ::std::os::raw::c_char;
168 pub fn mi_heap_realpath(
169 heap: *mut mi_heap_t,
170 fname: *const ::std::os::raw::c_char,
171 resolved_name: *mut ::std::os::raw::c_char,
172 ) -> *mut ::std::os::raw::c_char;
173 pub fn mi_heap_malloc_aligned(
174 heap: *mut mi_heap_t,
175 size: usize,
176 alignment: usize,
177 ) -> *mut ::std::os::raw::c_void;
178 pub fn mi_heap_malloc_aligned_at(
179 heap: *mut mi_heap_t,
180 size: usize,
181 alignment: usize,
182 offset: usize,
183 ) -> *mut ::std::os::raw::c_void;
184 pub fn mi_heap_zalloc_aligned(
185 heap: *mut mi_heap_t,
186 size: usize,
187 alignment: usize,
188 ) -> *mut ::std::os::raw::c_void;
189 pub fn mi_heap_zalloc_aligned_at(
190 heap: *mut mi_heap_t,
191 size: usize,
192 alignment: usize,
193 offset: usize,
194 ) -> *mut ::std::os::raw::c_void;
195 pub fn mi_heap_calloc_aligned(
196 heap: *mut mi_heap_t,
197 count: usize,
198 size: usize,
199 alignment: usize,
200 ) -> *mut ::std::os::raw::c_void;
201 pub fn mi_heap_calloc_aligned_at(
202 heap: *mut mi_heap_t,
203 count: usize,
204 size: usize,
205 alignment: usize,
206 offset: usize,
207 ) -> *mut ::std::os::raw::c_void;
208 pub fn mi_heap_realloc_aligned(
209 heap: *mut mi_heap_t,
210 p: *mut ::std::os::raw::c_void,
211 newsize: usize,
212 alignment: usize,
213 ) -> *mut ::std::os::raw::c_void;
214 pub fn mi_heap_realloc_aligned_at(
215 heap: *mut mi_heap_t,
216 p: *mut ::std::os::raw::c_void,
217 newsize: usize,
218 alignment: usize,
219 offset: usize,
220 ) -> *mut ::std::os::raw::c_void;
221 pub fn mi_rezalloc(
222 p: *mut ::std::os::raw::c_void,
223 newsize: usize,
224 ) -> *mut ::std::os::raw::c_void;
225 pub fn mi_recalloc(
226 p: *mut ::std::os::raw::c_void,
227 newcount: usize,
228 size: usize,
229 ) -> *mut ::std::os::raw::c_void;
230 pub fn mi_rezalloc_aligned(
231 p: *mut ::std::os::raw::c_void,
232 newsize: usize,
233 alignment: usize,
234 ) -> *mut ::std::os::raw::c_void;
235 pub fn mi_rezalloc_aligned_at(
236 p: *mut ::std::os::raw::c_void,
237 newsize: usize,
238 alignment: usize,
239 offset: usize,
240 ) -> *mut ::std::os::raw::c_void;
241 pub fn mi_recalloc_aligned(
242 p: *mut ::std::os::raw::c_void,
243 newcount: usize,
244 size: usize,
245 alignment: usize,
246 ) -> *mut ::std::os::raw::c_void;
247 pub fn mi_recalloc_aligned_at(
248 p: *mut ::std::os::raw::c_void,
249 newcount: usize,
250 size: usize,
251 alignment: usize,
252 offset: usize,
253 ) -> *mut ::std::os::raw::c_void;
254 pub fn mi_heap_rezalloc(
255 heap: *mut mi_heap_t,
256 p: *mut ::std::os::raw::c_void,
257 newsize: usize,
258 ) -> *mut ::std::os::raw::c_void;
259 pub fn mi_heap_recalloc(
260 heap: *mut mi_heap_t,
261 p: *mut ::std::os::raw::c_void,
262 newcount: usize,
263 size: usize,
264 ) -> *mut ::std::os::raw::c_void;
265 pub fn mi_heap_rezalloc_aligned(
266 heap: *mut mi_heap_t,
267 p: *mut ::std::os::raw::c_void,
268 newsize: usize,
269 alignment: usize,
270 ) -> *mut ::std::os::raw::c_void;
271 pub fn mi_heap_rezalloc_aligned_at(
272 heap: *mut mi_heap_t,
273 p: *mut ::std::os::raw::c_void,
274 newsize: usize,
275 alignment: usize,
276 offset: usize,
277 ) -> *mut ::std::os::raw::c_void;
278 pub fn mi_heap_recalloc_aligned(
279 heap: *mut mi_heap_t,
280 p: *mut ::std::os::raw::c_void,
281 newcount: usize,
282 size: usize,
283 alignment: usize,
284 ) -> *mut ::std::os::raw::c_void;
285 pub fn mi_heap_recalloc_aligned_at(
286 heap: *mut mi_heap_t,
287 p: *mut ::std::os::raw::c_void,
288 newcount: usize,
289 size: usize,
290 alignment: usize,
291 offset: usize,
292 ) -> *mut ::std::os::raw::c_void;
293 pub fn mi_heap_contains_block(heap: *mut mi_heap_t, p: *const ::std::os::raw::c_void) -> bool;
294 pub fn mi_heap_check_owned(heap: *mut mi_heap_t, p: *const ::std::os::raw::c_void) -> bool;
295 pub fn mi_check_owned(p: *const ::std::os::raw::c_void) -> bool;
296 pub fn mi_heap_visit_blocks(
297 heap: *const mi_heap_t,
298 visit_blocks: bool,
299 visitor: mi_block_visit_fun,
300 arg: *mut ::std::os::raw::c_void,
301 ) -> bool;
302 pub fn mi_is_in_heap_region(p: *const ::std::os::raw::c_void) -> bool;
303 pub fn mi_is_redirected() -> bool;
304 pub fn mi_reserve_huge_os_pages_interleave(
305 pages: usize,
306 numa_nodes: usize,
307 timeout_msecs: usize,
308 ) -> ::std::os::raw::c_int;
309 pub fn mi_reserve_huge_os_pages_at(
310 pages: usize,
311 numa_node: ::std::os::raw::c_int,
312 timeout_msecs: usize,
313 ) -> ::std::os::raw::c_int;
314 pub fn mi_reserve_os_memory(
315 size: usize,
316 commit: bool,
317 allow_large: bool,
318 ) -> ::std::os::raw::c_int;
319 pub fn mi_manage_os_memory(
320 start: *mut ::std::os::raw::c_void,
321 size: usize,
322 is_committed: bool,
323 is_large: bool,
324 is_zero: bool,
325 numa_node: ::std::os::raw::c_int,
326 ) -> bool;
327 pub fn mi_debug_show_arenas();
328 pub fn mi_arenas_print();
329 pub fn mi_arena_area(arena_id: mi_arena_id_t, size: *mut usize) -> *mut ::std::os::raw::c_void;
330 pub fn mi_reserve_huge_os_pages_at_ex(
331 pages: usize,
332 numa_node: ::std::os::raw::c_int,
333 timeout_msecs: usize,
334 exclusive: bool,
335 arena_id: *mut mi_arena_id_t,
336 ) -> ::std::os::raw::c_int;
337 pub fn mi_reserve_os_memory_ex(
338 size: usize,
339 commit: bool,
340 allow_large: bool,
341 exclusive: bool,
342 arena_id: *mut mi_arena_id_t,
343 ) -> ::std::os::raw::c_int;
344 pub fn mi_manage_os_memory_ex(
345 start: *mut ::std::os::raw::c_void,
346 size: usize,
347 is_committed: bool,
348 is_large: bool,
349 is_zero: bool,
350 numa_node: ::std::os::raw::c_int,
351 exclusive: bool,
352 arena_id: *mut mi_arena_id_t,
353 ) -> bool;
354 pub fn mi_heap_new_in_arena(arena_id: mi_arena_id_t) -> *mut mi_heap_t;
355 pub fn mi_subproc_main() -> mi_subproc_id_t;
356 pub fn mi_subproc_new() -> mi_subproc_id_t;
357 pub fn mi_subproc_delete(subproc: mi_subproc_id_t);
358 pub fn mi_subproc_add_current_thread(subproc: mi_subproc_id_t);
359 pub fn mi_abandoned_visit_blocks(
360 subproc_id: mi_subproc_id_t,
361 heap_tag: ::std::os::raw::c_int,
362 visit_blocks: bool,
363 visitor: mi_block_visit_fun,
364 arg: *mut ::std::os::raw::c_void,
365 ) -> bool;
366 pub fn mi_heap_guarded_set_sample_rate(heap: *mut mi_heap_t, sample_rate: usize, seed: usize);
367 pub fn mi_heap_guarded_set_size_bound(heap: *mut mi_heap_t, min: usize, max: usize);
368 pub fn mi_thread_set_in_threadpool();
369 pub fn mi_heap_new_ex(
370 heap_tag: ::std::os::raw::c_int,
371 allow_destroy: bool,
372 arena_id: mi_arena_id_t,
373 ) -> *mut mi_heap_t;
374 pub fn mi_reserve_huge_os_pages(
375 pages: usize,
376 max_secs: f64,
377 pages_reserved: *mut usize,
378 ) -> ::std::os::raw::c_int;
379 pub fn mi_collect_reduce(target_thread_owned: usize);
380 pub fn mi_option_is_enabled(option: mi_option_t) -> bool;
381 pub fn mi_option_enable(option: mi_option_t);
382 pub fn mi_option_disable(option: mi_option_t);
383 pub fn mi_option_set_enabled(option: mi_option_t, enable: bool);
384 pub fn mi_option_set_enabled_default(option: mi_option_t, enable: bool);
385 pub fn mi_option_get(option: mi_option_t) -> ::std::os::raw::c_long;
386 pub fn mi_option_get_clamp(
387 option: mi_option_t,
388 min: ::std::os::raw::c_long,
389 max: ::std::os::raw::c_long,
390 ) -> ::std::os::raw::c_long;
391 pub fn mi_option_get_size(option: mi_option_t) -> usize;
392 pub fn mi_option_set(option: mi_option_t, value: ::std::os::raw::c_long);
393 pub fn mi_option_set_default(option: mi_option_t, value: ::std::os::raw::c_long);
394 pub fn mi_cfree(p: *mut ::std::os::raw::c_void);
395 pub fn mi__expand(
396 p: *mut ::std::os::raw::c_void,
397 newsize: usize,
398 ) -> *mut ::std::os::raw::c_void;
399 pub fn mi_malloc_size(p: *const ::std::os::raw::c_void) -> usize;
400 pub fn mi_malloc_good_size(size: usize) -> usize;
401 pub fn mi_malloc_usable_size(p: *const ::std::os::raw::c_void) -> usize;
402 pub fn mi_posix_memalign(
403 p: *mut *mut ::std::os::raw::c_void,
404 alignment: usize,
405 size: usize,
406 ) -> ::std::os::raw::c_int;
407 pub fn mi_memalign(alignment: usize, size: usize) -> *mut ::std::os::raw::c_void;
408 pub fn mi_valloc(size: usize) -> *mut ::std::os::raw::c_void;
409 pub fn mi_pvalloc(size: usize) -> *mut ::std::os::raw::c_void;
410 pub fn mi_aligned_alloc(alignment: usize, size: usize) -> *mut ::std::os::raw::c_void;
411 pub fn mi_reallocarray(
412 p: *mut ::std::os::raw::c_void,
413 count: usize,
414 size: usize,
415 ) -> *mut ::std::os::raw::c_void;
416 pub fn mi_reallocarr(
417 p: *mut ::std::os::raw::c_void,
418 count: usize,
419 size: usize,
420 ) -> ::std::os::raw::c_int;
421 pub fn mi_aligned_recalloc(
422 p: *mut ::std::os::raw::c_void,
423 newcount: usize,
424 size: usize,
425 alignment: usize,
426 ) -> *mut ::std::os::raw::c_void;
427 pub fn mi_aligned_offset_recalloc(
428 p: *mut ::std::os::raw::c_void,
429 newcount: usize,
430 size: usize,
431 alignment: usize,
432 offset: usize,
433 ) -> *mut ::std::os::raw::c_void;
434 pub fn mi_wcsdup(s: *const ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort;
435 pub fn mi_mbsdup(s: *const ::std::os::raw::c_uchar) -> *mut ::std::os::raw::c_uchar;
436 pub fn mi_dupenv_s(
437 buf: *mut *mut ::std::os::raw::c_char,
438 size: *mut usize,
439 name: *const ::std::os::raw::c_char,
440 ) -> ::std::os::raw::c_int;
441 pub fn mi_wdupenv_s(
442 buf: *mut *mut ::std::os::raw::c_ushort,
443 size: *mut usize,
444 name: *const ::std::os::raw::c_ushort,
445 ) -> ::std::os::raw::c_int;
446 pub fn mi_free_size(p: *mut ::std::os::raw::c_void, size: usize);
447 pub fn mi_free_size_aligned(p: *mut ::std::os::raw::c_void, size: usize, alignment: usize);
448 pub fn mi_free_aligned(p: *mut ::std::os::raw::c_void, alignment: usize);
449 pub fn mi_new(size: usize) -> *mut ::std::os::raw::c_void;
450 pub fn mi_new_aligned(size: usize, alignment: usize) -> *mut ::std::os::raw::c_void;
451 pub fn mi_new_nothrow(size: usize) -> *mut ::std::os::raw::c_void;
452 pub fn mi_new_aligned_nothrow(size: usize, alignment: usize) -> *mut ::std::os::raw::c_void;
453 pub fn mi_new_n(count: usize, size: usize) -> *mut ::std::os::raw::c_void;
454 pub fn mi_new_realloc(
455 p: *mut ::std::os::raw::c_void,
456 newsize: usize,
457 ) -> *mut ::std::os::raw::c_void;
458 pub fn mi_new_reallocn(
459 p: *mut ::std::os::raw::c_void,
460 newcount: usize,
461 size: usize,
462 ) -> *mut ::std::os::raw::c_void;
463 pub fn mi_heap_alloc_new(heap: *mut mi_heap_t, size: usize) -> *mut ::std::os::raw::c_void;
464 pub fn mi_heap_alloc_new_n(
465 heap: *mut mi_heap_t,
466 count: usize,
467 size: usize,
468 ) -> *mut ::std::os::raw::c_void;
469}