[PATCH 08/15] score: Delete _Chain_Prepend()

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Apr 5 13:09:53 UTC 2016


This function is not used in the score.

Update #2555.
---
 cpukit/sapi/Makefile.am                      |   2 +-
 cpukit/sapi/include/rtems/chain.h            |  10 --
 cpukit/sapi/src/chainprotected.c             | 139 +++++++++++++++++++++++++++
 cpukit/sapi/src/chainsmp.c                   | 136 --------------------------
 cpukit/score/include/rtems/score/chainimpl.h |  19 ----
 5 files changed, 140 insertions(+), 166 deletions(-)
 create mode 100644 cpukit/sapi/src/chainprotected.c
 delete mode 100644 cpukit/sapi/src/chainsmp.c

diff --git a/cpukit/sapi/Makefile.am b/cpukit/sapi/Makefile.am
index edfdfc1..8970e3d 100644
--- a/cpukit/sapi/Makefile.am
+++ b/cpukit/sapi/Makefile.am
@@ -35,7 +35,7 @@ libsapi_a_SOURCES = src/extension.c src/extensioncreate.c \
     src/chainappendnotify.c src/chaingetnotify.c src/chaingetwait.c \
     src/chainprependnotify.c src/rbheap.c src/interrtext.c \
     src/fatal2.c src/fatalsrctext.c
-libsapi_a_SOURCES += src/chainsmp.c
+libsapi_a_SOURCES += src/chainprotected.c
 libsapi_a_SOURCES += src/cpucounterconverter.c
 libsapi_a_SOURCES += src/delayticks.c
 libsapi_a_SOURCES += src/delaynano.c
