RTEMS
Files | Classes | Macros | Enumerations | Functions
Barrier Handler

Functionality for Foundation Barrier Services. More...

Files

file  corebarrier.h
 Constants and Structures Associated with the Barrier Handler.
 
file  corebarrierimpl.h
 Inlined Routines Associated with the SuperCore Barrier.
 
file  corebarrier.c
 Initialize CORE Barrier.
 
file  corebarrierrelease.c
 Manually releases the Barrier.
 
file  corebarrierwait.c
 Wait For The Barrier.
 

Classes

struct  CORE_barrier_Attributes
 
struct  CORE_barrier_Control
 

Macros

#define CORE_BARRIER_TQ_OPERATIONS   &_Thread_queue_Operations_FIFO
 

Enumerations

enum  CORE_barrier_Disciplines { CORE_BARRIER_AUTOMATIC_RELEASE, CORE_BARRIER_MANUAL_RELEASE }
 

Functions

void _CORE_barrier_Initialize (CORE_barrier_Control *the_barrier, CORE_barrier_Attributes *the_barrier_attributes)
 Initializes the core barrier. More...
 
static __inline__ void _CORE_barrier_Destroy (CORE_barrier_Control *the_barrier)
 Destroys the core barrier. More...
 
static __inline__ void _CORE_barrier_Acquire_critical (CORE_barrier_Control *the_barrier, Thread_queue_Context *queue_context)
 Acquires critical core barrier. More...
 
static __inline__ void _CORE_barrier_Release (CORE_barrier_Control *the_barrier, Thread_queue_Context *queue_context)
 Releases core barrier. More...
 
Status_Control _CORE_barrier_Seize (CORE_barrier_Control *the_barrier, Thread_Control *executing, bool wait, Thread_queue_Context *queue_context)
 Waits for the barrier. More...
 
uint32_t _CORE_barrier_Do_flush (CORE_barrier_Control *the_barrier, Thread_queue_Flush_filter filter, Thread_queue_Context *queue_context)
 Flushes the barrier. More...
 
static __inline__ uint32_t _CORE_barrier_Surrender (CORE_barrier_Control *the_barrier, Thread_queue_Context *queue_context)
 Manually releases the barrier. More...
 
static __inline__ void _CORE_barrier_Flush (CORE_barrier_Control *the_barrier, Thread_queue_Context *queue_context)
 Flushes the barrier using _CORE_barrier_Do_flush(). More...
 
static __inline__ bool _CORE_barrier_Is_automatic (CORE_barrier_Attributes *the_attribute)
 Checks if the barrier is automatic. More...
 
static __inline__ uint32_t _CORE_barrier_Get_number_of_waiting_threads (CORE_barrier_Control *the_barrier)
 Returns the number of currently waiting threads. More...
 

Detailed Description

Functionality for Foundation Barrier Services.

This handler encapsulates functionality which provides the foundation Barrier services used in all of the APIs supported by RTEMS.

Enumeration Type Documentation

◆ CORE_barrier_Disciplines

Flavors of barriers.

Enumerator
CORE_BARRIER_AUTOMATIC_RELEASE 

This specifies that the barrier will automatically release when the user specified number of threads have arrived at the barrier.

CORE_BARRIER_MANUAL_RELEASE 

This specifies that the user will have to manually release the barrier in order to release the waiting threads.

Definition at line 46 of file corebarrier.h.

Function Documentation

◆ _CORE_barrier_Acquire_critical()

static __inline__ void _CORE_barrier_Acquire_critical ( CORE_barrier_Control the_barrier,
Thread_queue_Context queue_context 
)
static

Acquires critical core barrier.

Parameters
[in,out]the_barrierThe barrier to acquire.
queue_contextThe thread queue context.

Definition at line 73 of file corebarrierimpl.h.

◆ _CORE_barrier_Destroy()

static __inline__ void _CORE_barrier_Destroy ( CORE_barrier_Control the_barrier)
static

