| #define _CORE_barrier_Flush | ( | _the_barrier, | |||
| _remote_extract_callout, | |||||
| _status | ) |
Value:
_Thread_queue_Flush( \ &((_the_barrier)->Wait_queue), \ (_remote_extract_callout), \ (_status) \ )
| [in] | _the_barrier | is the barrier to flush |
| [in] | _remote_extract_callout | is the routine to invoke if the thread unblocked is remote |
| [in] | _status | is the status to be returned to the unblocked thread |
| #define CORE_BARRIER_STATUS_LAST CORE_BARRIER_TIMEOUT |
Core Barrier Last Status.
This is the last status value.
| typedef void( * CORE_barrier_API_mp_support_callout)(Thread_Control *, Objects_Id) |
The following type defines the callout which the API provides to support global/multiprocessor operations on barriers.
Flavors of barriers.
| enum CORE_barrier_Status |
Core Barrier handler return statuses.
| RTEMS_INLINE_ROUTINE uint32_t _CORE_barrier_Get_number_of_waiting_threads | ( | CORE_barrier_Control * | the_barrier | ) |
This routine returns the number of threads currently waiting at the barrier.
| [in] | the_barrier | is the barrier to obtain the number of blocked threads for |
References CORE_barrier_Control::number_of_waiting_threads.
| void _CORE_barrier_Initialize | ( | CORE_barrier_Control * | the_barrier, | |
| CORE_barrier_Attributes * | the_barrier_attributes | |||
| ) |
This routine initializes the barrier based on the parameters passed.
| [in] | the_barrier | is the barrier to initialize |
| [in] | the_barrier_attributes | define the behavior of this instance |
| RTEMS_INLINE_ROUTINE boolean _CORE_barrier_Is_automatic | ( | CORE_barrier_Attributes * | the_attribute | ) |
This function returns TRUE if the automatic release attribute is enabled in the attribute_set and FALSE otherwise.
| [in] | the_attribute | is the attribute set to test |
References CORE_BARRIER_AUTOMATIC_RELEASE, and CORE_barrier_Attributes::discipline.
| 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 manually releases the barrier. All of the threads waiting for the barrier will be readied.
| [in] | the_barrier | is the barrier to surrender |
| [in] | id | is the id of the object for a remote unblock |
| [in] | api_barrier_mp_support | is the routine to invoke if the thread unblocked is remote |
| void _CORE_barrier_Wait | ( | CORE_barrier_Control * | the_barrier, | |
| Objects_Id | id, | |||
| boolean | wait, | |||
| Watchdog_Interval | timeout, | |||
| CORE_barrier_API_mp_support_callout | api_barrier_mp_support | |||
| ) |
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.
| [in] | the_barrier | is the barrier to wait for |
| [in] | id | is the id of the object being waited upon |
| [in] | wait | is TRUE if the calling thread is willing to wait |
| [in] | timeout | is the number of ticks the calling thread is willing to wait if wait is TRUE. |
| [in] | api_barrier_mp_support | is the routine to invoke if the thread unblocked is remote |
1.5.6