Interface: tos.interfaces.Pool

interface Pool<typedef t>

An allocation pool of a specific type memory objects. The Pool allows components to allocate (get) and deallocate (put) elements. The pool does not require that deallocations be items which were originally allocated. E.g., a program can create two pools of the same type and pass items between them. This allows, for example, a component to allocate a pool of message buffers and freely buffer swap them on Receive.receive events.

Author:
Philip Levis
Kyle Jamieson
Date:
$Date: 2008/06/04 03:00:31 $

Commands
command bool empty() Returns whether there any elements remaining in the pool.
command t *get() Allocate an element from the pool.
command uint8_t maxSize() Returns the maximum number of elements in the pool (the size of a full pool).
command error_t put(t *newVal) Deallocate an object, putting it back into the pool.
command uint8_t size() Returns how many elements are in the pool.

Commands - Details

empty

command bool empty()

Returns whether there any elements remaining in the pool. If empty returns TRUE, then get will return NULL. If empty returns FALSE, then get will return a pointer to an object.

Returns:
Whether the pool is empty.

get

command t *get()

Allocate an element from the pool.

Returns:
't* ONE_NOK' A pointer if the pool is not empty, NULL if the pool is empty.

maxSize

command uint8_t maxSize()

Returns the maximum number of elements in the pool (the size of a full pool).

Returns:
Maximum size.

put

command error_t put(t *newVal)

Deallocate an object, putting it back into the pool.

Parameters:
't* ONE newVal'
Returns:
SUCCESS if the entry was put in successfully, FAIL if the pool is full.

size

command uint8_t size()

Returns how many elements are in the pool. If size returns 0, empty() will return TRUE. If size returns a non-zero value, empty() will return FALSE. The return value of size is always <e; the return value of maxSize().

Returns:
How many elements are in the pool.