43 void **data; |
43 void **data; |
44 size_t ndata; |
44 size_t ndata; |
45 size_t size; |
45 size_t size; |
46 } UcxMempool; |
46 } UcxMempool; |
47 |
47 |
48 #define UCX_ALLOCATOR_MEMPOOL(pool) {pool, \ |
|
49 (ucx_allocator_malloc) ucx_mempool_malloc, \ |
|
50 (ucx_allocator_calloc) ucx_mempool_calloc, \ |
|
51 (ucx_allocator_realloc) ucx_mempool_realloc} |
|
52 |
48 |
53 #define ucx_mempool_new_default() ucx_mempool_new(16) |
49 #define ucx_mempool_new_default() ucx_mempool_new(16) |
54 UcxMempool *ucx_mempool_new(size_t n); |
50 UcxMempool *ucx_mempool_new(size_t n); |
55 int ucx_mempool_chcap(UcxMempool *pool, size_t newcap); |
51 int ucx_mempool_chcap(UcxMempool *pool, size_t newcap); |
56 |
52 |
57 void *ucx_mempool_malloc(UcxMempool *pool, size_t n); |
53 void *ucx_mempool_malloc(UcxMempool *pool, size_t n); |
58 void *ucx_mempool_calloc(UcxMempool *pool, size_t nelem, size_t elsize); |
54 void *ucx_mempool_calloc(UcxMempool *pool, size_t nelem, size_t elsize); |
59 void *ucx_mempool_realloc(UcxMempool *pool, void *ptr, size_t n); |
55 void *ucx_mempool_realloc(UcxMempool *pool, void *ptr, size_t n); |
|
56 void ucx_mempool_free(UcxMempool *pool, void *ptr); |
60 |
57 |
61 void ucx_mempool_free(UcxMempool *pool); |
58 void ucx_mempool_destroy(UcxMempool *pool); |
62 |
59 |
63 void ucx_mempool_set_destr(void *ptr, ucx_destructor func); |
60 void ucx_mempool_set_destr(void *ptr, ucx_destructor func); |
64 void ucx_mempool_reg_destr(UcxMempool *pool, void *ptr, ucx_destructor destr); |
61 void ucx_mempool_reg_destr(UcxMempool *pool, void *ptr, ucx_destructor destr); |
65 |
62 |
|
63 UcxAllocator* ucx_mempool_allocator(UcxMempool *pool); |
66 |
64 |
67 #ifdef __cplusplus |
65 #ifdef __cplusplus |
68 } |
66 } |
69 #endif |
67 #endif |
70 |
68 |