Tizen Native API
4.0
|
This group discusses the functions that provide memory pool management.
Several mempools are available:
chained_pool:
It is the default one. It allocates a big chunk of memory with malloc() and splits the result into 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 calls malloc() just one time for the requested number of items. This is useful when you know in advance how many objects of some type live during the life of the mempool. Functions | |
Eina_Mempool * | eina_mempool_add (const char *name, const char *context, const char *options,...) |
Creates a new mempool of the given type. | |
void | eina_mempool_del (Eina_Mempool *mp) |
Deletes the given mempool. | |
static void * | eina_mempool_realloc (Eina_Mempool *mp, void *element, unsigned int size) |
Re-allocates an amount memory by the given mempool. | |
static void * | eina_mempool_malloc (Eina_Mempool *mp, unsigned int size) |
Allocates memory using the given mempool. | |
static void * | eina_mempool_calloc (Eina_Mempool *mp, unsigned int size) |
Allocates and zeros memory using the given mempool. | |
static void | eina_mempool_free (Eina_Mempool *mp, void *element) |
Frees resources previously allocated by the given mempool. | |
void | eina_mempool_repack (Eina_Mempool *mp, Eina_Mempool_Repack_Cb cb, void *data) |
Repacks the objects in the mempool. | |
void | eina_mempool_gc (Eina_Mempool *mp) |
Runs a garbage collection cycle. | |
void | eina_mempool_statistics (Eina_Mempool *mp) |
Has the backend update its internal statistics. | |
Eina_Bool | eina_mempool_register (Eina_Mempool_Backend *be) |
Registers the given memory pool backend. | |
void | eina_mempool_unregister (Eina_Mempool_Backend *be) |
Unregisters the given memory pool backend. | |
static unsigned int | eina_mempool_alignof (unsigned int size) |
Computes the alignment that would be used when allocating a object of size size . | |
Typedefs | |
typedef struct _Eina_Mempool | Eina_Mempool |
The opaque type for the mempool structure. | |
typedef struct _Eina_Mempool_Backend | Eina_Mempool_Backend |
The opaque type for the mempool backend type. | |
typedef void(* | Eina_Mempool_Repack_Cb )(void *dst, void *src, void *data) |
The callback type which is called when the mempool "repacks" its data. |
The callback type which is called when the mempool "repacks" its data.
I.e. moves it around to optimize the way it is stored in memory. This is useful to improve data locality and to free internal pools back to the OS.
Eina_Mempool* eina_mempool_add | ( | const char * | name, |
const char * | context, | ||
const char * | options, | ||
... | |||
) |
Creates a new mempool of the given type.
[in] | name | Name of the mempool kind to use. |
[in] | context | Identifier of the mempool created (for debug purposes). |
[in] | options | Unused. Use the variable arguments list instead to pass options to the mempool. |
[in] | ... | Additional options to pass to the allocator; depends entirely on the type of mempool ("int pool size" for chained and "int item_size" for one_big. |
static unsigned int eina_mempool_alignof | ( | unsigned int | size | ) | [static] |
Computes the alignment that would be used when allocating a object of size size
.
[in] | size |
size
.static void* eina_mempool_calloc | ( | Eina_Mempool * | mp, |
unsigned int | size | ||
) | [static] |
Allocates and zeros memory using the given mempool.
[in] | mp | The mempool |
[in] | size | The size in bytes to allocate |
This function allocates, zeroes, and returns size
bytes using the mempool mp
. If not used anymore, the data must be freed with eina_mempool_free().
mp
.void eina_mempool_del | ( | Eina_Mempool * | mp | ) |
Deletes the given mempool.
[in] | mp | The mempool to delete |
static void eina_mempool_free | ( | Eina_Mempool * | mp, |
void * | element | ||
) | [static] |
Frees resources previously allocated by the given mempool.
[in] | mp | The mempool |
[in] | element | The data to free |
This function frees element
allocated by mp
. element
must have been obtained from eina_mempool_malloc(), eina_mempool_calloc(), or eina_mempool_realloc().
mp
.void eina_mempool_gc | ( | Eina_Mempool * | mp | ) |
Runs a garbage collection cycle.
[in] | mp | The mempool |
static void* eina_mempool_malloc | ( | Eina_Mempool * | mp, |
unsigned int | size | ||
) | [static] |
Allocates memory using the given mempool.
[in] | mp | The mempool |
[in] | size | The size in bytes to allocate |
size
bytes using the mempool mp
. If not used anymore, the data must be freed with eina_mempool_free(). mp
.static void* eina_mempool_realloc | ( | Eina_Mempool * | mp, |
void * | element, | ||
unsigned int | size | ||
) | [static] |
Re-allocates an amount memory by the given mempool.
[in] | mp | The mempool |
[in] | element | The element to re-allocate |
[in] | size | The size in bytes to re-allocate |
element
with size
bytes using the mempool mp
. If not used anymore, the data must be freed with eina_mempool_free(). mp
.Registers the given memory pool backend.
[in] | be | The backend |
void eina_mempool_repack | ( | Eina_Mempool * | mp, |
Eina_Mempool_Repack_Cb | cb, | ||
void * | data | ||
) |
Repacks the objects in the mempool.
[in] | mp | The mempool |
[in] | cb | A callback to update the pointers the objects with their new location |
[in] | data | Data to pass as third argument to cb |
void eina_mempool_statistics | ( | Eina_Mempool * | mp | ) |
Has the backend update its internal statistics.
[in] | mp | The mempool |
void eina_mempool_unregister | ( | Eina_Mempool_Backend * | be | ) |
Unregisters the given memory pool backend.
[in] | be | The backend |