36 #endif |
36 #endif |
37 |
37 |
38 typedef void*(*ucx_allocator_malloc)(void *pool, size_t n); |
38 typedef void*(*ucx_allocator_malloc)(void *pool, size_t n); |
39 typedef void*(*ucx_allocator_calloc)(void *pool, size_t n, size_t size); |
39 typedef void*(*ucx_allocator_calloc)(void *pool, size_t n, size_t size); |
40 typedef void*(*ucx_allocator_realloc)(void *pool, void *data, size_t n); |
40 typedef void*(*ucx_allocator_realloc)(void *pool, void *data, size_t n); |
|
41 typedef void(*ucx_allocator_free)(void *pool, void *data); |
41 |
42 |
42 typedef struct { |
43 typedef struct { |
43 void *pool; |
44 void *pool; |
44 ucx_allocator_malloc malloc; |
45 ucx_allocator_malloc malloc; |
45 ucx_allocator_calloc calloc; |
46 ucx_allocator_calloc calloc; |
46 ucx_allocator_realloc realloc; |
47 ucx_allocator_realloc realloc; |
|
48 ucx_allocator_free free; |
47 } UcxAllocator; |
49 } UcxAllocator; |
|
50 |
|
51 UcxAllocator *ucx_default_allocator(); |
48 |
52 |
49 void *ucx_default_malloc(void *ignore, size_t n); |
53 void *ucx_default_malloc(void *ignore, size_t n); |
50 void *ucx_default_calloc(void *ignore, size_t n, size_t size); |
54 void *ucx_default_calloc(void *ignore, size_t n, size_t size); |
51 void *ucx_default_realloc(void *ignore, void *data, size_t n); |
55 void *ucx_default_realloc(void *ignore, void *data, size_t n); |
|
56 void ucx_default_free(void *ignore, void *data); |
52 |
57 |
53 #define UCX_ALLOCATOR_DEFAULT {NULL, \ |
58 #define UCX_ALLOCATOR_DEFAULT {NULL, \ |
54 ucx_default_malloc, ucx_default_calloc, ucx_default_realloc} |
59 ucx_default_malloc, ucx_default_calloc, ucx_default_realloc, \ |
|
60 ucx_default_free } |
55 |
61 |
56 #ifdef __cplusplus |
62 #ifdef __cplusplus |
57 } |
63 } |
58 #endif |
64 #endif |
59 |
65 |