![]() |
RTEMS 6.1
|
The chain container provides data structures and directives to manage user-defined data structures in doubly-linked lists. More...
Files | |
| file | chain.h |
| This header file provides the Chains API. | |
| file | chainappendnotify.c |
| This source file contains the implementation of rtems_chain_append_with_notification(). | |
| file | chaingetnotify.c |
| This source file contains the implementation of rtems_chain_get_with_notification(). | |
| file | chaingetwait.c |
| This source file contains the implementation of rtems_chain_get_with_wait(). | |
| file | chainprependnotify.c |
| This source file contains the implementation of rtems_chain_prepend_with_notification(). | |
| file | chainprotected.c |
| This source file contains the implementation of rtems_chain_append(), rtems_chain_append_with_empty_check(), rtems_chain_extract(), rtems_chain_get(), rtems_chain_get_with_empty_check(), rtems_chain_insert(), rtems_chain_prepend(), and rtems_chain_prepend_with_empty_check(). | |
Macros | |
| #define | RTEMS_CHAIN_INITIALIZER_EMPTY(name) CHAIN_INITIALIZER_EMPTY( name ) |
| Chain initializer for an empty chain with designator name. | |
| #define | RTEMS_CHAIN_INITIALIZER_ONE_NODE(node) CHAIN_INITIALIZER_ONE_NODE( node ) |
| Chain initializer for a chain with one node. | |
| #define | RTEMS_CHAIN_NODE_INITIALIZER_ONE_NODE_CHAIN(chain) CHAIN_NODE_INITIALIZER_ONE_NODE_CHAIN( chain ) |
| Chain node initializer for a chain containing exactly this node. | |
| #define | RTEMS_CHAIN_DEFINE_EMPTY(name) rtems_chain_control name = RTEMS_CHAIN_INITIALIZER_EMPTY( name ) |
| Chain definition for an empty chain with designator name. | |
Typedefs | |
| typedef Chain_Node | rtems_chain_node |
| typedef Chain_Control | rtems_chain_control |
Functions | |
| rtems_status_code | rtems_chain_append_with_notification (rtems_chain_control *chain, rtems_chain_node *node, rtems_id task, rtems_event_set events) |
| Appends the node to the chain and sends the events to the task if the chain was empty before the append. | |
| rtems_status_code | rtems_chain_prepend_with_notification (rtems_chain_control *chain, rtems_chain_node *node, rtems_id task, rtems_event_set events) |
| Prepends the node to the chain and sends the events to the task if the chain was empty before the prepend. | |
| rtems_status_code | rtems_chain_get_with_notification (rtems_chain_control *chain, rtems_id task, rtems_event_set events, rtems_chain_node **node) |
| Gets the first node of the chain and sends the events to the task if the chain is empty after the get. | |
| rtems_status_code | rtems_chain_get_with_wait (rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node) |
| Gets the first node of the chain and sends the events to the task if the chain is empty afterwards. | |
| void | rtems_chain_extract (rtems_chain_node *the_node) |
| Extract the specified node from a chain. | |
| rtems_chain_node * | rtems_chain_get (rtems_chain_control *the_chain) |
| Obtain the first node on a chain. | |
| void | rtems_chain_insert (rtems_chain_node *after_node, rtems_chain_node *the_node) |
| Insert a node on a chain. | |
| void | rtems_chain_append (rtems_chain_control *the_chain, rtems_chain_node *the_node) |
| Append a node on the end of a chain. | |
| void | rtems_chain_prepend (rtems_chain_control *the_chain, rtems_chain_node *the_node) |
| Prepend a node. | |
| bool | rtems_chain_append_with_empty_check (rtems_chain_control *chain, rtems_chain_node *node) |
| Checks if the chain is empty and appends the node. | |
| bool | rtems_chain_prepend_with_empty_check (rtems_chain_control *chain, rtems_chain_node *node) |
| Checks if the chain is empty and prepends the node. | |
| bool | rtems_chain_get_with_empty_check (rtems_chain_control *chain, rtems_chain_node **node) |
| Tries to get the first node and check if the chain is empty afterwards. | |
The chain container provides data structures and directives to manage user-defined data structures in doubly-linked lists.
| #define RTEMS_CHAIN_INITIALIZER_ONE_NODE | ( | node | ) | CHAIN_INITIALIZER_ONE_NODE( node ) |
Chain initializer for a chain with one node.
| #define RTEMS_CHAIN_NODE_INITIALIZER_ONE_NODE_CHAIN | ( | chain | ) | CHAIN_NODE_INITIALIZER_ONE_NODE_CHAIN( chain ) |
Chain node initializer for a chain containing exactly this node.
| void rtems_chain_append | ( | rtems_chain_control * | the_chain, |
| rtems_chain_node * | the_node | ||
| ) |
Append a node on the end of a chain.
This routine appends the_node onto the end of the_chain.
NOTE: It disables interrupts to ensure the atomicity of the append operation.
| bool rtems_chain_append_with_empty_check | ( | rtems_chain_control * | chain, |
| rtems_chain_node * | node | ||
| ) |
Checks if the chain is empty and appends the node.
Interrupts are disabled to ensure the atomicity of the operation.
| true | The chain was empty before the append. |
| false | The chain contained at least one node before the append. |
| rtems_status_code rtems_chain_append_with_notification | ( | rtems_chain_control * | chain, |
| rtems_chain_node * | node, | ||
| rtems_id | task, | ||
| rtems_event_set | events | ||
| ) |
Appends the node to the chain and sends the events to the task if the chain was empty before the append.
| RTEMS_SUCCESSFUL | Successful operation. |
| RTEMS_INVALID_ID | No such task. |
| void rtems_chain_extract | ( | rtems_chain_node * | the_node | ) |
Extract the specified node from a chain.
This routine extracts the_node from the chain on which it resides. It disables interrupts to ensure the atomicity of the extract operation.
| rtems_chain_node * rtems_chain_get | ( | rtems_chain_control * | the_chain | ) |
Obtain the first node on a chain.
This function removes the first node from the_chain and returns a pointer to that node. If the_chain is empty, then NULL is returned.
NOTE: It disables interrupts to ensure the atomicity of the get operation.
| bool rtems_chain_get_with_empty_check | ( | rtems_chain_control * | chain, |
| rtems_chain_node ** | node | ||
| ) |
Tries to get the first node and check if the chain is empty afterwards.
This function removes the first node from the chain and returns a pointer to that node in node. If the chain is empty, then NULL is returned.
Interrupts are disabled to ensure the atomicity of the operation.
| true | The chain is empty after the node removal. |
| false | The chain contained at least one node after the node removal. |
| rtems_status_code rtems_chain_get_with_notification | ( | rtems_chain_control * | chain, |
| rtems_id | task, | ||
| rtems_event_set | events, | ||
| rtems_chain_node ** | node | ||
| ) |
Gets the first node of the chain and sends the events to the task if the chain is empty after the get.
| RTEMS_SUCCESSFUL | Successful operation. |
| RTEMS_INVALID_ID | No such task. |
| rtems_status_code rtems_chain_get_with_wait | ( | rtems_chain_control * | chain, |
| rtems_event_set | events, | ||
| rtems_interval | timeout, | ||
| rtems_chain_node ** | node | ||
| ) |
Gets the first node of the chain and sends the events to the task if the chain is empty afterwards.
| RTEMS_SUCCESSFUL | Successful operation. |
| RTEMS_TIMEOUT | Timeout. |
| void rtems_chain_insert | ( | rtems_chain_node * | after_node, |
| rtems_chain_node * | the_node | ||
| ) |
Insert a node on a chain.
This routine inserts the_node on a chain immediately following after_node.
NOTE: It disables interrupts to ensure the atomicity of the extract operation.
| void rtems_chain_prepend | ( | rtems_chain_control * | the_chain, |
| rtems_chain_node * | the_node | ||
| ) |
Prepend a node.
This routine prepends the_node onto the front of the_chain.
| [in] | the_chain | is the chain to be operated upon. |
| [in] | the_node | is the node to be prepended. |
NOTE: It disables interrupts to ensure the atomicity of the prepend operation.
| bool rtems_chain_prepend_with_empty_check | ( | rtems_chain_control * | chain, |
| rtems_chain_node * | node | ||
| ) |
Checks if the chain is empty and prepends the node.
Interrupts are disabled to ensure the atomicity of the operation.
| true | The chain was empty before the prepend. |
| false | The chain contained at least one node before the prepend. |
| rtems_status_code rtems_chain_prepend_with_notification | ( | rtems_chain_control * | chain, |
| rtems_chain_node * | node, | ||
| rtems_id | task, | ||
| rtems_event_set | events | ||
| ) |
Prepends the node to the chain and sends the events to the task if the chain was empty before the prepend.
| RTEMS_SUCCESSFUL | Successful operation. |
| RTEMS_INVALID_ID | No such task. |