eCosTM Reference Manual
Prev | Chapter 5. Native kernel C language API | Next

# Memory pools

There are two sorts of memory pools. A variable size memory pool is for allocating blocks of any size. A fixed size memory pool, has the block size specified when the pool is created and only provides blocks of that size.

Blocking, non-blocking and “blocking with time-out” versions of these calls are provided.

`void cyg_mempool_var_create`(void *base, cyg_int32 size, cyg_handle_t *handle, cyg_mempool_var *var);

Creates a variable size memory pool. The parameters are:

`base`

  base of memory to use for pool

`size`

  size of memory pool in bytes

`handle`

  returned handle of memory pool

`var`

  space to put pool structure in

`void cyg_mempool_var_delete`(cyg_handle_t varpool);

Deletes the variable size memory pool `varpool`.

`void *cyg_mempool_var_alloc`(cyg_handle_t varpool, cyg_int32 size);

Allocates a block of length `size`. This will block until the memory becomes available.

`void *cyg_mempool_var_timed_alloc`(cyg_handle_t varpool, cyg_int32 size, cyg_tick_count_t abstime);

Allocates a block of length size. If the requested amount of memory is not available, it will wait until `abstime` before giving up and returning `NULL`.

`void *cyg_mempool_var_try_alloc`(cyg_handle_t varpool, cyg_int32 size);

Allocates a block of length size. `NULL` is returned if not enough is available.

`void cyg_mempool_var_free`(cyg_handle_t varpool, void *p);

Frees memory back into variable size pool.

`cyg_bool_t cyg_mempool_var_waiting`(cyg_handle_t varpool);

Returns true if any threads are waiting for memory in `pool`.

    typedef struct {
     cyg_int32 totalmem;
     cyg_int32 freemem;
     void *base;
     cyg_int32 size;
     cyg_int32 blocksize;
     cyg_int32 maxfree; // The largest free block
    } cyg_mempool_info;

`void cyg_mempool_var_get_info`(cyg_handle_t varpool, cyg_mempool_info *info);

Puts information about a variable memory pool into the structure provided.

`void cyg_mempool_fix_create`(void *base, cyg_int32 size, cyg_int32 blocksize, cyg_handle_t *handle, cyg_mempool_fix *fix);

Create a fixed size memory pool. This function takes the following parameters:

`base`

  base of memory to use for pool

`size`

  size of total space requested

`blocksize`

  size of individual elements

`handle`

  returned handle of memory pool

`fix`

  space to put pool structure in

`void cyg_mempool_fix_delete`(cyg_handle_t fixpool);

Deletes the given fixed size memory pool.

`void *cyg_mempool_fix_alloc`(cyg_handle_t fixpool);

Allocates a block. If the memory is not available immediately, this blocks until the memory becomes available.

`void *cyg_mempool_fix_timed_alloc`(cyg_handle_t fixpool, cyg_tick_count_t abstime);

Allocates a block. If the memory is not already available, it will try until `abstime` before giving up and returning a `NULL`.

`void *cyg_mempool_fix_try_alloc`(cyg_handle_t fixpool);

Allocates a block. NULL is returned if no memory is available.

`void cyg_mempool_fix_free`(cyg_handle_t fixpool, void *p);

Frees memory back into fixed size pool.

`cyg_bool_t cyg_mempool_fix_waiting`(cyg_handle_t fixpool);

Returns true if there are any threads waiting for memory in the given memory pool.

`void cyg_mempool_fix_get_info`(cyg_handle_t fixpool, cyg_mempool_info *info);

Puts information about a variable memory pool into the structure provided.

Prev | Home | Next
Synchronization | Up | Message boxes