Memory Pool

These functions provide memory pool management. More...

Typedefs

typedef struct _Eina_Mempool Eina_Mempool
 Mempool type.
 
typedef struct _Eina_Mempool_Backend Eina_Mempool_Backend
 Mempool backend type.
 
typedef void(* Eina_Mempool_Repack_Cb) (void *dst, void *src, void *data)
 Type for a callback who need to unreference an old object from a mempool and reference the new one instead. More...
 

Functions

Eina_Mempooleina_mempool_add (const char *module, const char *context, const char *options,...)
 
void eina_mempool_del (Eina_Mempool *mp)
 
static void * eina_mempool_realloc (Eina_Mempool *mp, void *element, unsigned int size)
 
static void * eina_mempool_malloc (Eina_Mempool *mp, unsigned int size)
 
static void eina_mempool_free (Eina_Mempool *mp, void *element)
 
void eina_mempool_repack (Eina_Mempool *mp, Eina_Mempool_Repack_Cb cb, void *data)
 
void eina_mempool_gc (Eina_Mempool *mp)
 
void eina_mempool_statistics (Eina_Mempool *mp)
 
Eina_Bool eina_mempool_register (Eina_Mempool_Backend *be)
 
void eina_mempool_unregister (Eina_Mempool_Backend *be)
 
static unsigned int eina_mempool_alignof (unsigned int size)
 

Variables

Eina_Error EINA_ERROR_NOT_MEMPOOL_MODULE
 

Detailed Description

These functions provide memory pool management.

Several mempool are available:

  • chained_pool: It is the default one. It allocates a big chunk of memory with malloc() and split the result in chunks of the requested size that are pushed inside a stack. When requested, it takes this pointer from the stack to give them to whoever wants them.
  • pass_through: it just call malloc() and free(). It may be faster on some computers than using our own allocators (like having a huge L2 cache, over 4MB).
  • one_big: It call just one time malloc for the requested number of items. Useful when you know in advance how many object of some type will live during the life of the mempool.

Typedef Documentation

§ Eina_Mempool_Repack_Cb

Eina_Mempool_Repack_Cb

Type for a callback who need to unreference an old object from a mempool and reference the new one instead.

Memcpy is taken care by the mempool.