The Freechain Handler.
More...
|
static __inline__ void | _Freechain_Initialize (Freechain_Control *freechain, void *initial_nodes, size_t number_nodes, size_t node_size) |
| Initializes a freechain. More...
|
|
static __inline__ bool | _Freechain_Is_empty (const Freechain_Control *freechain) |
| Return true if the freechain is empty, otherwise false. More...
|
|
static __inline__ void * | _Freechain_Pop (Freechain_Control *freechain) |
| Pops a node from the freechain. More...
|
|
static void __inline__ | _Freechain_Push (Freechain_Control *freechain, void *node) |
| Pushes a node back to the freechain. More...
|
|
void * | _Freechain_Extend (Freechain_Control *freechain, Freechain_Allocator allocator, size_t number_nodes_to_extend, size_t node_size) |
| Extend the freechain with new nodes. More...
|
|
void * | _Freechain_Get (Freechain_Control *freechain, Freechain_Allocator allocator, size_t number_nodes_to_extend, size_t node_size) |
| Gets a node from the freechain. More...
|
|
void | _Freechain_Put (Freechain_Control *freechain, void *node) |
| Puts a node back onto the freechain. More...
|
|
The Freechain Handler.
The Freechain Handler is used to manage a chain of nodes, of which size can automatically increase when there is no free node left. This handler provides one data structure: Freechain_Control.
◆ _Freechain_Extend()
Extend the freechain with new nodes.
- Parameters
-
freechain | The freechain control. |
allocator | The allocator function. |
number_nodes_to_extend | The number of nodes to extend. |
node_size | The node size. |
- Return values
-
NULL | The extend operation failed. |
nodes | Pointer to the new nodes. |
◆ _Freechain_Get()
Gets a node from the freechain.
- Parameters
-
[in,out] | freechain | The freechain control. |
| allocator | The allocator function. |
| number_nodes_to_extend | The number of nodes in the case an extend is necessary due to an empty freechain. |
[in] | node_size | The node size. |
- Return values
-
NULL | The freechain is empty and the extend operation failed. |
pointer | Pointer to a node. The node ownership passes to the caller. |
◆ _Freechain_Initialize()
static __inline__ void _Freechain_Initialize |
( |
Freechain_Control * |
freechain, |
|
|
void * |
initial_nodes, |
|
|
size_t |
number_nodes, |
|
|
size_t |
node_size |
|
) |
| |
|
static |
Initializes a freechain.
This routine initializes the freechain control structure to manage a chain of nodes. In the case the freechain is empty the extend handler is called to get more nodes.
- Parameters
-
[out] | freechain | The freechain control to initialize. |
[out] | initial_nodes | Array with the initial nodes. |
| number_nodes | The initial number of nodes. |
| node_size | The node size. |
Definition at line 50 of file freechainimpl.h.
◆ _Freechain_Is_empty()
Return true if the freechain is empty, otherwise false.
- Parameters
-
freechain | The freechain control. |
Definition at line 70 of file freechainimpl.h.
◆ _Freechain_Pop()
Pops a node from the freechain.
The freechain shall not be empty.
- Parameters
-
freechain | The freechain control. |
Definition at line 84 of file freechainimpl.h.
◆ _Freechain_Push()
static void __inline__ _Freechain_Push |
( |
Freechain_Control * |
freechain, |
|
|
void * |
node |
|
) |
| |
|
static |
Pushes a node back to the freechain.
- Parameters
-
freechain | The freechain control. |
node | The node to push back. The node shall not be NULL . |
Definition at line 95 of file freechainimpl.h.
◆ _Freechain_Put()
Puts a node back onto the freechain.
- Parameters
-
[in,out] | freechain | The freechain control. |
[out] | node | The node to put back. The node may be NULL , in this case the function does nothing. |