XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
Flg.hxx
浏览该文件的文档.
1
13#ifndef __xwos_cxx_sync_Flg_hxx__
14#define __xwos_cxx_sync_Flg_hxx__
15
16#include <xwos/cxx/Bmp.hxx>
17#include <xwos/cxx/sync/Sel.hxx>
18
19extern "C" {
20#include <xwos/osal/sync/flg.h>
21}
22
23namespace xwos {
24namespace sync {
25
60template<xwsz_t TNum>
61class Flg
62{
63 public:
74 };
75
80 FlgWait = 0,
84 };
85
86 protected:
87 struct xwos_flg * mFlgPtr;
88 protected:
89 Flg() : mFlgPtr(nullptr) {}
90 ~Flg() { mFlgPtr = nullptr; }
91
92 public:
96 xwsz_t num() { return TNum; }
97
105
128 xwer_t set(unsigned long pos) { return xwos_flg_s1i(mFlgPtr, pos); }
132 xwer_t set(long pos) { return xwos_flg_s1i(mFlgPtr, (xwsq_t)pos); }
133
156 xwer_t clear(unsigned long pos) { return xwos_flg_c0i(mFlgPtr, (xwsq_t)pos); }
160 xwer_t clear(long pos) { return xwos_flg_c0i(mFlgPtr, (xwsq_t)pos); }
161
162
185 xwer_t toggle(unsigned long pos) { return xwos_flg_x1i(mFlgPtr, (xwsq_t)pos); }
189 xwer_t toggle(long pos) { return xwos_flg_x1i(mFlgPtr, (xwsq_t)pos); }
190
241 xwer_t wait(enum Trigger trigger, bool consumption,
242 xwos::Bmp<TNum> * origin, xwos::Bmp<TNum> * msk,
243 enum WaitMode mode = WaitMode::FlgWait, xwtm_t to = XWTM_MAX) {
244 xwer_t rc;
245 switch (mode) {
247 rc = xwos_flg_wait(mFlgPtr, (enum xwos_flg_trigger_em)trigger,
248 consumption, origin->mData, msk->mData);
249 break;
251 rc = xwos_flg_wait_to(mFlgPtr, (enum xwos_flg_trigger_em)trigger,
252 consumption, origin->mData, msk->mData, to);
253 break;
256 consumption, origin->mData, msk->mData);
257 break;
259 rc = xwos_flg_trywait(mFlgPtr, (enum xwos_flg_trigger_em)trigger,
260 consumption, origin->mData, msk->mData);
261 break;
262 default:
263 rc = xwos_flg_wait(mFlgPtr, (enum xwos_flg_trigger_em)trigger,
264 consumption, origin->mData, msk->mData);
265 break;
266 }
267 return rc;
268 }
269
284 template<xwsz_t TSelNum>
285 xwer_t bind(Sel<TSelNum> * sel, long pos) {
286 return xwos_flg_bind(mFlgPtr, sel->getXwosObj(), (xwsq_t)pos);
287 }
291 template<xwsz_t TSelNum>
292 xwer_t bind(Sel<TSelNum> & sel, long pos) {
293 return xwos_flg_bind(mFlgPtr, sel.getXwosObj(), (xwsq_t)pos);
294 }
295
306 template<xwsz_t TSelNum>
308 return xwos_flg_unbind(mFlgPtr, sel->getXwosObj());
309 }
313 template<xwsz_t TSelNum>
315 return xwos_flg_unbind(mFlgPtr, sel.getXwosObj());
316 }
317
321 struct xwos_flg * getXwosObj() { return mFlgPtr; }
322};
323
328} // namespace sync
329} // namespace xwos
330
331#endif /* xwos/cxx/sync/Flg.hxx */
xwos::Bmp
xwos::sync::Sel
xwbmp_t mData[(((TNum)+(8U *sizeof(xwbmp_t)) - 1U)/(8U *sizeof(xwbmp_t)))]
Definition Bmp.hxx:112
事件标志基类
Definition Flg.hxx:62
xwer_t clear(unsigned long pos)
Definition Flg.hxx:156
xwer_t unbind(Sel< TSelNum > *sel)
从信号选择器上解绑事件标志对象
Definition Flg.hxx:307
xwer_t clear(xwos::Bmp< TNum > &msk)
Definition Flg.hxx:152
Trigger
触发条件枚举
Definition Flg.hxx:67
struct xwos_flg * mFlgPtr
Definition Flg.hxx:87
xwer_t unbind(Sel< TSelNum > &sel)
Definition Flg.hxx:314
xwer_t toggle(xwos::Bmp< TNum > *msk)
同时翻转多个事件标志位
Definition Flg.hxx:177
xwer_t bind(Sel< TSelNum > &sel, long pos)
Definition Flg.hxx:292
xwer_t toggle(xwos::Bmp< TNum > &msk)
Definition Flg.hxx:181
xwer_t wait(enum Trigger trigger, bool consumption, xwos::Bmp< TNum > *origin, xwos::Bmp< TNum > *msk, enum WaitMode mode=WaitMode::FlgWait, xwtm_t to=((xwtm_t)((~(xwu64_t) 0) > > 1)))
等待事件标志
Definition Flg.hxx:241
xwer_t clear(long pos)
Definition Flg.hxx:160
xwer_t set(long pos)
Definition Flg.hxx:132
xwer_t set(xwos::Bmp< TNum > &msk)
Definition Flg.hxx:124
xwer_t clear(xwos::Bmp< TNum > *msk)
同时清除多个事件标志位
Definition Flg.hxx:148
xwer_t toggle(long pos)
Definition Flg.hxx:189
void read(xwos::Bmp< TNum > *out)
读取事件标志位图的值
Definition Flg.hxx:104
xwer_t bind(Sel< TSelNum > *sel, long pos)
绑定事件标志对象到信号选择器
Definition Flg.hxx:285
xwsz_t num()
获取事件的最大数量
Definition Flg.hxx:96
xwer_t set(xwos::Bmp< TNum > *msk)
同时设置多个事件标志位
Definition Flg.hxx:120
WaitMode
等待模式枚举
Definition Flg.hxx:79
@ FlgWaitUninterruptable
Definition Flg.hxx:82
xwer_t set(unsigned long pos)
Definition Flg.hxx:128
struct xwos_flg * getXwosObj()
获取XWOS对象指针
Definition Flg.hxx:321
xwer_t toggle(unsigned long pos)
Definition Flg.hxx:185
信号选择器基类
Definition Sel.hxx:55
struct xwos_sel * getXwosObj()
获取XWOS对象指针
Definition Sel.hxx:196
xws64_t xwtm_t
XWOS系统时间 (有符号)
Definition type.h:742
#define XWTM_MAX
xwtm_t 的最大值
Definition type.h:755
signed long xwer_t
Definition type.h:554
unsigned long xwsz_t
Definition type.h:339
unsigned long xwsq_t
Definition type.h:445
uint32_t xwu32_t
Definition type.h:266
static xwer_t xwos_flg_x1m(struct xwos_flg *flg, xwbmp_t msk[])
XWOS API:同时翻转多个事件标志位
Definition flg.h:452
static xwer_t xwos_flg_x1i(struct xwos_flg *flg, xwsq_t pos)
XWOS API:翻转单个事件标志位
Definition flg.h:475
static xwer_t xwos_flg_c0i(struct xwos_flg *flg, xwsq_t pos)
XWOS API:清除单个事件标志位
Definition flg.h:430
static xwer_t xwos_flg_s1m(struct xwos_flg *flg, xwbmp_t msk[])
XWOS API:同时设置多个事件标志位
Definition flg.h:362
static xwer_t xwos_flg_bind(struct xwos_flg *flg, struct xwos_sel *sel, xwsq_t pos)
XWOS API:绑定事件标志对象到信号选择器
Definition flg.h:307
static xwer_t xwos_flg_wait(struct xwos_flg *flg, enum xwos_flg_trigger_em trigger, bool consumption, xwbmp_t origin[], xwbmp_t msk[])
XWOS API:等待事件
Definition flg.h:534
static xwer_t xwos_flg_wait_to(struct xwos_flg *flg, enum xwos_flg_trigger_em trigger, bool consumption, xwbmp_t origin[], xwbmp_t msk[], xwtm_t to)
XWOS API:限时等待触发事件
Definition flg.h:585
xwos_flg_trigger_em
事件标志触发条件枚举
Definition flg.h:114
static xwer_t xwos_flg_unbind(struct xwos_flg *flg, struct xwos_sel *sel)
XWOS API:从信号选择器上解绑事件标志对象
Definition flg.h:324
static xwer_t xwos_flg_wait_unintr(struct xwos_flg *flg, enum xwos_flg_trigger_em trigger, bool consumption, xwbmp_t origin[], xwbmp_t msk[])
XWOS API:等待事件,且等待不可被中断
Definition flg.h:674
static xwer_t xwos_flg_s1i(struct xwos_flg *flg, xwsq_t pos)
XWOS API:设置单个事件标志位
Definition flg.h:385
static xwer_t xwos_flg_trywait(struct xwos_flg *flg, enum xwos_flg_trigger_em trigger, bool consumption, xwbmp_t origin[], xwbmp_t msk[])
XWOS API:检查触发事件
Definition flg.h:629
static xwer_t xwos_flg_read(struct xwos_flg *flg, xwbmp_t out[])
XWOS API:读取事件标志位图的值
Definition flg.h:491
static xwer_t xwos_flg_c0m(struct xwos_flg *flg, xwbmp_t msk[])
XWOS API:同时清除多个事件标志位
Definition flg.h:407
@ XWOS_FLG_TRIGGER_CLR_ANY
Definition flg.h:118
@ XWOS_FLG_TRIGGER_CLR_ALL
Definition flg.h:117
@ XWOS_FLG_TRIGGER_SET_ANY
Definition flg.h:116
@ XWOS_FLG_TRIGGER_TGL_ANY
Definition flg.h:120
@ XWOS_FLG_TRIGGER_TGL_ALL
Definition flg.h:119
@ XWOS_FLG_TRIGGER_SET_ALL
Definition flg.h:115
Definition Bmp.hxx:21
XWOS API:事件标志对象
Definition flg.h:94
操作系统抽象层:事件标志