RTEMS: cpukit/include/rtems/chain.h Source File

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
chain.h
Go to the documentation of this file.
1
7/*
8 * Copyright (c) 2010-2014 embedded brains GmbH.
9 *
10 * COPYRIGHT (c) 1989-2008.
11 * On-Line Applications Research Corporation (OAR).
12 *
13 * The license and distribution terms for this file may be
14 * found in the file LICENSE in this distribution or at
15 * http://www.rtems.org/license/LICENSE.
16 */
17
18#ifndef _RTEMS_CHAIN_H
19#define _RTEMS_CHAIN_H
20
21#include <rtems/score/chainimpl.h>
22#include <rtems/rtems/event.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
37typedef Chain_Node rtems_chain_node;
38
39typedef Chain_Control rtems_chain_control;
40
44#define RTEMS_CHAIN_INITIALIZER_EMPTY( name ) \
45 CHAIN_INITIALIZER_EMPTY( name )
46
52#define RTEMS_CHAIN_INITIALIZER_ONE_NODE( node ) \
53 CHAIN_INITIALIZER_ONE_NODE( node )
54
60#define RTEMS_CHAIN_NODE_INITIALIZER_ONE_NODE_CHAIN( chain ) \
61 CHAIN_NODE_INITIALIZER_ONE_NODE_CHAIN( chain )
62
66#define RTEMS_CHAIN_DEFINE_EMPTY( name ) \
67 rtems_chain_control name = RTEMS_CHAIN_INITIALIZER_EMPTY( name )
68
78 rtems_status_code rtems_chain_append_with_notification(
79 rtems_chain_control *chain,
80 rtems_chain_node *node,
81 rtems_id task,
82 rtems_event_set events
83);
84
94 rtems_status_code rtems_chain_prepend_with_notification(
95 rtems_chain_control *chain,
96 rtems_chain_node *node,
97 rtems_id task,
98 rtems_event_set events
99);
100
110 rtems_status_code rtems_chain_get_with_notification(
111 rtems_chain_control *chain,
112 rtems_id task,
113 rtems_event_set events,
114 rtems_chain_node **node
115);
116
126 rtems_status_code rtems_chain_get_with_wait(
127 rtems_chain_control *chain,
128 rtems_event_set events,
129 rtems_interval timeout,
130 rtems_chain_node **node
131);
132
146 RTEMS_INLINE_ROUTINE void rtems_chain_initialize(
147 rtems_chain_control *the_chain,
148 void *starting_address,
149 size_t number_nodes,
150 size_t node_size
151)
152{
153 _Chain_Initialize(
154 the_chain,
155 starting_address,
156 number_nodes,
157 node_size
158 );
159}
160
168 RTEMS_INLINE_ROUTINE void rtems_chain_initialize_empty(
169 rtems_chain_control *the_chain
170)
171{
172 _Chain_Initialize_empty( the_chain );
173}
174
183 RTEMS_INLINE_ROUTINE void rtems_chain_set_off_chain(
184 rtems_chain_node *node
185)
186{
187 _Chain_Set_off_chain( node );
188}
189
198 RTEMS_INLINE_ROUTINE void rtems_chain_initialize_node(
199 rtems_chain_node *node
200)
201{
202 _Chain_Initialize_node( node );
203}
204
216 RTEMS_INLINE_ROUTINE bool rtems_chain_is_node_off_chain(
217 const rtems_chain_node *node
218)
219{
220 return _Chain_Is_node_off_chain( node );
221}
222
233 RTEMS_INLINE_ROUTINE bool rtems_chain_is_null_node(
234 const rtems_chain_node *the_node
235)
236{
237 return _Chain_Is_null_node( the_node );
238}
239
249 RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_head(
250 rtems_chain_control *the_chain
251)
252{
253 return _Chain_Head( the_chain );
254}
255
265 RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_head(
266 const rtems_chain_control *the_chain
267)
268{
269 return _Chain_Immutable_head( the_chain );
270}
271
281 RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_tail(
282 rtems_chain_control *the_chain
283)
284{
285 return _Chain_Tail( the_chain );
286}
287
297 RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_tail(
298 const rtems_chain_control *the_chain
299)
300{
301 return _Chain_Immutable_tail( the_chain );
302}
303
314 RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_first(
315 const rtems_chain_control *the_chain
316)
317{
318 return _Chain_First( the_chain );
319}
320
331 RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_first(
332 const rtems_chain_control *the_chain
333)
334{
335 return _Chain_Immutable_first( the_chain );
336}
337
348 RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_last(
349 const rtems_chain_control *the_chain
350)
351{
352 return _Chain_Last( the_chain );
353}
354
365 RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_last(
366 const rtems_chain_control *the_chain
367)
368{
369 return _Chain_Immutable_last( the_chain );
370}
371
381 RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_next(
382 const rtems_chain_node *the_node
383)
384{
385 return _Chain_Next( the_node );
386}
387
397 RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_next(
398 const rtems_chain_node *the_node
399)
400{
401 return _Chain_Immutable_next( the_node );
402}
403
413 RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_previous(
414 const rtems_chain_node *the_node
415)
416{
417 return _Chain_Previous( the_node );
418}
419
429 RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_previous(
430 const rtems_chain_node *the_node
431)
432{
433 return _Chain_Immutable_previous( the_node );
434}
435
448 RTEMS_INLINE_ROUTINE bool rtems_chain_are_nodes_equal(
449 const rtems_chain_node *left,
450 const rtems_chain_node *right
451)
452{
453 return _Chain_Are_nodes_equal( left, right );
454}
455
467 RTEMS_INLINE_ROUTINE bool rtems_chain_is_empty(
468 const rtems_chain_control *the_chain
469)
470{
471 return _Chain_Is_empty( the_chain );
472}
473
486 RTEMS_INLINE_ROUTINE bool rtems_chain_is_first(
487 const rtems_chain_node *the_node
488)
489{
490 return _Chain_Is_first( the_node );
491}
492
504 RTEMS_INLINE_ROUTINE bool rtems_chain_is_last(
505 const rtems_chain_node *the_node
506)
507{
508 return _Chain_Is_last( the_node );
509}
510
522 RTEMS_INLINE_ROUTINE bool rtems_chain_has_only_one_node(
523 const rtems_chain_control *the_chain
524)
525{
526 return _Chain_Has_only_one_node( the_chain );
527}
528
541 RTEMS_INLINE_ROUTINE bool rtems_chain_is_head(
542 const rtems_chain_control *the_chain,
543 const rtems_chain_node *the_node
544)
545{
546 return _Chain_Is_head( the_chain, the_node );
547}
548
561 RTEMS_INLINE_ROUTINE bool rtems_chain_is_tail(
562 const rtems_chain_control *the_chain,
563 const rtems_chain_node *the_node
564)
565{
566 return _Chain_Is_tail( the_chain, the_node );
567}
568
578void rtems_chain_extract(
579 rtems_chain_node *the_node
580);
581
590 RTEMS_INLINE_ROUTINE void rtems_chain_extract_unprotected(
591 rtems_chain_node *the_node
592)
593{
594 _Chain_Extract_unprotected( the_node );
595}
596
609 rtems_chain_node *rtems_chain_get(
610 rtems_chain_control *the_chain
611);
612
616 RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get_unprotected(
617 rtems_chain_control *the_chain
618)
619{
620 return _Chain_Get_unprotected( the_chain );
621}
622
626 RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get_first_unprotected(
627 rtems_chain_control *the_chain
628)
629{
630 return _Chain_Get_first_unprotected( the_chain );
631}
632
642void rtems_chain_insert(
643 rtems_chain_node *after_node,
644 rtems_chain_node *the_node
645);
646
650 RTEMS_INLINE_ROUTINE void rtems_chain_insert_unprotected(
651 rtems_chain_node *after_node,
652 rtems_chain_node *the_node
653)
654{
655 _Chain_Insert_unprotected( after_node, the_node );
656}
657
666void rtems_chain_append(
667 rtems_chain_control *the_chain,
668 rtems_chain_node *the_node
669);
670
679 RTEMS_INLINE_ROUTINE void rtems_chain_append_unprotected(
680 rtems_chain_control *the_chain,
681 rtems_chain_node *the_node
682)
683{
684 _Chain_Append_unprotected( the_chain, the_node );
685}
686
698void rtems_chain_prepend(
699 rtems_chain_control *the_chain,
700 rtems_chain_node *the_node
701);
702
714 RTEMS_INLINE_ROUTINE void rtems_chain_prepend_unprotected(
715 rtems_chain_control *the_chain,
716 rtems_chain_node *the_node
717)
718{
719 _Chain_Prepend_unprotected( the_chain, the_node );
720}
721
730bool rtems_chain_append_with_empty_check(
731 rtems_chain_control *chain,
732 rtems_chain_node *node
733);
734
743bool rtems_chain_prepend_with_empty_check(
744 rtems_chain_control *chain,
745 rtems_chain_node *node
746);
747
760bool rtems_chain_get_with_empty_check(
761 rtems_chain_control *chain,
762 rtems_chain_node **node
763);
764
775 RTEMS_INLINE_ROUTINE size_t rtems_chain_node_count_unprotected(
776 const rtems_chain_control *chain
777)
778{
779 return _Chain_Node_count_unprotected( chain );
780}
781
784#ifdef __cplusplus
785}
786#endif
787
788#endif
789/* end of include file */
chainimpl.h
Chain Handler API.
rtems_chain_is_tail
RTEMS_INLINE_ROUTINE bool rtems_chain_is_tail(const rtems_chain_control *the_chain, const rtems_chain_node *the_node)
Is this node the chain tail.
Definition: chain.h:561
rtems_chain_get_with_wait
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.
Definition: chaingetwait.c:29
rtems_chain_insert_unprotected
RTEMS_INLINE_ROUTINE void rtems_chain_insert_unprotected(rtems_chain_node *after_node, rtems_chain_node *the_node)
See _Chain_Insert_unprotected().
Definition: chain.h:650
rtems_chain_first
RTEMS_INLINE_ROUTINE rtems_chain_node * rtems_chain_first(const rtems_chain_control *the_chain)
Return pointer to Chain's First node after the permanent head.
Definition: chain.h:314
rtems_chain_append_with_empty_check
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.
Definition: chainprotected.c:88
rtems_chain_prepend_unprotected
RTEMS_INLINE_ROUTINE void rtems_chain_prepend_unprotected(rtems_chain_control *the_chain, rtems_chain_node *the_node)
Prepend a node (unprotected).
Definition: chain.h:714
rtems_chain_immutable_previous
RTEMS_INLINE_ROUTINE const rtems_chain_node * rtems_chain_immutable_previous(const rtems_chain_node *the_node)
Return pointer the immutable previous node from this node.
Definition: chain.h:429
rtems_chain_insert
void rtems_chain_insert(rtems_chain_node *after_node, rtems_chain_node *the_node)
Insert a node on a chain.
Definition: chainprotected.c:55
rtems_chain_node_count_unprotected
RTEMS_INLINE_ROUTINE size_t rtems_chain_node_count_unprotected(const rtems_chain_control *chain)
Returns the node count of the chain.
Definition: chain.h:775
rtems_chain_prepend
void rtems_chain_prepend(rtems_chain_control *the_chain, rtems_chain_node *the_node)
Prepend a node.
Definition: chainprotected.c:76
rtems_chain_prepend_with_notification
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 pre...
Definition: chainprependnotify.c:29
rtems_chain_initialize
RTEMS_INLINE_ROUTINE void rtems_chain_initialize(rtems_chain_control *the_chain, void *starting_address, size_t number_nodes, size_t node_size)
Initialize a chain Header.
Definition: chain.h:146
rtems_chain_get_unprotected
RTEMS_INLINE_ROUTINE rtems_chain_node * rtems_chain_get_unprotected(rtems_chain_control *the_chain)
See _Chain_Get_unprotected().
Definition: chain.h:616
rtems_chain_immutable_first
RTEMS_INLINE_ROUTINE const rtems_chain_node * rtems_chain_immutable_first(const rtems_chain_control *the_chain)
Return pointer to immutable Chain's First node.
Definition: chain.h:331
rtems_chain_is_null_node
RTEMS_INLINE_ROUTINE bool rtems_chain_is_null_node(const rtems_chain_node *the_node)
Is the chain node pointer NULL.
Definition: chain.h:233
rtems_chain_head
RTEMS_INLINE_ROUTINE rtems_chain_node * rtems_chain_head(rtems_chain_control *the_chain)
Return pointer to Chain Head.
Definition: chain.h:249
rtems_chain_next
RTEMS_INLINE_ROUTINE rtems_chain_node * rtems_chain_next(const rtems_chain_node *the_node)
Return pointer the next node from this node.
Definition: chain.h:381
rtems_chain_tail
RTEMS_INLINE_ROUTINE rtems_chain_node * rtems_chain_tail(rtems_chain_control *the_chain)
Return pointer to Chain Tail.
Definition: chain.h:281
rtems_chain_immutable_next
RTEMS_INLINE_ROUTINE const rtems_chain_node * rtems_chain_immutable_next(const rtems_chain_node *the_node)
Return pointer the immutable next node from this node.
Definition: chain.h:397
rtems_chain_is_last
RTEMS_INLINE_ROUTINE bool rtems_chain_is_last(const rtems_chain_node *the_node)
Is this the last node on the chain.
Definition: chain.h:504
rtems_chain_is_empty
RTEMS_INLINE_ROUTINE bool rtems_chain_is_empty(const rtems_chain_control *the_chain)
Is the chain empty.
Definition: chain.h:467
rtems_chain_are_nodes_equal
RTEMS_INLINE_ROUTINE bool rtems_chain_are_nodes_equal(const rtems_chain_node *left, const rtems_chain_node *right)
Are Two nodes equal.
Definition: chain.h:448
rtems_chain_initialize_node
RTEMS_INLINE_ROUTINE void rtems_chain_initialize_node(rtems_chain_node *node)
Initializes a chain node.
Definition: chain.h:198
rtems_chain_append_unprotected
RTEMS_INLINE_ROUTINE void rtems_chain_append_unprotected(rtems_chain_control *the_chain, rtems_chain_node *the_node)
Append a node on the end of a chain (unprotected).
Definition: chain.h:679
rtems_chain_immutable_last
RTEMS_INLINE_ROUTINE const rtems_chain_node * rtems_chain_immutable_last(const rtems_chain_control *the_chain)
Return pointer to immutable Chain's Last node.
Definition: chain.h:365
rtems_chain_get
rtems_chain_node * rtems_chain_get(rtems_chain_control *the_chain)
Obtain the first node on a chain.
Definition: chainprotected.c:43
rtems_chain_append
void rtems_chain_append(rtems_chain_control *the_chain, rtems_chain_node *the_node)
Append a node on the end of a chain.
Definition: chainprotected.c:64
rtems_chain_has_only_one_node
RTEMS_INLINE_ROUTINE bool rtems_chain_has_only_one_node(const rtems_chain_control *the_chain)
Does this chain have only one node.
Definition: chain.h:522
rtems_chain_is_first
RTEMS_INLINE_ROUTINE bool rtems_chain_is_first(const rtems_chain_node *the_node)
Is this the first node on the chain.
Definition: chain.h:486
rtems_chain_append_with_notification
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 appe...
Definition: chainappendnotify.c:29
rtems_chain_extract_unprotected
RTEMS_INLINE_ROUTINE void rtems_chain_extract_unprotected(rtems_chain_node *the_node)
Extract the specified node from a chain (unprotected).
Definition: chain.h:590
rtems_chain_prepend_with_empty_check
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.
Definition: chainprotected.c:103
rtems_chain_initialize_empty
RTEMS_INLINE_ROUTINE void rtems_chain_initialize_empty(rtems_chain_control *the_chain)
Initialize this chain as empty.
Definition: chain.h:168
rtems_chain_last
RTEMS_INLINE_ROUTINE rtems_chain_node * rtems_chain_last(const rtems_chain_control *the_chain)
Return pointer to Chain's Last node before the permanent tail.
Definition: chain.h:348
rtems_chain_immutable_head
RTEMS_INLINE_ROUTINE const rtems_chain_node * rtems_chain_immutable_head(const rtems_chain_control *the_chain)
Return pointer to immutable Chain Head.
Definition: chain.h:265
rtems_chain_get_first_unprotected
RTEMS_INLINE_ROUTINE rtems_chain_node * rtems_chain_get_first_unprotected(rtems_chain_control *the_chain)
See _Chain_Get_first_unprotected().
Definition: chain.h:626
rtems_chain_set_off_chain
RTEMS_INLINE_ROUTINE void rtems_chain_set_off_chain(rtems_chain_node *node)
Set off chain.
Definition: chain.h:183
rtems_chain_is_head
RTEMS_INLINE_ROUTINE bool rtems_chain_is_head(const rtems_chain_control *the_chain, const rtems_chain_node *the_node)
Is this node the chain head.
Definition: chain.h:541
rtems_chain_immutable_tail
RTEMS_INLINE_ROUTINE const rtems_chain_node * rtems_chain_immutable_tail(const rtems_chain_control *the_chain)
Return pointer to immutable Chain Tail.
Definition: chain.h:297
rtems_chain_get_with_empty_check
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.
Definition: chainprotected.c:118
rtems_chain_get_with_notification
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...
Definition: chaingetnotify.c:29
rtems_chain_extract
void rtems_chain_extract(rtems_chain_node *the_node)
Extract the specified node from a chain.
Definition: chainprotected.c:34
rtems_chain_is_node_off_chain
RTEMS_INLINE_ROUTINE bool rtems_chain_is_node_off_chain(const rtems_chain_node *node)
Is the node off chain.
Definition: chain.h:216
rtems_chain_previous
RTEMS_INLINE_ROUTINE rtems_chain_node * rtems_chain_previous(const rtems_chain_node *the_node)
Return pointer the previous node from this node.
Definition: chain.h:413
rtems_event_set
uint32_t rtems_event_set
Integer type to hold an event set of up to 32 events represented as a bit field.
Definition: event.h:40
rtems_status_code
rtems_status_code
Classic API Status.
Definition: status.h:43
rtems_id
Objects_Id rtems_id
Used to manage and manipulate RTEMS object identifiers.
Definition: types.h:83
rtems_interval
Watchdog_Interval rtems_interval
Used to manage and manipulate intervals specified by clock ticks.
Definition: types.h:127
RTEMS_INLINE_ROUTINE
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:66
_Chain_Get_unprotected
RTEMS_INLINE_ROUTINE Chain_Node * _Chain_Get_unprotected(Chain_Control *the_chain)
Gets the first node (unprotected).
Definition: chainimpl.h:630
_Chain_Insert_unprotected
RTEMS_INLINE_ROUTINE void _Chain_Insert_unprotected(Chain_Node *after_node, Chain_Node *the_node)
Inserts a node (unprotected).
Definition: chainimpl.h:653
_Chain_Last
RTEMS_INLINE_ROUTINE Chain_Node * _Chain_Last(const Chain_Control *the_chain)
Returns pointer to chain's last node.
Definition: chainimpl.h:294
_Chain_Immutable_head
RTEMS_INLINE_ROUTINE const Chain_Node * _Chain_Immutable_head(const Chain_Control *the_chain)
Returns pointer to immutable chain head.
Definition: chainimpl.h:211
_Chain_Has_only_one_node
RTEMS_INLINE_ROUTINE bool _Chain_Has_only_one_node(const Chain_Control *the_chain)
Checks if this chain has only one node.
Definition: chainimpl.h:450
_Chain_Is_head
RTEMS_INLINE_ROUTINE bool _Chain_Is_head(const Chain_Control *the_chain, const Chain_Node *the_node)
Checks if this node is the chain head.
Definition: chainimpl.h:470
_Chain_Is_last
RTEMS_INLINE_ROUTINE bool _Chain_Is_last(const Chain_Node *the_node)
Checks if this is the last node on the chain.
Definition: chainimpl.h:432
_Chain_Initialize_empty
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(Chain_Control *the_chain)
Initializes this chain as empty.
Definition: chainimpl.h:505
_Chain_Get_first_unprotected
RTEMS_INLINE_ROUTINE Chain_Node * _Chain_Get_first_unprotected(Chain_Control *the_chain)
Gets the first node (unprotected).
Definition: chainimpl.h:592
_Chain_Is_first
RTEMS_INLINE_ROUTINE bool _Chain_Is_first(const Chain_Node *the_node)
Checks if this is the first node on the chain.
Definition: chainimpl.h:413
_Chain_Node_count_unprotected
size_t _Chain_Node_count_unprotected(const Chain_Control *chain)
Returns the node count of the chain.
Definition: chainnodecount.c:21
_Chain_Immutable_first
RTEMS_INLINE_ROUTINE const Chain_Node * _Chain_Immutable_first(const Chain_Control *the_chain)
Returns pointer to immutable chain's first node.
Definition: chainimpl.h:277
_Chain_Are_nodes_equal
RTEMS_INLINE_ROUTINE bool _Chain_Are_nodes_equal(const Chain_Node *left, const Chain_Node *right)
Checks if two nodes are equal.
Definition: chainimpl.h:161
_Chain_Extract_unprotected
RTEMS_INLINE_ROUTINE void _Chain_Extract_unprotected(Chain_Node *the_node)
Extracts this node (unprotected).
Definition: chainimpl.h:558
_Chain_Initialize
void _Chain_Initialize(Chain_Control *the_chain, void *starting_address, size_t number_nodes, size_t node_size)
Initializes a chain header.
Definition: chain.c:26
_Chain_Tail
RTEMS_INLINE_ROUTINE Chain_Node * _Chain_Tail(Chain_Control *the_chain)
Returns pointer to chain tail.
Definition: chainimpl.h:227
_Chain_Is_empty
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(const Chain_Control *the_chain)
Checks if the chain is empty.
Definition: chainimpl.h:393
_Chain_Immutable_tail
RTEMS_INLINE_ROUTINE const Chain_Node * _Chain_Immutable_tail(const Chain_Control *the_chain)
Returns pointer to immutable chain tail.
Definition: chainimpl.h:243
_Chain_Immutable_next
RTEMS_INLINE_ROUTINE const Chain_Node * _Chain_Immutable_next(const Chain_Node *the_node)
Returns pointer to the immutable next node from this node.
Definition: chainimpl.h:343
_Chain_Immutable_last
RTEMS_INLINE_ROUTINE const Chain_Node * _Chain_Immutable_last(const Chain_Control *the_chain)
Returns pointer to immutable chain's last node.
Definition: chainimpl.h:311
_Chain_Prepend_unprotected
RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(Chain_Control *the_chain, Chain_Node *the_node)
Prepends a node (unprotected).
Definition: chainimpl.h:732
_Chain_Head
RTEMS_INLINE_ROUTINE Chain_Node * _Chain_Head(Chain_Control *the_chain)
Returns pointer to chain head.
Definition: chainimpl.h:195
_Chain_Is_null_node
RTEMS_INLINE_ROUTINE bool _Chain_Is_null_node(const Chain_Node *the_node)
Checks if the chain node pointer is NULL.
Definition: chainimpl.h:179
_Chain_Append_unprotected
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(Chain_Control *the_chain, Chain_Node *the_node)
Appends a node (unprotected).
Definition: chainimpl.h:680
_Chain_Initialize_node
RTEMS_INLINE_ROUTINE void _Chain_Initialize_node(Chain_Node *the_node)
Initializes a chain node.
Definition: chainimpl.h:122
_Chain_Next
RTEMS_INLINE_ROUTINE Chain_Node * _Chain_Next(const Chain_Node *the_node)
Returns pointer to the next node from this node.
Definition: chainimpl.h:327
_Chain_Is_tail
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(const Chain_Control *the_chain, const Chain_Node *the_node)
Checks if this node is the chain tail.
Definition: chainimpl.h:490
_Chain_Is_node_off_chain
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(const Chain_Node *node)
Checks if the node is off chain.
Definition: chainimpl.h:142
_Chain_Previous
RTEMS_INLINE_ROUTINE Chain_Node * _Chain_Previous(const Chain_Node *the_node)
Returns pointer to the previous node from this node.
Definition: chainimpl.h:359
_Chain_Set_off_chain
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(Chain_Node *node)
Sets off chain.
Definition: chainimpl.h:104
_Chain_Immutable_previous
RTEMS_INLINE_ROUTINE const Chain_Node * _Chain_Immutable_previous(const Chain_Node *the_node)
Returns pointer to the immutable previous node from this node.
Definition: chainimpl.h:375
_Chain_First
RTEMS_INLINE_ROUTINE Chain_Node * _Chain_First(const Chain_Control *the_chain)
Returns pointer to chain's first node.
Definition: chainimpl.h:260
event.h
Classic Event Manager API.
Chain_Node_struct
Definition: chain.h:68
Chain_Control
Definition: chain.h:86