XROAD
xroad_mem_pool.h
Go to the documentation of this file.
1 
6 #pragma once
7 
10 #include <stdlib.h>
11 #include <stdint.h>
12 
13 #ifdef __cplusplus
14 extern "C"
15 {
16 #endif
17 
18 typedef enum
19 {
20  xroad_mem_pool_lock = 1,
21  xroad_mem_pool_dont_concat_unused = 2
22 } xroad_mem_pool_flags_t;
23 
24 typedef struct
25 {
26  int32_t page_size;
27  int32_t num_pages;
28  int32_t flags;
30 
38 xroad_mem_pool_t* xroad_mem_pool_create_ex(uint32_t page_size, uint32_t num_pages, int32_t flags);
39 
40 #define xroad_mem_pool_create(...) \
41 ({ \
42  xroad_mem_pool_create_args_t args = {.page_size = 1024U * 1024U, .num_pages = 1, __VA_ARGS__}; \
43  xroad_mem_pool_create_ex(args.page_size, args.num_pages, args.flags); \
44 })
45 
50 void xroad_mem_pool_destroy(xroad_mem_pool_t* pool);
51 
55 #define __xroad_mem_pool_dtor__ __dtor__(xroad_mem_pool_destructor)
56 void xroad_mem_pool_destructor(xroad_mem_pool_t** pool);
57 
63 xroad_errno_t xroad_mem_pool_get_errno(xroad_mem_pool_t* pool);
64 
70 xroad_str_t xroad_mem_pool_get_err_descr(xroad_mem_pool_t* pool);
71 
78 void* xroad_mem_pool_malloc(xroad_mem_pool_t* pool, size_t size);
79 
87 void* xroad_mem_pool_calloc(xroad_mem_pool_t* pool, size_t nmemb, size_t size);
88 
96 void* xroad_mem_pool_realloc(xroad_mem_pool_t* pool, void* ptr, size_t size);
97 
102 void xroad_mem_pool_free(xroad_mem_pool_t* pool, void* ptr);
103 
109 size_t xroad_mem_pool_get_size(xroad_mem_pool_t* pool);
110 
116 size_t xroad_mem_pool_get_allocated(xroad_mem_pool_t* pool);
117 
118 #ifdef __cplusplus
119 }
120 #endif
Definition: xroad_mem_pool.h:25
Definition: xroad_string.h:29
void xroad_mem_pool_destroy(xroad_mem_pool_t *pool)
void * xroad_mem_pool_calloc(xroad_mem_pool_t *pool, size_t nmemb, size_t size)
size_t xroad_mem_pool_get_allocated(xroad_mem_pool_t *pool)
xroad_errno_t xroad_mem_pool_get_errno(xroad_mem_pool_t *pool)
void xroad_mem_pool_free(xroad_mem_pool_t *pool, void *ptr)
void * xroad_mem_pool_malloc(xroad_mem_pool_t *pool, size_t size)
xroad_mem_pool_t * xroad_mem_pool_create_ex(uint32_t page_size, uint32_t num_pages, int32_t flags)
size_t xroad_mem_pool_get_size(xroad_mem_pool_t *pool)
void * xroad_mem_pool_realloc(xroad_mem_pool_t *pool, void *ptr, size_t size)
xroad_str_t xroad_mem_pool_get_err_descr(xroad_mem_pool_t *pool)