diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-12-05 16:04:02 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-12-05 18:07:04 +0100 |
commit | 0d66dd77d1098480a70ef7b965154e999ba4d348 (patch) | |
tree | 6319f3aeb6316211fb9ca1a503f19d5e4d786f2e | |
parent | score: Critical fix for timer server (diff) | |
download | rtems-0d66dd77d1098480a70ef7b965154e999ba4d348.tar.bz2 |
score: Add _Chain_Append_if_is_off_chain_*()
-rw-r--r-- | cpukit/score/inline/rtems/score/chain.inl | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/cpukit/score/inline/rtems/score/chain.inl b/cpukit/score/inline/rtems/score/chain.inl index f0714eb78c..ebef69521b 100644 --- a/cpukit/score/inline/rtems/score/chain.inl +++ b/cpukit/score/inline/rtems/score/chain.inl @@ -538,6 +538,25 @@ RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( the_node->previous = old_last; } +/** + * @brief Append a node on the end of a chain if the node is in the off chain + * state (unprotected). + * + * @note It does NOT disable interrupts to ensure the atomicity of the + * append operation. + * + * @see _Chain_Append_unprotected() and _Chain_Is_node_off_chain(). + */ +RTEMS_INLINE_ROUTINE void _Chain_Append_if_is_off_chain_unprotected( + Chain_Control *the_chain, + Chain_Node *the_node +) +{ + if ( _Chain_Is_node_off_chain( the_node ) ) { + _Chain_Append_unprotected( the_chain, the_node ); + } +} + /** @brief Prepend a Node (unprotected) * * This routine prepends the_node onto the front of the_chain. |