IntrOS
Loading...
Searching...
No Matches
Event queue

event queues (unsigned values) More...

Macros

#define OS_EVQ_BUFFER(buf, limit)
 define event queue data buffer
#define OS_EVQ(evq, limit)
 define and initialize an event queue object
#define static_EVQ(evq, limit)
 static alias of OS_EVQ()
#define EVQ_INIT(limit)
 create and initialize an event queue object
#define EVQ_CREATE(limit)
 create and initialize an event queue object
#define EVQ_NEW   EVQ_CREATE
 alias of EVQ_CREATE()

Functions

void evq_init (evq_t *evq, unsigned *data, size_t bufsize)
 initialize an event queue object
void evq_reset (evq_t *evq)
 reset the event queue object and wake up all waiting tasks with 'E_STOPPED' event value
void evq_kill (evq_t *evq)
 alias of evq_reset()
int evq_take (evq_t *evq, unsigned *event)
 try to transfer event value from the event queue object, don't wait if the event queue object is empty
int evq_tryWait (evq_t *evq, unsigned *event)
 alias of evq_take()
int evq_takeAsync (evq_t *evq, unsigned *event)
 Async alias of evq_take().
int evq_waitFor (evq_t *evq, unsigned *event, cnt_t delay)
 try to transfer event value from the event queue object, wait for given duration of time while the event queue object is empty
int evq_waitUntil (evq_t *evq, unsigned *event, cnt_t time)
 try to transfer event value from the event queue object, wait until given timepoint while the event queue object is empty
int evq_wait (evq_t *evq, unsigned *event)
 try to transfer event value from the event queue object, wait indefinitely while the event queue object is empty
int evq_waitAsync (evq_t *evq, unsigned *event)
 Async alias of evq_wait().
int evq_give (evq_t *evq, unsigned event)
 try to transfer event value to the event queue object, don't wait if the event queue object is full
int evq_giveAsync (evq_t *evq, unsigned event)
 Async alias of evq_give().
int evq_sendFor (evq_t *evq, unsigned event, cnt_t delay)
 try to transfer event value to the event queue object, wait for given duration of time while the event queue object is full
int evq_sendUntil (evq_t *evq, unsigned event, cnt_t time)
 try to transfer event value to the event queue object, wait until given timepoint while the event queue object is full
int evq_send (evq_t *evq, unsigned event)
 try to transfer event value to the event queue object, wait indefinitely while the event queue object is full
int evq_sendAsync (evq_t *evq, unsigned event)
 Async alias of evq_send().
void evq_push (evq_t *evq, unsigned event)
 transfer event value to the event queue object, remove the oldest event value if the event queue object is full
unsigned evq_count (evq_t *evq)
 return the amount of data contained in the event queue
unsigned evq_space (evq_t *evq)
 return the amount of free space in the event queue
unsigned evq_limit (evq_t *evq)
 return the size of the event queue

Detailed Description

event queues (unsigned values)

Macro Definition Documentation

◆ OS_EVQ_BUFFER

#define OS_EVQ_BUFFER ( buf,
limit )
Value:
unsigned buf[limit]

define event queue data buffer

Parameters
bufname of the buffer (passed to the init function)
limitsize of a queue (max number of stored events)

◆ OS_EVQ

