summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-07-18 14:14:04 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-07-22 16:56:58 +0200
commitc4f585589ab715ef1aa3c4ab01cffeff2fc69ea9 (patch)
tree7e454d293b35cc00006cfb2c67bb6891c344ec7c
parentposix: Convert to inline function (diff)
downloadrtems-c4f585589ab715ef1aa3c4ab01cffeff2fc69ea9.tar.bz2
score: Create semaphore implementation header
Move implementation specific parts of coresem.h and coresem.inl into new header file coresemimpl.h. The coresem.h contains now only the application visible API.
-rw-r--r--cpukit/posix/include/rtems/posix/semaphoreimpl.h1
-rw-r--r--cpukit/rtems/include/rtems/rtems/semimpl.h1
-rw-r--r--cpukit/rtems/src/sem.c2
-rw-r--r--cpukit/rtems/src/semcreate.c2
-rw-r--r--cpukit/rtems/src/semdelete.c2
-rw-r--r--cpukit/rtems/src/semflush.c2
-rw-r--r--cpukit/rtems/src/semident.c2
-rw-r--r--cpukit/rtems/src/semobtain.c2
-rw-r--r--cpukit/rtems/src/semrelease.c2
-rw-r--r--cpukit/score/Makefile.am2
-rw-r--r--cpukit/score/include/rtems/score/coresem.h153
-rw-r--r--cpukit/score/include/rtems/score/coresemimpl.h255
-rw-r--r--cpukit/score/inline/rtems/score/coresem.inl118
-rw-r--r--cpukit/score/preinstall.am8
-rw-r--r--cpukit/score/src/coresem.c2
-rw-r--r--cpukit/score/src/coresemflush.c2
-rw-r--r--cpukit/score/src/coresemseize.c2
-rw-r--r--cpukit/score/src/coresemsurrender.c2
-rw-r--r--cpukit/score/src/mpci.c2
19 files changed, 281 insertions, 281 deletions
diff --git a/cpukit/posix/include/rtems/posix/semaphoreimpl.h b/cpukit/posix/include/rtems/posix/semaphoreimpl.h
index 43b0e2b854..34ac6f8bab 100644
--- a/cpukit/posix/include/rtems/posix/semaphoreimpl.h
+++ b/cpukit/posix/include/rtems/posix/semaphoreimpl.h
@@ -21,6 +21,7 @@
#include <rtems/posix/semaphore.h>
#include <rtems/posix/posixapi.h>
+#include <rtems/score/coresemimpl.h>
#include <errno.h>
diff --git a/cpukit/rtems/include/rtems/rtems/semimpl.h b/cpukit/rtems/include/rtems/rtems/semimpl.h
index 8bd762b4bd..047a198dfb 100644
--- a/cpukit/rtems/include/rtems/rtems/semimpl.h
+++ b/cpukit/rtems/include/rtems/rtems/semimpl.h
@@ -19,6 +19,7 @@
#include <rtems/rtems/sem.h>
#include <rtems/score/coremuteximpl.h>
+#include <rtems/score/coresemimpl.h>
#ifdef __cplusplus
extern "C" {
diff --git a/cpukit/rtems/src/sem.c b/cpukit/rtems/src/sem.c
index 41bb763b5c..90404b705e 100644
--- a/cpukit/rtems/src/sem.c
+++ b/cpukit/rtems/src/sem.c
@@ -28,7 +28,7 @@
#include <rtems/rtems/options.h>
#include <rtems/rtems/semimpl.h>
#include <rtems/score/coremuteximpl.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
diff --git a/cpukit/rtems/src/semcreate.c b/cpukit/rtems/src/semcreate.c
index 01d2450845..0b0e4fb625 100644
--- a/cpukit/rtems/src/semcreate.c
+++ b/cpukit/rtems/src/semcreate.c
@@ -27,7 +27,7 @@
#include <rtems/rtems/options.h>
#include <rtems/rtems/semimpl.h>
#include <rtems/score/coremuteximpl.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
diff --git a/cpukit/rtems/src/semdelete.c b/cpukit/rtems/src/semdelete.c
index 0b9d298143..96b4bd7968 100644
--- a/cpukit/rtems/src/semdelete.c
+++ b/cpukit/rtems/src/semdelete.c
@@ -27,7 +27,7 @@
#include <rtems/rtems/options.h>
#include <rtems/rtems/semimpl.h>
#include <rtems/score/coremuteximpl.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
diff --git a/cpukit/rtems/src/semflush.c b/cpukit/rtems/src/semflush.c
index 10c38828a8..de82973c88 100644
--- a/cpukit/rtems/src/semflush.c
+++ b/cpukit/rtems/src/semflush.c
@@ -27,7 +27,7 @@
#include <rtems/rtems/options.h>
#include <rtems/rtems/semimpl.h>
#include <rtems/score/coremuteximpl.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
diff --git a/cpukit/rtems/src/semident.c b/cpukit/rtems/src/semident.c
index 02edd7f1a1..b26e1f1dc3 100644
--- a/cpukit/rtems/src/semident.c
+++ b/cpukit/rtems/src/semident.c
@@ -27,7 +27,7 @@
#include <rtems/rtems/options.h>
#include <rtems/rtems/semimpl.h>
#include <rtems/score/coremuteximpl.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
diff --git a/cpukit/rtems/src/semobtain.c b/cpukit/rtems/src/semobtain.c
index 08ccb80549..89e7bb643d 100644
--- a/cpukit/rtems/src/semobtain.c
+++ b/cpukit/rtems/src/semobtain.c
@@ -27,7 +27,7 @@
#include <rtems/rtems/options.h>
#include <rtems/rtems/semimpl.h>
#include <rtems/score/coremuteximpl.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
diff --git a/cpukit/rtems/src/semrelease.c b/cpukit/rtems/src/semrelease.c
index 760f4d45c6..3af1ff947a 100644
--- a/cpukit/rtems/src/semrelease.c
+++ b/cpukit/rtems/src/semrelease.c
@@ -42,7 +42,7 @@
#include <rtems/rtems/options.h>
#include <rtems/rtems/semimpl.h>
#include <rtems/score/coremuteximpl.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
diff --git a/cpukit/score/Makefile.am b/cpukit/score/Makefile.am
index cc955d3a6b..a9a10332cc 100644
--- a/cpukit/score/Makefile.am
+++ b/cpukit/score/Makefile.am
@@ -26,6 +26,7 @@ include_rtems_score_HEADERS += include/rtems/score/coremsg.h
include_rtems_score_HEADERS += include/rtems/score/coremutex.h
include_rtems_score_HEADERS += include/rtems/score/coremuteximpl.h
include_rtems_score_HEADERS += include/rtems/score/coresem.h
+include_rtems_score_HEADERS += include/rtems/score/coresemimpl.h
include_rtems_score_HEADERS += include/rtems/score/heap.h
include_rtems_score_HEADERS += include/rtems/score/protectedheap.h
include_rtems_score_HEADERS += include/rtems/score/interr.h
@@ -88,7 +89,6 @@ include_rtems_score_HEADERS += inline/rtems/score/address.inl
include_rtems_score_HEADERS += inline/rtems/score/chain.inl
include_rtems_score_HEADERS += inline/rtems/score/corebarrier.inl
include_rtems_score_HEADERS += inline/rtems/score/coremsg.inl
-include_rtems_score_HEADERS += inline/rtems/score/coresem.inl
include_rtems_score_HEADERS += inline/rtems/score/heap.inl
include_rtems_score_HEADERS += inline/rtems/score/object.inl
include_rtems_score_HEADERS += inline/rtems/score/priority.inl
diff --git a/cpukit/score/include/rtems/score/coresem.h b/cpukit/score/include/rtems/score/coresem.h
index 3bb8773430..7a2040862a 100644
--- a/cpukit/score/include/rtems/score/coresem.h
+++ b/cpukit/score/include/rtems/score/coresem.h
@@ -21,6 +21,12 @@
#ifndef _RTEMS_SCORE_CORESEM_H
#define _RTEMS_SCORE_CORESEM_H
+#include <rtems/score/tqdata.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/**
* @defgroup ScoreSemaphore Semaphore Handler
*
@@ -31,28 +37,6 @@
*/
/**@{*/
-#include <rtems/score/thread.h>
-#include <rtems/score/threadq.h>
-#include <rtems/score/priority.h>
-#include <rtems/score/watchdog.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined(RTEMS_POSIX_API) || defined(RTEMS_MULTIPROCESSING)
- #define RTEMS_SCORE_CORESEM_ENABLE_SEIZE_BODY
-#endif
-
-/**
- * The following type defines the callout which the API provides
- * to support global/multiprocessor operations on semaphores.
- */
-typedef void ( *CORE_semaphore_API_mp_support_callout )(
- Thread_Control *,
- Objects_Id
- );
-
/**
* Blocking disciplines for a semaphore.
*/
@@ -66,39 +50,6 @@ typedef enum {
} CORE_semaphore_Disciplines;
/**
- * Core Semaphore handler return statuses.
- */
-typedef enum {
- /** This status indicates that the operation completed successfully. */
- CORE_SEMAPHORE_STATUS_SUCCESSFUL,
- /** This status indicates that the calling task did not want to block
- * and the operation was unable to complete immediately because the
- * resource was unavailable.
- */
- CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT,
- /** This status indicates that the thread was blocked waiting for an
- * operation to complete and the semaphore was deleted.
- */
- CORE_SEMAPHORE_WAS_DELETED,
- /** This status indicates that the calling task was willing to block
- * but the operation was unable to complete within the time allotted
- * because the resource never became available.
- */
- CORE_SEMAPHORE_TIMEOUT,
- /** This status indicates that an attempt was made to unlock the semaphore
- * and this would have made its count greater than that allowed.
- */
- CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED
-} CORE_semaphore_Status;
-
-/**
- * @brief Core semaphore last status value.
- *
- * This is the last status value.
- */
-#define CORE_SEMAPHORE_STATUS_LAST CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED
-
-/**
* The following defines the control block used to manage the
* attributes of each semaphore.
*/
@@ -128,101 +79,11 @@ typedef struct {
uint32_t count;
} CORE_semaphore_Control;
-/**
- * @brief Initialize the semaphore based on the parameters passed.
- *
- * DESCRIPTION:
- *
- * This package is the implementation of the CORE Semaphore Handler.
- * This core object utilizes standard Dijkstra counting semaphores to provide
- * synchronization and mutual exclusion capabilities.
- *
- * This routine initializes the semaphore based on the parameters passed.
- *
- * @param[in] the_semaphore is the semaphore to initialize
- * @param[in] the_semaphore_attributes define the behavior of this instance
- * @param[in] initial_value is the initial count of the semaphore
- */
-void _CORE_semaphore_Initialize(
- CORE_semaphore_Control *the_semaphore,
- CORE_semaphore_Attributes *the_semaphore_attributes,
- uint32_t initial_value
-);
-
-#if defined(RTEMS_SCORE_CORESEM_ENABLE_SEIZE_BODY)
- /**
- * This routine attempts to receive a unit from @a the_semaphore.
- * If a unit is available or if the wait flag is false, then the routine
- * returns. Otherwise, the calling task is blocked until a unit becomes
- * available.
- *
- * @param[in] the_semaphore is the semaphore to seize
- * @param[in] id is the Id of the API level Semaphore object associated
- * with this instance of a SuperCore Semaphore
- * @param[in] wait indicates if the caller is willing to block
- * @param[in] timeout is the number of ticks the calling thread is willing
- * to wait if @a wait is true.
- */
- void _CORE_semaphore_Seize(
- CORE_semaphore_Control *the_semaphore,
- Objects_Id id,
- bool wait,
- Watchdog_Interval timeout
- );
-#endif
-
-/**
- * @brief Surrender a unit to a semaphore.
- *
- * This routine frees a unit to the semaphore. If a task was blocked waiting
- * for a unit from this semaphore, then that task will be readied and the unit
- * given to that task. Otherwise, the unit will be returned to the semaphore.
- *
- * @param[in] the_semaphore is the semaphore to surrender
- * @param[in] id is the Id of the API level Semaphore object associated
- * with this instance of a SuperCore Semaphore
- * @param[in] api_semaphore_mp_support is the routine to invoke if the
- * thread unblocked is remote
- *
- * @retval an indication of whether the routine succeeded or failed
- */
-CORE_semaphore_Status _CORE_semaphore_Surrender(
- CORE_semaphore_Control *the_semaphore,
- Objects_Id id,
- CORE_semaphore_API_mp_support_callout api_semaphore_mp_support
-);
-
-/**
- * @brief Core semaphore flush.
- *
- * DESCRIPTION:
- * This package is the implementation of the CORE Semaphore Handler.
- * This core object utilizes standard Dijkstra counting semaphores to provide
- * synchronization and mutual exclusion capabilities.
- *
- * This routine assists in the deletion of a semaphore by flushing the
- * associated wait queue.
- *
- * @param[in] the_semaphore is the semaphore to flush
- * @param[in] remote_extract_callout is the routine to invoke if the
- * thread unblocked is remote
- * @param[in] status is the status to be returned to the unblocked thread
- */
-void _CORE_semaphore_Flush(
- CORE_semaphore_Control *the_semaphore,
- Thread_queue_Flush_callout remote_extract_callout,
- uint32_t status
-);
-
-#ifndef __RTEMS_APPLICATION__
-#include <rtems/score/coresem.inl>
-#endif
+/**@}*/
#ifdef __cplusplus
}
#endif
-/**@}*/
-
#endif
/* end of include file */
diff --git a/cpukit/score/include/rtems/score/coresemimpl.h b/cpukit/score/include/rtems/score/coresemimpl.h
new file mode 100644
index 0000000000..241ca41461
--- /dev/null
+++ b/cpukit/score/include/rtems/score/coresemimpl.h
@@ -0,0 +1,255 @@
+/**
+ * @file
+ *
+ * @brief Inlined Routines Associated with the SuperCore Semaphore
+ *
+ * This include file contains all of the inlined routines associated
+ * with the SuperCore semaphore.
+ */
+
+/*
+ * COPYRIGHT (c) 1989-2006.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#ifndef _RTEMS_SCORE_CORESEMIMPL_H
+#define _RTEMS_SCORE_CORESEMIMPL_H
+
+#include <rtems/score/coresem.h>
+#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
+#include <rtems/score/threadq.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @addtogroup ScoreSemaphore
+ */
+/**@{**/
+
+#if defined(RTEMS_POSIX_API) || defined(RTEMS_MULTIPROCESSING)
+ #define RTEMS_SCORE_CORESEM_ENABLE_SEIZE_BODY
+#endif
+
+/**
+ * Core Semaphore handler return statuses.
+ */
+typedef enum {
+ /** This status indicates that the operation completed successfully. */
+ CORE_SEMAPHORE_STATUS_SUCCESSFUL,
+ /** This status indicates that the calling task did not want to block
+ * and the operation was unable to complete immediately because the
+ * resource was unavailable.
+ */
+ CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT,
+ /** This status indicates that the thread was blocked waiting for an
+ * operation to complete and the semaphore was deleted.
+ */
+ CORE_SEMAPHORE_WAS_DELETED,
+ /** This status indicates that the calling task was willing to block
+ * but the operation was unable to complete within the time allotted
+ * because the resource never became available.
+ */
+ CORE_SEMAPHORE_TIMEOUT,
+ /** This status indicates that an attempt was made to unlock the semaphore
+ * and this would have made its count greater than that allowed.
+ */
+ CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED
+} CORE_semaphore_Status;
+
+/**
+ * @brief Core semaphore last status value.
+ *
+ * This is the last status value.
+ */
+#define CORE_SEMAPHORE_STATUS_LAST CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED
+
+/**
+ * The following type defines the callout which the API provides
+ * to support global/multiprocessor operations on semaphores.
+ */
+typedef void ( *CORE_semaphore_API_mp_support_callout )(
+ Thread_Control *,
+ Objects_Id
+ );
+
+/**
+ * @brief Initialize the semaphore based on the parameters passed.
+ *
+ * DESCRIPTION:
+ *
+ * This package is the implementation of the CORE Semaphore Handler.
+ * This core object utilizes standard Dijkstra counting semaphores to provide
+ * synchronization and mutual exclusion capabilities.
+ *
+ * This routine initializes the semaphore based on the parameters passed.
+ *
+ * @param[in] the_semaphore is the semaphore to initialize
+ * @param[in] the_semaphore_attributes define the behavior of this instance
+ * @param[in] initial_value is the initial count of the semaphore
+ */
+void _CORE_semaphore_Initialize(
+ CORE_semaphore_Control *the_semaphore,
+ CORE_semaphore_Attributes *the_semaphore_attributes,
+ uint32_t initial_value
+);
+
+#if defined(RTEMS_SCORE_CORESEM_ENABLE_SEIZE_BODY)
+ /**
+ * This routine attempts to receive a unit from @a the_semaphore.
+ * If a unit is available or if the wait flag is false, then the routine
+ * returns. Otherwise, the calling task is blocked until a unit becomes
+ * available.
+ *
+ * @param[in] the_semaphore is the semaphore to seize
+ * @param[in] id is the Id of the API level Semaphore object associated
+ * with this instance of a SuperCore Semaphore
+ * @param[in] wait indicates if the caller is willing to block
+ * @param[in] timeout is the number of ticks the calling thread is willing
+ * to wait if @a wait is true.
+ */
+ void _CORE_semaphore_Seize(
+ CORE_semaphore_Control *the_semaphore,
+ Objects_Id id,
+ bool wait,
+ Watchdog_Interval timeout
+ );
+#endif
+
+/**
+ * @brief Surrender a unit to a semaphore.
+ *
+ * This routine frees a unit to the semaphore. If a task was blocked waiting
+ * for a unit from this semaphore, then that task will be readied and the unit
+ * given to that task. Otherwise, the unit will be returned to the semaphore.
+ *
+ * @param[in] the_semaphore is the semaphore to surrender
+ * @param[in] id is the Id of the API level Semaphore object associated
+ * with this instance of a SuperCore Semaphore
+ * @param[in] api_semaphore_mp_support is the routine to invoke if the
+ * thread unblocked is remote
+ *
+ * @retval an indication of whether the routine succeeded or failed
+ */
+CORE_semaphore_Status _CORE_semaphore_Surrender(
+ CORE_semaphore_Control *the_semaphore,
+ Objects_Id id,
+ CORE_semaphore_API_mp_support_callout api_semaphore_mp_support
+);
+
+/**
+ * @brief Core semaphore flush.
+ *
+ * DESCRIPTION:
+ * This package is the implementation of the CORE Semaphore Handler.
+ * This core object utilizes standard Dijkstra counting semaphores to provide
+ * synchronization and mutual exclusion capabilities.
+ *
+ * This routine assists in the deletion of a semaphore by flushing the
+ * associated wait queue.
+ *
+ * @param[in] the_semaphore is the semaphore to flush
+ * @param[in] remote_extract_callout is the routine to invoke if the
+ * thread unblocked is remote
+ * @param[in] status is the status to be returned to the unblocked thread
+ */
+void _CORE_semaphore_Flush(
+ CORE_semaphore_Control *the_semaphore,
+ Thread_queue_Flush_callout remote_extract_callout,
+ uint32_t status
+);
+
+/**
+ * This function returns true if the priority attribute is
+ * enabled in the @a attribute_set and false otherwise.
+ *
+ * @param[in] the_attribute is the attribute set to test
+ *
+ * @return true if the priority attribute is enabled
+ */
+RTEMS_INLINE_ROUTINE bool _CORE_semaphore_Is_priority(
+ CORE_semaphore_Attributes *the_attribute
+)
+{
+ return ( the_attribute->discipline == CORE_SEMAPHORE_DISCIPLINES_PRIORITY );
+}
+
+/**
+ * This routine returns the current count associated with the semaphore.
+ *
+ * @param[in] the_semaphore is the semaphore to obtain the count of
+ *
+ * @return the current count of this semaphore
+ */
+RTEMS_INLINE_ROUTINE uint32_t _CORE_semaphore_Get_count(
+ CORE_semaphore_Control *the_semaphore
+)
+{
+ return the_semaphore->count;
+}
+
+/**
+ * This routine attempts to receive a unit from the_semaphore.
+ * If a unit is available or if the wait flag is false, then the routine
+ * returns. Otherwise, the calling task is blocked until a unit becomes
+ * available.
+ *
+ * @param[in] the_semaphore is the semaphore to obtain
+ * @param[in] id is the Id of the owning API level Semaphore object
+ * @param[in] wait is true if the thread is willing to wait
+ * @param[in] timeout is the maximum number of ticks to block
+ * @param[in] level is a temporary variable used to contain the ISR
+ * disable level cookie
+ *
+ * @note There is currently no MACRO version of this routine.
+ */
+RTEMS_INLINE_ROUTINE void _CORE_semaphore_Seize_isr_disable(
+ CORE_semaphore_Control *the_semaphore,
+ Objects_Id id,
+ bool wait,
+ Watchdog_Interval timeout,
+ ISR_Level level
+)
+{
+ Thread_Control *executing;
+
+ /* disabled when you get here */
+
+ executing = _Thread_Executing;
+ executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
+ if ( the_semaphore->count != 0 ) {
+ the_semaphore->count -= 1;
+ _ISR_Enable( level );
+ return;
+ }
+
+ if ( !wait ) {
+ _ISR_Enable( level );
+ executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
+ return;
+ }
+
+ _Thread_Disable_dispatch();
+ _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
+ executing->Wait.queue = &the_semaphore->Wait_queue;
+ executing->Wait.id = id;
+ _ISR_Enable( level );
+
+ _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
+ _Thread_Enable_dispatch();
+}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
diff --git a/cpukit/score/inline/rtems/score/coresem.inl b/cpukit/score/inline/rtems/score/coresem.inl
deleted file mode 100644
index 0ae3b33cd3..0000000000
--- a/cpukit/score/inline/rtems/score/coresem.inl
+++ /dev/null
@@ -1,118 +0,0 @@
-/**
- * @file
- *
- * @brief Inlined Routines Associated with the SuperCore Semaphore
- *
- * This include file contains all of the inlined routines associated
- * with the SuperCore semaphore.
- */
-
-/*
- * COPYRIGHT (c) 1989-2006.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- */
-
-#ifndef _RTEMS_SCORE_CORESEM_H
-# error "Never use <rtems/score/coresem.inl> directly; include <rtems/score/coresem.h> instead."
-#endif
-
-#ifndef _RTEMS_SCORE_CORESEM_INL
-#define _RTEMS_SCORE_CORESEM_INL
-
-/**
- * @addtogroup ScoreSemaphore
- */
-/**@{**/
-
-#include <rtems/score/thread.h>
-#include <rtems/score/threaddispatch.h>
-#include <rtems/score/threadq.h>
-
-/**
- * This function returns true if the priority attribute is
- * enabled in the @a attribute_set and false otherwise.
- *
- * @param[in] the_attribute is the attribute set to test
- *
- * @return true if the priority attribute is enabled
- */
-RTEMS_INLINE_ROUTINE bool _CORE_semaphore_Is_priority(
- CORE_semaphore_Attributes *the_attribute
-)
-{
- return ( the_attribute->discipline == CORE_SEMAPHORE_DISCIPLINES_PRIORITY );
-}
-
-/**
- * This routine returns the current count associated with the semaphore.
- *
- * @param[in] the_semaphore is the semaphore to obtain the count of
- *
- * @return the current count of this semaphore
- */
-RTEMS_INLINE_ROUTINE uint32_t _CORE_semaphore_Get_count(
- CORE_semaphore_Control *the_semaphore
-)
-{
- return the_semaphore->count;
-}
-
-/**
- * This routine attempts to receive a unit from the_semaphore.
- * If a unit is available or if the wait flag is false, then the routine
- * returns. Otherwise, the calling task is blocked until a unit becomes
- * available.
- *
- * @param[in] the_semaphore is the semaphore to obtain
- * @param[in] id is the Id of the owning API level Semaphore object
- * @param[in] wait is true if the thread is willing to wait
- * @param[in] timeout is the maximum number of ticks to block
- * @param[in] level is a temporary variable used to contain the ISR
- * disable level cookie
- *
- * @note There is currently no MACRO version of this routine.
- */
-RTEMS_INLINE_ROUTINE void _CORE_semaphore_Seize_isr_disable(
- CORE_semaphore_Control *the_semaphore,
- Objects_Id id,
- bool wait,
- Watchdog_Interval timeout,
- ISR_Level level
-)
-{
- Thread_Control *executing;
-
- /* disabled when you get here */
-
- executing = _Thread_Executing;
- executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
- if ( the_semaphore->count != 0 ) {
- the_semaphore->count -= 1;
- _ISR_Enable( level );
- return;
- }
-
- if ( !wait ) {
- _ISR_Enable( level );
- executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
- return;
- }
-
- _Thread_Disable_dispatch();
- _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
- executing->Wait.queue = &the_semaphore->Wait_queue;
- executing->Wait.id = id;
- _ISR_Enable( level );
-
- _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
- _Thread_Enable_dispatch();
-}
-
-/** @} */
-
-#endif
-/* end of include file */
diff --git a/cpukit/score/preinstall.am b/cpukit/score/preinstall.am
index 0bbb879b62..eee97205f2 100644
--- a/cpukit/score/preinstall.am
+++ b/cpukit/score/preinstall.am
@@ -87,6 +87,10 @@ $(PROJECT_INCLUDE)/rtems/score/coresem.h: include/rtems/score/coresem.h $(PROJEC
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/coresem.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/coresem.h
+$(PROJECT_INCLUDE)/rtems/score/coresemimpl.h: include/rtems/score/coresemimpl.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/coresemimpl.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/coresemimpl.h
+
$(PROJECT_INCLUDE)/rtems/score/heap.h: include/rtems/score/heap.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/heap.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/heap.h
@@ -283,10 +287,6 @@ $(PROJECT_INCLUDE)/rtems/score/coremsg.inl: inline/rtems/score/coremsg.inl $(PRO
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/coremsg.inl
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/coremsg.inl
-$(PROJECT_INCLUDE)/rtems/score/coresem.inl: inline/rtems/score/coresem.inl $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/coresem.inl
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/coresem.inl
-
$(PROJECT_INCLUDE)/rtems/score/heap.inl: inline/rtems/score/heap.inl $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/heap.inl
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/heap.inl
diff --git a/cpukit/score/src/coresem.c b/cpukit/score/src/coresem.c
index 03b9c5e6a8..14c706aa72 100644
--- a/cpukit/score/src/coresem.c
+++ b/cpukit/score/src/coresem.c
@@ -20,7 +20,7 @@
#include <rtems/system.h>
#include <rtems/score/isr.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
diff --git a/cpukit/score/src/coresemflush.c b/cpukit/score/src/coresemflush.c
index f0f819de2b..c1b68a72c0 100644
--- a/cpukit/score/src/coresemflush.c
+++ b/cpukit/score/src/coresemflush.c
@@ -20,7 +20,7 @@
#include <rtems/system.h>
#include <rtems/score/isr.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
diff --git a/cpukit/score/src/coresemseize.c b/cpukit/score/src/coresemseize.c
index 5ceaea72c2..7ad23171bf 100644
--- a/cpukit/score/src/coresemseize.c
+++ b/cpukit/score/src/coresemseize.c
@@ -21,7 +21,7 @@
#include <rtems/system.h>
#include <rtems/score/isr.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
diff --git a/cpukit/score/src/coresemsurrender.c b/cpukit/score/src/coresemsurrender.c
index 3d306f82a8..2a8d208a8d 100644
--- a/cpukit/score/src/coresemsurrender.c
+++ b/cpukit/score/src/coresemsurrender.c
@@ -21,7 +21,7 @@
#include <rtems/system.h>
#include <rtems/score/isr.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
diff --git a/cpukit/score/src/mpci.c b/cpukit/score/src/mpci.c
index 97910d5fd5..e4c43b7219 100644
--- a/cpukit/score/src/mpci.c
+++ b/cpukit/score/src/mpci.c
@@ -33,7 +33,7 @@
#include <rtems/score/watchdog.h>
#include <rtems/score/sysstate.h>
-#include <rtems/score/coresem.h>
+#include <rtems/score/coresemimpl.h>
#include <rtems/config.h>
RTEMS_STATIC_ASSERT(