summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/corebarrier.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/include/rtems/score/corebarrier.h')
-rw-r--r--cpukit/score/include/rtems/score/corebarrier.h133
1 files changed, 7 insertions, 126 deletions
diff --git a/cpukit/score/include/rtems/score/corebarrier.h b/cpukit/score/include/rtems/score/corebarrier.h
index 1f7c826b79..1505efc55e 100644
--- a/cpukit/score/include/rtems/score/corebarrier.h
+++ b/cpukit/score/include/rtems/score/corebarrier.h
@@ -19,6 +19,12 @@
#ifndef _RTEMS_SCORE_COREBARRIER_H
#define _RTEMS_SCORE_COREBARRIER_H
+#include <rtems/score/tqdata.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/**
* @defgroup ScoreBarrier Barrier Handler
*
@@ -29,24 +35,6 @@
*/
/**@{*/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtems/score/thread.h>
-#include <rtems/score/threadq.h>
-#include <rtems/score/priority.h>
-#include <rtems/score/watchdog.h>
-
-/**
- * The following type defines the callout which the API provides
- * to support global/multiprocessor operations on barriers.
- */
-typedef void ( *CORE_barrier_API_mp_support_callout )(
- Thread_Control *,
- Objects_Id
- );
-
/**
* Flavors of barriers.
*/
@@ -62,35 +50,6 @@ typedef enum {
} CORE_barrier_Disciplines;
/**
- * Core Barrier handler return statuses.
- */
-typedef enum {
- /** This status indicates that the operation completed successfully. */
- CORE_BARRIER_STATUS_SUCCESSFUL,
- /** This status indicates that the barrier is configured for automatic
- * release and the caller tripped the automatic release. The caller
- * thus did not block.
- */
- CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED,
- /** This status indicates that the thread was blocked waiting for an
- * operation to complete and the barrier was deleted.
- */
- CORE_BARRIER_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_BARRIER_TIMEOUT
-} CORE_barrier_Status;
-
-/**
- * @brief Core barrier last status value.
- *
- * This is the last status value.
- */
-#define CORE_BARRIER_STATUS_LAST CORE_BARRIER_TIMEOUT
-
-/**
* The following defines the control block used to manage the
* attributes of each barrier.
*/
@@ -122,89 +81,11 @@ typedef struct {
uint32_t number_of_waiting_threads;
} CORE_barrier_Control;
-/**
- * @brief Initialize core barrier.
- *
- * This routine initializes the barrier based on the parameters passed.
- *
- * @param[in] the_barrier is the barrier to initialize
- * @param[in] the_barrier_attributes define the behavior of this instance
- */
-void _CORE_barrier_Initialize(
- CORE_barrier_Control *the_barrier,
- CORE_barrier_Attributes *the_barrier_attributes
-);
-
-/**
- * @brief Wait for the barrier.
- *
- * This routine wait for the barrier to be released. If the barrier
- * is set to automatic and this is the appropriate thread, then it returns
- * immediately. Otherwise, the calling thread is blocked until the barrier
- * is released.
- *
- * @param[in] the_barrier is the barrier to wait for
- * @param[in] id is the id of the object being waited upon
- * @param[in] wait is true if the calling thread is willing to wait
- * @param[in] timeout is the number of ticks the calling thread is willing
- * to wait if @a wait is true.
- * @param[in] api_barrier_mp_support is the routine to invoke if the
- * thread unblocked is remote
- *
- * @note Status is returned via the thread control block.
- */
-void _CORE_barrier_Wait(
- CORE_barrier_Control *the_barrier,
- Objects_Id id,
- bool wait,
- Watchdog_Interval timeout,
- CORE_barrier_API_mp_support_callout api_barrier_mp_support
-);
-
-/**
- * @brief Manually release the barrier.
- *
- * This routine manually releases the barrier. All of the threads waiting
- * for the barrier will be readied.
- *
- * @param[in] the_barrier is the barrier to surrender
- * @param[in] id is the id of the object for a remote unblock
- * @param[in] api_barrier_mp_support is the routine to invoke if the
- * thread unblocked is remote
- *
- * @retval the number of unblocked threads
- */
-uint32_t _CORE_barrier_Release(
- CORE_barrier_Control *the_barrier,
- Objects_Id id,
- CORE_barrier_API_mp_support_callout api_barrier_mp_support
-);
-
-/**
- * This routine assists in the deletion of a barrier by flushing the
- * associated wait queue.
- *
- * @param[in] _the_barrier is the barrier 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
- */
-#define _CORE_barrier_Flush( _the_barrier, _remote_extract_callout, _status) \
- _Thread_queue_Flush( \
- &((_the_barrier)->Wait_queue), \
- (_remote_extract_callout), \
- (_status) \
- )
-
-#ifndef __RTEMS_APPLICATION__
-#include <rtems/score/corebarrier.inl>
-#endif
+/**@}*/
#ifdef __cplusplus
}
#endif
-/**@}*/
-
#endif
/* end of include file */