XROAD
xroad_mem_pool.h File Reference
#include <common/xroad_common_types.h>
#include <common/xroad_common_fwd.h>
#include <stdlib.h>
#include <stdint.h>
Include dependency graph for xroad_mem_pool.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  xroad_mem_pool_create_args_t
 

Macros

#define xroad_mem_pool_create(...)
 
#define __xroad_mem_pool_dtor__   __dtor__(xroad_mem_pool_destructor)
 

Enumerations

enum  xroad_mem_pool_flags_t { xroad_mem_pool_lock = 1 , xroad_mem_pool_dont_concat_unused = 2 }
 

Functions

xroad_mem_pool_t * xroad_mem_pool_create_ex (uint32_t page_size, uint32_t num_pages, int32_t flags)
 
void xroad_mem_pool_destroy (xroad_mem_pool_t *pool)
 
void xroad_mem_pool_destructor (xroad_mem_pool_t **pool)
 
xroad_errno_t xroad_mem_pool_get_errno (xroad_mem_pool_t *pool)
 
xroad_str_t xroad_mem_pool_get_err_descr (xroad_mem_pool_t *pool)
 
void * xroad_mem_pool_malloc (xroad_mem_pool_t *pool, size_t size)
 
void * xroad_mem_pool_calloc (xroad_mem_pool_t *pool, size_t nmemb, size_t size)
 
void * xroad_mem_pool_realloc (xroad_mem_pool_t *pool, void *ptr, size_t size)
 
void xroad_mem_pool_free (xroad_mem_pool_t *pool, void *ptr)
 
size_t xroad_mem_pool_get_size (xroad_mem_pool_t *pool)
 
size_t xroad_mem_pool_get_allocated (xroad_mem_pool_t *pool)
 

Detailed Description

Macro Definition Documentation

◆ __xroad_mem_pool_dtor__

#define __xroad_mem_pool_dtor__   __dtor__(xroad_mem_pool_destructor)

automatic destructor

◆ xroad_mem_pool_create

#define xroad_mem_pool_create (   ...)
Value:
({ \
xroad_mem_pool_create_args_t args = {.page_size = 1024U * 1024U, .num_pages = 1, __VA_ARGS__}; \
xroad_mem_pool_create_ex(args.page_size, args.num_pages, args.flags); \
})

Function Documentation

◆ xroad_mem_pool_calloc()

void* xroad_mem_pool_calloc ( xroad_mem_pool_t *  pool,
size_t  nmemb,
size_t  size 
)

allocate (calloc like) space in memory pool, and zero it

Parameters
[in]pool- memory pool
[in]nmemb- number of elements to allocate
[in]size- size of member to allocate
Returns
pointer to allocated memory, else failed

◆ xroad_mem_pool_create_ex()

xroad_mem_pool_t* xroad_mem_pool_create_ex ( uint32_t  page_size,
uint32_t  num_pages,
int32_t  flags 
)

create new memory pool

Parameters
[in]page_size- default size of memory page (default 1MB)
[in]num_pages- number of memory pages to preallocate (default 1)
[in]flags- memory pool flags (default 0)
Returns
pointer to created memory pool

◆ xroad_mem_pool_destroy()

void xroad_mem_pool_destroy ( xroad_mem_pool_t *  pool)

destroy memory pool

Parameters
[in]pool- memory pool to destroy

◆ xroad_mem_pool_free()

void xroad_mem_pool_free ( xroad_mem_pool_t *  pool,
void *  ptr 
)

free allocated memory in memory pool

Parameters
[in]ptr- memory to free

◆ xroad_mem_pool_get_allocated()

size_t xroad_mem_pool_get_allocated ( xroad_mem_pool_t *  pool)

returns allocated space. For debug purposes only

Parameters
[in]pool- memory pool
Returns
allocated space

◆ xroad_mem_pool_get_err_descr()

xroad_str_t xroad_mem_pool_get_err_descr ( xroad_mem_pool_t *  pool)

gets error description

Parameters
[in]pool- memory pool instance
Returns
error description

◆ xroad_mem_pool_get_errno()

xroad_errno_t xroad_mem_pool_get_errno ( xroad_mem_pool_t *  pool)

gets errno, if any

Parameters
[in]pool- memory pool instance
Returns
errno value

◆ xroad_mem_pool_get_size()

size_t xroad_mem_pool_get_size ( xroad_mem_pool_t *  pool)

returns pool reserved space size. For debug purposes only

Parameters
[in]pool- memory pool
Returns
reserved space

◆ xroad_mem_pool_malloc()

void* xroad_mem_pool_malloc ( xroad_mem_pool_t *  pool,
size_t  size 
)

allocate (malloc) space in memory pool

Parameters
[in]pool- memory pool
[in]size- memory size to allocate
Returns
pointer to allocated memory, else failed

◆ xroad_mem_pool_realloc()

void* xroad_mem_pool_realloc ( xroad_mem_pool_t *  pool,
void *  ptr,
size_t  size 
)

realloc memory chunk in memory pool

Parameters
[in]pool- memory pool
[in]ptr- memory to realloc
[in]size- new memory chunk size
Returns
reallocated memory chunk