50#define flgAnyNew ( flgAny | flgNew )
51#define flgAllNew ( flgAll | flgNew )
57typedef struct __flg flg_t;
66typedef struct __flg flg_id [];
83#define _FLG_INIT( _init ) { _OBJ_INIT(), _init }
95#define _VA_FLG( _init ) ( _init + 0 )
104#define OS_FLG( flg, ... ) \
105 flg_t flg[] = { _FLG_INIT( _VA_FLG(__VA_ARGS__) ) }
108#define static_FLG( flg, ... ) \
109 static flg_t flg[] = { _FLG_INIT( _VA_FLG(__VA_ARGS__) ) }
122#define FLG_INIT( ... ) \
123 _FLG_INIT( _VA_FLG(__VA_ARGS__) )
137#define FLG_CREATE( ... ) \
138 { FLG_INIT ( _VA_FLG(__VA_ARGS__) ) }
155void flg_init( flg_t *flg,
unsigned init );
186unsigned flg_take( flg_t *flg,
unsigned flags,
unsigned mode );
190unsigned flg_tryWait( flg_t *flg,
unsigned flags,
unsigned mode ) {
return flg_take(flg, flags, mode); }
211int flg_waitFor( flg_t *flg,
unsigned flags,
unsigned mode, cnt_t delay );
230int flg_waitUntil( flg_t *flg,
unsigned flags,
unsigned mode, cnt_t time );
259unsigned flg_give( flg_t *flg,
unsigned flags );
263unsigned flg_set( flg_t *flg,
unsigned flags ) {
return flg_give(flg, flags); }
274unsigned flg_clear( flg_t *flg,
unsigned flags );
292#if defined(__cplusplus)
302struct Flag :
public __flg
306 Flag(
const unsigned _init = 0 ): __flg _FLG_INIT(_init) {}
308 ~Flag() { assert(__flg::obj.queue ==
nullptr); }
313 assert(_src.obj.queue ==
nullptr);
318 Flag& operator=(
const Flag& ) =
delete;
322 unsigned take (
unsigned _flags,
unsigned _mode =
flgAll ) {
return flg_take (
this, _flags, _mode); }
330 unsigned set (
unsigned _flags ) {
return flg_set (
this, _flags); }
#define INFINITE
infinite waiting
Definition osbase.h:250
unsigned flg_tryWait(flg_t *flg, unsigned flags, unsigned mode)
alias of flg_take()
Definition osflag.h:189
unsigned flg_set(flg_t *flg, unsigned flags)
alias of flg_give()
Definition osflag.h:262
void flg_kill(flg_t *flg)
alias of flg_reset()
Definition osflag.h:168
unsigned flg_take(flg_t *flg, unsigned flags, unsigned mode)
check if required flags have been set in the flag object
unsigned flg_get(flg_t *flg)
get current flags from flag object
unsigned flg_give(flg_t *flg, unsigned flags)
set given flags in flag object
unsigned flg_clear(flg_t *flg, unsigned flags)
clear given flags in flag object
void flg_reset(flg_t *flg)
reset the flag object and wake up all waiting tasks with 'E_STOPPED' event value
#define flgAll
wait for all flags to be set
Definition osflag.h:47
void flg_init(flg_t *flg, unsigned init)
initialize a flag object
int flg_waitFor(flg_t *flg, unsigned flags, unsigned mode, cnt_t delay)
wait on flag object for given flags for given duration of time
int flg_waitUntil(flg_t *flg, unsigned flags, unsigned mode, cnt_t time)
wait on flag object for given flags until given timepoint
int flg_wait(flg_t *flg, unsigned flags, unsigned mode)
wait indefinitely on flag object until required flags have been set
Definition osflag.h:247
static constexpr rep until(const std::chrono::time_point< Clock, _Duration > &_time)
time point in ticks, rounded up to whole ticks (only a time point of this clock)
Definition osclock.h:109
static constexpr rep count(const std::chrono::duration< _Rep, _Period > &_delay)
delay in ticks, rounded up to whole ticks; negative delay: IMMEDIATE, delay out of range: INFINITE
Definition osclock.h:102
create and initialize a flag object
Definition osflag.h:302
int wait(unsigned _flags, unsigned _mode=flgAll)
flg_wait()
Definition osflag.h:327
unsigned set(unsigned _flags)
flg_set()
Definition osflag.h:329
int waitFor(unsigned _flags, unsigned _mode, const T &_delay)
flg_waitFor()
Definition osflag.h:324
void reset()
flg_reset()
Definition osflag.h:319
unsigned clear(unsigned _flags)
flg_clear()
Definition osflag.h:330
unsigned get()
flg_get()
Definition osflag.h:331
unsigned give(unsigned _flags)
flg_give()
Definition osflag.h:328
void kill()
flg_kill()
Definition osflag.h:320
unsigned take(unsigned _flags, unsigned _mode=flgAll)
flg_take()
Definition osflag.h:321
int waitUntil(unsigned _flags, unsigned _mode, const T &_time)
flg_waitUntil()
Definition osflag.h:326
unsigned tryWait(unsigned _flags, unsigned _mode=flgAll)
flg_tryWait()
Definition osflag.h:322
constexpr Flag(const unsigned _init=0)
constructor, see the constructor parameters of the class
Definition osflag.h:305