RTEMS  5.0.0
Files | Data Structures | Typedefs | Functions
Freechain Handler

Files

file  freechain.h
 Freechain Handler API.
 
file  freechain.c
 Freechain Handler Implementation.
 

Data Structures

struct  Freechain_Control
 The freechain control. More...
 

Typedefs

typedef void *(* Freechain_Allocator) (size_t size)
 Allocator function.
 

Functions

RTEMS_INLINE_ROUTINE void _Freechain_Initialize (Freechain_Control *freechain, void *initial_nodes, size_t number_nodes, size_t node_size)
 Initializes a freechain. 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...
 

Detailed Description

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.

Function Documentation

◆ _Freechain_Get()

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.

Parameters
[in]freechainThe freechain control.
[in]allocatorThe allocator function.
[in]number_nodes_to_extendThe number of nodes in case an extend is necessary due to an empty freechain.
[in]node_sizeThe node size.
Return values
NULLThe freechain is empty and the extend operation failed.
otherwisePointer to a node. The node ownership passes to the caller.

◆ _Freechain_Initialize()

RTEMS_INLINE_ROUTINE void _Freechain_Initialize ( Freechain_Control freechain,
void *  initial_nodes,
size_t  number_nodes,
size_t  node_size 
)

Initializes a freechain.

This routine initializes the freechain control structure to manage a chain of nodes. In case the freechain is empty the extend handler is called to get more nodes.

Parameters
[in]freechainThe freechain control to initialize.
[in]initial_nodesArray with the initial nodes.
[in]number_nodesThe initial number of nodes.
[in]node_sizeThe node size.

◆ _Freechain_Put()

void _Freechain_Put ( Freechain_Control freechain,
void *  node 
)

Puts a node back onto the freechain.

Parameters
[in]freechainThe freechain control.
[in]nodeThe node to put back. The node may be NULL, in this case the function does nothing.