#define OS_EVQ ( evq,
limit )
Value:
static unsigned evq##__buf[limit]; \
evq_t evq[] = { _EVQ_INIT( limit, evq##__buf ) }

define and initialize an event queue object

Parameters
evqname of a pointer to event queue object
limitsize of a queue (max number of stored events)

◆ static_EVQ

#define static_EVQ ( evq,
limit )
Value:
static unsigned evq##__buf[limit]; \
static evq_t evq[] = { _EVQ_INIT( limit, evq##__buf ) }

static alias of OS_EVQ()

◆ EVQ_INIT

#define EVQ_INIT ( limit)
Value:
_EVQ_INIT( limit, _EVQ_DATA( limit ) )

create and initialize an event queue object

Parameters
limitsize of a queue (max number of stored events)
Returns
event queue object
Note
use only in 'C' code

◆ EVQ_CREATE

#define EVQ_CREATE ( limit)
Value:
{ EVQ_INIT ( limit ) }
#define EVQ_INIT(limit)
create and initialize an event queue object
Definition oseventqueue.h:137

create and initialize an event queue object

Parameters
limitsize of a queue (max number of stored events)
Returns
event queue object as array (id)
Note
use only in 'C' code

Function Documentation

◆ evq_init()

void evq_init ( evq_t * evq,
unsigned * data,
size_t bufsize )

initialize an event queue object

Parameters
evqpointer to event queue object
dataevent queue data buffer
bufsizesize of the data buffer (in bytes)

◆ evq_reset()

void evq_reset ( evq_t * evq)

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

Parameters
evqpointer to event queue object
Note
use only in thread mode

◆ evq_take()

int evq_take ( evq_t * evq,
unsigned * event )

try to transfer event value from the event queue object, don't wait if the event queue object is empty

Parameters
evqpointer to event queue object
eventpointer to store event value
Return values
E_SUCCESSevent value was successfully transferred from the event queue object
E_TIMEOUTevent queue object is empty, try again
Note
use Async alias for communication with unmasked interrupt handlers

◆ evq_waitFor()

int evq_waitFor ( evq_t * evq,
unsigned * event,
cnt_t delay )

try to transfer event value from the event queue object, wait for given duration of time while the event queue object is empty

Parameters
evqpointer to event queue object
eventpointer to store event value
delayduration of time (maximum number of ticks to wait while the event queue object is empty)
  • IMMEDIATE: don't wait if the event queue object is empty
  • INFINITE: wait indefinitely while the event queue object is empty
Return values
E_SUCCESSevent value was successfully transferred from the event queue object
E_STOPPEDevent queue object was reseted before the specified timeout expired
E_TIMEOUTevent queue object is empty and was not received data before the specified timeout expired

◆ evq_waitUntil()

int evq_waitUntil ( evq_t * evq,
unsigned * event,
cnt_t time )

try to transfer event value from the event queue object, wait until given timepoint while the event queue object is empty

Parameters
evqpointer to event queue object
eventpointer to store event value
timetimepoint value
Return values
E_SUCCESSevent value was successfully transferred from the event queue object
E_STOPPEDevent queue object was reseted before the specified timeout expired
E_TIMEOUTevent queue object is empty and was not received data before the specified timeout expired

◆ evq_wait()

int evq_wait ( evq_t * evq,
unsigned * event )
inline

try to transfer event value from the event queue object, wait indefinitely while the event queue object is empty

Parameters
evqpointer to event queue object
eventpointer to store event value
Return values
E_SUCCESSevent value was successfully transferred from the event queue object
E_STOPPEDevent queue object was reseted (unavailable for async version)
Note
use Async alias for communication with unmasked interrupt handlers

◆ evq_give()

int evq_give ( evq_t * evq,
unsigned event )

try to transfer event value to the event queue object, don't wait if the event queue object is full

Parameters
evqpointer to event queue object
eventevent value
Return values
E_SUCCESSevent value was successfully transferred to the event queue object
E_TIMEOUTevent queue object is full, try again
Note
use Async alias for communication with unmasked interrupt handlers

◆ evq_sendFor()

int evq_sendFor ( evq_t * evq,
unsigned event,
cnt_t delay )

try to transfer event value to the event queue object, wait for given duration of time while the event queue object is full

Parameters
evqpointer to event queue object
eventevent value
delayduration of time (maximum number of ticks to wait while the event queue object is full)
  • IMMEDIATE: don't wait if the event queue object is full
  • INFINITE: wait indefinitely while the event queue object is full
Return values
E_SUCCESSevent value was successfully transferred to the event queue object
E_STOPPEDevent queue object was reseted before the specified timeout expired
E_TIMEOUTevent queue object is full and was not issued data before the specified timeout expired

◆ evq_sendUntil()

int evq_sendUntil ( evq_t * evq,
unsigned event,
cnt_t time )

try to transfer event value to the event queue object, wait until given timepoint while the event queue object is full

Parameters
evqpointer to event queue object
eventevent value
timetimepoint value
Return values
E_SUCCESSevent value was successfully transferred to the event queue object
E_STOPPEDevent queue object was reseted before the specified timeout expired
E_TIMEOUTevent queue object is full and was not issued data before the specified timeout expired

◆ evq_send()

int evq_send ( evq_t * evq,
unsigned event )
inline

try to transfer event value to the event queue object, wait indefinitely while the event queue object is full

Parameters
evqpointer to event queue object
eventevent value
Return values
E_SUCCESSevent value was successfully transferred to the event queue object
E_STOPPEDevent queue object was reseted (unavailable for async version)
Note
use Async alias for communication with unmasked interrupt handlers

◆ evq_push()

void evq_push ( evq_t * evq,
unsigned event )

transfer event value to the event queue object, remove the oldest event value if the event queue object is full

Parameters
evqpointer to event queue object
eventevent value

◆ evq_count()

unsigned evq_count ( evq_t * evq)

return the amount of data contained in the event queue

Parameters
evqpointer to event queue object
Returns
amount of data contained in the event queue

◆ evq_space()

unsigned evq_space ( evq_t * evq)

return the amount of free space in the event queue

Parameters
evqpointer to event queue object
Returns
amount of free space in the event queue

◆ evq_limit()

unsigned evq_limit ( evq_t * evq)

return the size of the event queue

Parameters
evqpointer to event queue object
Returns
size of the event queue