diff --git a/cpukit/sapi/include/rtems/chain.h b/cpukit/sapi/include/rtems/chain.h
index 4d586ff..ba8cd32 100644
--- a/cpukit/sapi/include/rtems/chain.h
+++ b/cpukit/sapi/include/rtems/chain.h
@@ -718,20 +718,10 @@ RTEMS_INLINE_ROUTINE void rtems_chain_append_unprotected(
  * NOTE: It disables interrupts to ensure the atomicity of the
  *       prepend operation.
  */
-#if defined( RTEMS_SMP )
 void rtems_chain_prepend(
   rtems_chain_control *the_chain,
   rtems_chain_node    *the_node
 );
-#else
-RTEMS_INLINE_ROUTINE void rtems_chain_prepend(
-  rtems_chain_control *the_chain,
-  rtems_chain_node    *the_node
-)
-{
-  _Chain_Prepend( the_chain, the_node );
-}
-#endif
 
 /** 
  * @brief Prepend a node (unprotected).
diff --git a/cpukit/sapi/src/chainprotected.c b/cpukit/sapi/src/chainprotected.c
new file mode 100644
index 0000000..ce8bc5e
--- /dev/null
+++ b/cpukit/sapi/src/chainprotected.c
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2013, 2016 embedded brains GmbH.  All rights reserved.
+ *
+ *  embedded brains GmbH
+ *  Dornierstr. 4
+ *  82178 Puchheim
+ *  Germany
+ *  <rtems at embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#if HAVE_CONFIG_H
+  #include "config.h"
+#endif
+
+#include <rtems/chain.h>
+#include <rtems/rtems/intr.h>
+
+RTEMS_INTERRUPT_LOCK_DEFINE( static, chain_lock, "Chains" )
+
+static void chain_acquire( rtems_interrupt_lock_context *lock_context )
+{
+  rtems_interrupt_lock_acquire( &chain_lock, lock_context );
+}
+
+static void chain_release( rtems_interrupt_lock_context *lock_context )
+{
+  rtems_interrupt_lock_release( &chain_lock, lock_context );
+}
+
+#if defined( RTEMS_SMP )
+
+void rtems_chain_extract( rtems_chain_node *node )
+{
+  rtems_interrupt_lock_context lock_context;
+
+  chain_acquire( &lock_context );
+  _Chain_Extract_unprotected( node );
+  chain_release( &lock_context );
+}
+
+rtems_chain_node *rtems_chain_get( rtems_chain_control *chain )
+{
+  rtems_chain_node *node;
+  rtems_interrupt_lock_context lock_context;
+
+  chain_acquire( &lock_context );
+  node = _Chain_Get_unprotected( chain );
+  chain_release( &lock_context );
+
+  return node;
+}
+
+void rtems_chain_insert( rtems_chain_node *after_node, rtems_chain_node *node )
+{
+  rtems_interrupt_lock_context lock_context;
+
+  chain_acquire( &lock_context );
+  _Chain_Insert_unprotected( after_node, node );
+  chain_release( &lock_context );
+}
+
+void rtems_chain_append(
+  rtems_chain_control *chain,
+  rtems_chain_node *node
+)
+{
+  rtems_interrupt_lock_context lock_context;
+
+  chain_acquire( &lock_context );
+  _Chain_Append_unprotected( chain, node );
+  chain_release( &lock_context );
+}
+
+#endif /* defined( RTEMS_SMP ) */
+
+void rtems_chain_prepend(
+  rtems_chain_control *chain,
+  rtems_chain_node *node
+)
+{
+  rtems_interrupt_lock_context lock_context;
+
+  chain_acquire( &lock_context );
+  _Chain_Prepend_unprotected( chain, node );
+  chain_release( &lock_context );
+}
+
+#if defined( RTEMS_SMP )
+
+bool rtems_chain_append_with_empty_check(
+  rtems_chain_control *chain,
+  rtems_chain_node *node
+)
+{
+  bool was_empty;
+  rtems_interrupt_lock_context lock_context;
+
+  chain_acquire( &lock_context );
+  was_empty = _Chain_Append_with_empty_check_unprotected( chain, node );
+  chain_release( &lock_context );
+
+  return was_empty;
+}
+
+bool rtems_chain_prepend_with_empty_check(
+  rtems_chain_control *chain,
+  rtems_chain_node *node
+)
+{
+  bool was_empty;
+  rtems_interrupt_lock_context lock_context;
+
+  chain_acquire( &lock_context );
+  was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node );
+  chain_release( &lock_context );
+
+  return was_empty;
+}
+
+bool rtems_chain_get_with_empty_check(
+  rtems_chain_control *chain,
+  rtems_chain_node **node
+)
+{
+  bool is_empty_now;
+  rtems_interrupt_lock_context lock_context;
+
+  chain_acquire( &lock_context );
+  is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node );
+  chain_release( &lock_context );
+
+  return is_empty_now;
+}
+
+#endif /* defined( RTEMS_SMP ) */
diff --git a/cpukit/sapi/src/chainsmp.c b/cpukit/sapi/src/chainsmp.c
deleted file mode 100644
index a3da213..0000000
--- a/cpukit/sapi/src/chainsmp.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2013-2014 embedded brains GmbH.  All rights reserved.
- *
- *  embedded brains GmbH
- *  Dornierstr. 4
- *  82178 Puchheim
- *  Germany
- *  <rtems at embedded-brains.de>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#if HAVE_CONFIG_H
-  #include "config.h"
-#endif
-
-#include <rtems/chain.h>
-
-#if defined( RTEMS_SMP )
-
-#include <rtems/score/smplock.h>
-
-static SMP_lock_Control chain_lock = SMP_LOCK_INITIALIZER("chains");
-
-static void chain_acquire( SMP_lock_Context *lock_context )
-{
-  _SMP_lock_ISR_disable_and_acquire( &chain_lock, lock_context );
-}
-
-static void chain_release( SMP_lock_Context *lock_context )
-{
-  _SMP_lock_Release_and_ISR_enable( &chain_lock, lock_context );
-}
-
-void rtems_chain_extract( rtems_chain_node *node )
-{
-  SMP_lock_Context lock_context;
-
-  chain_acquire( &lock_context );
-  _Chain_Extract_unprotected( node );
-  chain_release( &lock_context );
-}
-
-rtems_chain_node *rtems_chain_get( rtems_chain_control *chain )
-{
-  rtems_chain_node *node;
-  SMP_lock_Context lock_context;
-
-  chain_acquire( &lock_context );
-  node = _Chain_Get_unprotected( chain );
-  chain_release( &lock_context );
-
-  return node;
-}
-
-void rtems_chain_insert( rtems_chain_node *after_node, rtems_chain_node *node )
-{
-  SMP_lock_Context lock_context;
-
-  chain_acquire( &lock_context );
-  _Chain_Insert_unprotected( after_node, node );
-  chain_release( &lock_context );
-}
-
-void rtems_chain_append(
-  rtems_chain_control *chain,
-  rtems_chain_node *node
-)
-{
-  SMP_lock_Context lock_context;
-
-  chain_acquire( &lock_context );
-  _Chain_Append_unprotected( chain, node );
-  chain_release( &lock_context );
-}
-
-void rtems_chain_prepend(
-  rtems_chain_control *chain,
-  rtems_chain_node *node
-)
-{
-  SMP_lock_Context lock_context;
-
-  chain_acquire( &lock_context );
-  _Chain_Prepend_unprotected( chain, node );
-  chain_release( &lock_context );
-}
-
-bool rtems_chain_append_with_empty_check(
-  rtems_chain_control *chain,
-  rtems_chain_node *node
-)
-{
-  bool was_empty;
-  SMP_lock_Context lock_context;
-
-  chain_acquire( &lock_context );
-  was_empty = _Chain_Append_with_empty_check_unprotected( chain, node );
-  chain_release( &lock_context );
-
-  return was_empty;
-}
-
-bool rtems_chain_prepend_with_empty_check(
-  rtems_chain_control *chain,
-  rtems_chain_node *node
-)
-{
-  bool was_empty;
-  SMP_lock_Context lock_context;
-
-  chain_acquire( &lock_context );
-  was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node );
-  chain_release( &lock_context );
-
-  return was_empty;
-}
-
-bool rtems_chain_get_with_empty_check(
-  rtems_chain_control *chain,
-  rtems_chain_node **node
-)
-{
-  bool is_empty_now;
-  SMP_lock_Context lock_context;
-
-  chain_acquire( &lock_context );
-  is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node );
-  chain_release( &lock_context );
-
-  return is_empty_now;
-}
-
-#endif /* defined( RTEMS_SMP ) */
diff --git a/cpukit/score/include/rtems/score/chainimpl.h b/cpukit/score/include/rtems/score/chainimpl.h
index 08cbab6..8b888a7 100644
--- a/cpukit/score/include/rtems/score/chainimpl.h
+++ b/cpukit/score/include/rtems/score/chainimpl.h
@@ -793,25 +793,6 @@ RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(
 }
 
 /**
- * @brief Prepend a node (protected).
- *
- * This routine prepends the_node onto the front of the_chain.
- *
- * @param[in] the_chain is the chain to be operated upon.
- * @param[in] the_node is the node to be prepended.
- *
- * @note It disables interrupts to ensure the atomicity of the
- *       prepend operation.
- */
-RTEMS_INLINE_ROUTINE void _Chain_Prepend(
-  Chain_Control *the_chain,
-  Chain_Node    *the_node
-)
-{
-  _Chain_Insert(_Chain_Head(the_chain), the_node);
-}
-
-/**
  * @brief Append a node and check if the chain was empty before (unprotected).
  *
  * This routine appends the_node onto the end of the_chain.
-- 
1.8.4.5



More information about the devel mailing list