summaryrefslogtreecommitdiffstats
path: root/cpukit/score/inline/rtems/score
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-12-05 16:04:02 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-12-05 18:07:04 +0100
commit0d66dd77d1098480a70ef7b965154e999ba4d348 (patch)
tree6319f3aeb6316211fb9ca1a503f19d5e4d786f2e /cpukit/score/inline/rtems/score
parentscore: Critical fix for timer server (diff)
downloadrtems-0d66dd77d1098480a70ef7b965154e999ba4d348.tar.bz2
score: Add _Chain_Append_if_is_off_chain_*()
Diffstat (limited to 'cpukit/score/inline/rtems/score')
-rw-r--r--cpukit/score/inline/rtems/score/chain.inl19
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.