NcmMemoryPool

NcmMemoryPool — Generic memory pool.

Functions

Types and Values

Description

NcmMemoryPool is a generic memory pool, it alloc memory using a user defined function and save it for future use, the memory must be returned to the pool using ncm_memory_pool_return. These functions are thread safe.

Functions

NcmMemoryPoolAlloc ()

gpointer
(*NcmMemoryPoolAlloc) (gpointer userdata);

ncm_memory_pool_new ()

NcmMemoryPool *
ncm_memory_pool_new (NcmMemoryPoolAlloc mp_alloc,
                     gpointer userdata,
                     GDestroyNotify mp_free);

This function prepare a memory pool which allocate memory using mp_alloc and save it for future use, the memory must be returned to the pool using ncm_memory_pool_return. These functions are thread safe.

[skip]

Parameters

mp_alloc

a NcmMemoryPoolAlloc, function used to alloc memory.

 

userdata

userdata pointer for mp_alloc function.

 

mp_free

function used to free memory alloced by mp_alloc.

 

Returns

the memory pool NcmMemoryPool


ncm_memory_pool_free ()

void
ncm_memory_pool_free (NcmMemoryPool *mp,
                      gboolean free_slices);

This function free the memory pool and also the slices if free_slices == TRUE and the pool was built with a free function

Parameters

mp

a NcmMemoryPool, memory pool to be freed

 

free_slices

if true and the pool was built with a free function, free the slices

 

ncm_memory_pool_empty ()

guint
ncm_memory_pool_empty (NcmMemoryPool *mp,
                       gboolean free_slices);

This function free all the slices in the pool and also the slices if free_slices == TRUE and the pool was built with a free function

Parameters

mp

a NcmMemoryPool, memory pool to be emptied

 

free_slices

if true and the pool was built with a free function, free the slices

 

Returns

the number of slices freed


ncm_memory_pool_set_min_size ()

void
ncm_memory_pool_set_min_size (NcmMemoryPool *mp,
                              gsize n);

if n grater than number of slices then allocate new slices until n == slices.

Parameters

mp

a NcmMemoryPool

 

n

minimun number of slices contained in mp

 

ncm_memory_pool_add ()

void
ncm_memory_pool_add (NcmMemoryPool *mp,
                     gpointer p);

Adds an already allocated pointer p to the pool. It will be freed with NcmMemoryPool->free during the pool destruction.

Parameters

mp

a NcmMemoryPool.

 

p

a pointer to an object compatible with the pool.

 

ncm_memory_pool_get ()

gpointer
ncm_memory_pool_get (NcmMemoryPool *mp);

Search in the pool for a non used slice and return the first finded. If none allocate a new one add to the pool and return it.

Parameters

mp

a NcmMemoryPool

 

Returns

a pointer to an unused NcmMemoryPoolSlice.

[transfer full]


ncm_memory_pool_return ()

void
ncm_memory_pool_return (gpointer p);

Put the slice pointed by slice back to the pool.

Parameters

p

slice to be returned to the pool

 

Types and Values

struct NcmMemoryPool

struct NcmMemoryPool {
};

FIXME


struct NcmMemoryPoolSlice

struct NcmMemoryPoolSlice {
  gpointer p;
  gboolean in_use;
  NcmMemoryPool *mp;
};

Members

gpointer p;

Pointer to the actual slice.

 

gboolean in_use;

Boolean determining if the slice is in use.

 

NcmMemoryPool *mp;

A back pointer to the pool.