Destroys the core barrier.

This routine destroys the barrier.

Parameters
[out]the_barrierThe barrier to destroy.

Definition at line 60 of file corebarrierimpl.h.

◆ _CORE_barrier_Do_flush()

uint32_t _CORE_barrier_Do_flush ( CORE_barrier_Control the_barrier,
Thread_queue_Flush_filter  filter,
Thread_queue_Context queue_context 
)

Flushes the barrier.

Parameters
[in,out]the_barrierThe barrier to flush.
[out]filterThe filter for flushing.
[out]queue_contextThe thread queue context.

Definition at line 24 of file corebarrierrelease.c.

◆ _CORE_barrier_Flush()

static __inline__ void _CORE_barrier_Flush ( CORE_barrier_Control the_barrier,
Thread_queue_Context queue_context 
)
static

Flushes the barrier using _CORE_barrier_Do_flush().

Parameters
[in,out]the_barrierThe barrier to flush.
queue_contextThe thread queue context.

Definition at line 159 of file corebarrierimpl.h.

◆ _CORE_barrier_Get_number_of_waiting_threads()

static __inline__ uint32_t _CORE_barrier_Get_number_of_waiting_threads ( CORE_barrier_Control the_barrier)
static

Returns the number of currently waiting threads.

This routine returns the number of threads currently waiting at the barrier.

Parameters
[in]the_barrierThe barrier to obtain the number of blocked threads of.
Returns
the current count of waiting threads of this barrier.

Definition at line 200 of file corebarrierimpl.h.

◆ _CORE_barrier_Initialize()

void _CORE_barrier_Initialize ( CORE_barrier_Control the_barrier,
CORE_barrier_Attributes the_barrier_attributes 
)

Initializes the core barrier.

This routine initializes the barrier based on the parameters passed.

Parameters
[out]the_barrierThe barrier to initialize.
[out]the_barrier_attributesThe attributes which define the behavior of this instance.

Definition at line 23 of file corebarrier.c.

◆ _CORE_barrier_Is_automatic()

static __inline__ bool _CORE_barrier_Is_automatic ( CORE_barrier_Attributes the_attribute)
static

Checks if the barrier is automatic.

This function returns true if the automatic release attribute is enabled in the attribute_set and false otherwise.

Parameters
the_attributeThe attribute set to test.
Return values
trueThe automatic release attribute is enabled.
falseThe automatic release attribute is not enabled.

Definition at line 182 of file corebarrierimpl.h.

◆ _CORE_barrier_Release()

static __inline__ void _CORE_barrier_Release ( CORE_barrier_Control the_barrier,
Thread_queue_Context queue_context 
)
static

Releases core barrier.

Parameters
[in,out]the_barrierThe barrier to release.
queue_contextThe thread queue context.

Definition at line 87 of file corebarrierimpl.h.

◆ _CORE_barrier_Seize()

Status_Control _CORE_barrier_Seize ( CORE_barrier_Control the_barrier,
Thread_Control executing,
bool  wait,
Thread_queue_Context queue_context 
)

Waits for the barrier.

This routine waits 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.

Parameters
[in,out]the_barrierThe barrier to wait for.
[in,out]executingThe currently executing thread.
waitThis parameter is true if the calling thread is willing to wait.
queue_contextThe thread queue context.
Returns
The method status.

Definition at line 25 of file corebarrierwait.c.

◆ _CORE_barrier_Surrender()

static __inline__ uint32_t _CORE_barrier_Surrender ( CORE_barrier_Control the_barrier,
Thread_queue_Context queue_context 
)
static

Manually releases the barrier.

This routine manually releases the barrier. All of the threads waiting for the barrier will be readied.

Parameters
[in,out]the_barrierThe barrier to surrender.
[out]queue_contextThe thread queue context.
Returns
The number of unblocked threads.

Definition at line 141 of file corebarrierimpl.h.