IntrOS
Loading...
Searching...
No Matches
Barrier

barriers (synchronization of a group of tasks) More...

Macros

#define OS_BAR(bar, limit)
 define and initialize a barrier object
#define static_BAR(bar, limit)
 static alias of OS_BAR()
#define BAR_INIT(limit)
 create and initialize a barrier object
#define BAR_CREATE(limit)
 create and initialize a barrier object
#define BAR_NEW   BAR_CREATE
 alias of BAR_CREATE()

Functions

void bar_init (bar_t *bar, unsigned limit)
 initialize a barrier object
void bar_reset (bar_t *bar)
 reset the barrier object and wake up all waiting tasks with 'E_STOPPED' event value
void bar_kill (bar_t *bar)
 alias of bar_reset()
int bar_waitFor (bar_t *bar, cnt_t delay)
 wait for release the barrier object for given duration of time
int bar_waitUntil (bar_t *bar, cnt_t time)
 wait for release the barrier object until given timepoint
int bar_wait (bar_t *bar)
 wait indefinitely until the barrier object has been released

Detailed Description

barriers (synchronization of a group of tasks)

Macro Definition Documentation

◆ OS_BAR

#define OS_BAR ( bar,
limit )
Value:
bar_t bar[] = { _BAR_INIT( limit ) }

define and initialize a barrier object

Parameters
barname of a pointer to barrier object
limitnumber of tasks that must call bar_wait[Until|For] function to release the barrier object

◆ static_BAR

#define static_BAR ( bar,
limit )
Value:
static bar_t bar[] = { _BAR_INIT( limit ) }

static alias of OS_BAR()

◆ BAR_INIT

#define BAR_INIT ( limit)
Value:
_BAR_INIT( limit )

create and initialize a barrier object

Parameters
limitnumber of tasks that must call bar_wait[Until|For] function to release the barrier object
Returns
barrier object
Note
use only in 'C' code

◆ BAR_CREATE

#define BAR_CREATE ( limit)
Value:
{ BAR_INIT ( limit ) }
#define BAR_INIT(limit)
create and initialize a barrier object
Definition osbarrier.h:100

create and initialize a barrier object

Parameters
limitnumber of tasks that must call bar_wait[Until|For] function to release the barrier object
Returns
barrier object as array (id)
Note
use only in 'C' code

Function Documentation

◆ bar_init()

void bar_init ( bar_t * bar,
unsigned limit )

initialize a barrier object

Parameters
barpointer to barrier object
limitnumber of tasks that must call bar_wait[Until|For] function to release the barrier object

◆ bar_reset()

void bar_reset ( bar_t * bar)

reset the barrier object and wake up all waiting tasks with 'E_STOPPED' event value

Parameters
barpointer to barrier object
Note
use only in thread mode

◆ bar_waitFor()

int bar_waitFor ( bar_t * bar,
cnt_t delay )

wait for release the barrier object for given duration of time

Parameters
barpointer to barrier object
delayduration of time (maximum number of ticks to wait for release the barrier object)
  • IMMEDIATE: don't wait if the barrier object can't be released
  • INFINITE: wait indefinitely until the barrier object has been released
Return values
E_SUCCESSbarrier object was successfully released
E_STOPPEDbarrier object was reseted before the specified timeout expired
E_TIMEOUTbarrier object was not released before the specified timeout expired

◆ bar_waitUntil()

int bar_waitUntil ( bar_t * bar,
cnt_t time )

wait for release the barrier object until given timepoint

Parameters
barpointer to barrier object
timetimepoint value
Return values
E_SUCCESSbarrier object was successfully released
E_STOPPEDbarrier object was reseted before the specified timeout expired
E_TIMEOUTbarrier object was not released before the specified timeout expired

◆ bar_wait()

int bar_wait ( bar_t * bar)
inline

wait indefinitely until the barrier object has been released

Parameters
barpointer to barrier object
Return values
E_SUCCESSbarrier object was successfully released
E_STOPPEDbarrier object was reseted