XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
flg.h
浏览该文件的文档.
1
13#ifndef __xwos_osal_sync_flg_h__
14#define __xwos_osal_sync_flg_h__
15
16#include <xwos/standard.h>
18#include <xwos/osal/time.h>
19#include <xwos/osal/sync/sel.h>
20
90struct xwos_flg {
91 struct xwosdl_flg osflg;
92};
93
97typedef struct {
98 struct xwos_flg * flg;
100} xwos_flg_d;
101
105#define XWOS_FLG_NILD ((xwos_flg_d){NULL, 0,})
106
111 XWOS_FLG_TRIGGER_SET_ALL = XWOSDL_FLG_TRIGGER_SET_ALL,
112 XWOS_FLG_TRIGGER_SET_ANY = XWOSDL_FLG_TRIGGER_SET_ANY,
113 XWOS_FLG_TRIGGER_CLR_ALL = XWOSDL_FLG_TRIGGER_CLR_ALL,
114 XWOS_FLG_TRIGGER_CLR_ANY = XWOSDL_FLG_TRIGGER_CLR_ANY,
115 XWOS_FLG_TRIGGER_TGL_ALL = XWOSDL_FLG_TRIGGER_TGL_ALL,
116 XWOS_FLG_TRIGGER_TGL_ANY = XWOSDL_FLG_TRIGGER_TGL_ANY,
117};
118
133 xwbmp_t * bmp, xwbmp_t * msk)
134{
135 return xwosdl_flg_init(&flg->osflg, num, bmp, msk);
136}
137
149{
150 return xwosdl_flg_fini(&flg->osflg);
151}
152
168{
169 return xwosdl_flg_grab(&flg->osflg);
170}
171
187{
188 return xwosdl_flg_put(&flg->osflg);
189}
190
204{
205 return xwosdl_flg_create((xwosdl_flg_d *)flgd, num);
206}
207
219{
220 return xwosdl_flg_delete(&flgd.flg->osflg, flgd.tik);
221}
222
236{
237 return xwosdl_flg_acquire(&flgd.flg->osflg, flgd.tik);
238}
239
253{
254 return xwosdl_flg_release(&flgd.flg->osflg, flgd.tik);
255}
256
266{
267 return xwosdl_flg_get_tik(&flg->osflg);
268}
269
279{
280 xwos_flg_d flgd;
281
282 flgd.flg = flg;
283 flgd.tik = xwosdl_flg_get_tik(&flg->osflg);
284 return flgd;
285}
286
303xwer_t xwos_flg_bind(struct xwos_flg * flg, struct xwos_sel * sel, xwsq_t pos)
304{
305 return xwosdl_flg_bind(&flg->osflg, &sel->ossel, pos);
306}
307
320xwer_t xwos_flg_unbind(struct xwos_flg * flg, struct xwos_sel * sel)
321{
322 return xwosdl_flg_unbind(&flg->osflg, &sel->ossel);
323}
324
336xwer_t xwos_flg_get_num(struct xwos_flg * flg, xwsz_t * numbuf)
337{
338 return xwosdl_flg_get_num(&flg->osflg, numbuf);
339}
340
359{
360 return xwosdl_flg_s1m(&flg->osflg, msk);
361}
362
382{
383 return xwosdl_flg_s1i(&flg->osflg, pos);
384}
385
404{
405 return xwosdl_flg_c0m(&flg->osflg, msk);
406}
407
427{
428 return xwosdl_flg_c0i(&flg->osflg, pos);
429}
430
449{
450 return xwosdl_flg_x1m(&flg->osflg, msk);
451}
452
472{
473 return xwosdl_flg_x1i(&flg->osflg, pos);
474}
475
488{
489 return xwosdl_flg_read(&flg->osflg, out);
490}
491
532 enum xwos_flg_trigger_em trigger, bool consumption,
533 xwbmp_t origin[], xwbmp_t msk[])
534{
535 return xwosdl_flg_wait(&flg->osflg, trigger, consumption, origin, msk);
536}
537
583 enum xwos_flg_trigger_em trigger, bool consumption,
584 xwbmp_t origin[], xwbmp_t msk[],
585 xwtm_t to)
586{
587 return xwosdl_flg_wait_to(&flg->osflg, trigger, consumption, origin, msk, to);
588}
589
627 enum xwos_flg_trigger_em trigger, bool consumption,
628 xwbmp_t origin[], xwbmp_t msk[])
629{
630 return xwosdl_flg_trywait(&flg->osflg, trigger, consumption, origin, msk);
631}
632
672 enum xwos_flg_trigger_em trigger, bool consumption,
673 xwbmp_t origin[], xwbmp_t msk[])
674{
675 return xwosdl_flg_wait_unintr(&flg->osflg, trigger, consumption, origin, msk);
676}
677
682#endif /* xwos/osal/sync/flg.h */
#define __xwos_inline_api
Definition compiler.h:179
xws64_t xwtm_t
XWOS系统时间 (有符号)
Definition type.h:742
signed long xwer_t
Definition type.h:554
unsigned long xwsz_t
Definition type.h:339
unsigned long xwsq_t
Definition type.h:445
xwu32_t xwbmp_t
Definition type.h:574
static xwer_t xwos_flg_fini(struct xwos_flg *flg)
XWOS API:销毁静态方式初始化的事件标志对象
Definition flg.h:148
static xwer_t xwos_flg_release(xwos_flg_d flgd)
XWOS API:检查事件标志对象的标签并减少引用计数
Definition flg.h:252
static xwer_t xwos_flg_x1m(struct xwos_flg *flg, xwbmp_t msk[])
XWOS API:同时翻转多个事件标志位
Definition flg.h:448
static xwer_t xwos_flg_x1i(struct xwos_flg *flg, xwsq_t pos)
XWOS API:翻转单个事件标志位
Definition flg.h:471
static xwer_t xwos_flg_c0i(struct xwos_flg *flg, xwsq_t pos)
XWOS API:清除单个事件标志位
Definition flg.h:426
static xwer_t xwos_flg_s1m(struct xwos_flg *flg, xwbmp_t msk[])
XWOS API:同时设置多个事件标志位
Definition flg.h:358
static xwer_t xwos_flg_bind(struct xwos_flg *flg, struct xwos_sel *sel, xwsq_t pos)
XWOS API:绑定事件标志对象到信号选择器
Definition flg.h:303
static xwer_t xwos_flg_put(struct xwos_flg *flg)
XWOS API:减少事件标志对象的引用计数
Definition flg.h:186
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:531
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:582
static xwer_t xwos_flg_grab(struct xwos_flg *flg)
XWOS API:增加事件标志对象的引用计数
Definition flg.h:167
xwos_flg_trigger_em
事件标志触发条件枚举
Definition flg.h:110
static xwer_t xwos_flg_unbind(struct xwos_flg *flg, struct xwos_sel *sel)
XWOS API:从信号选择器上解绑事件标志对象
Definition flg.h:320
static xwos_flg_d xwos_flg_get_d(struct xwos_flg *flg)
XWOS API:获取事件标志对象描述符
Definition flg.h:278
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:671
static xwer_t xwos_flg_s1i(struct xwos_flg *flg, xwsq_t pos)
XWOS API:设置单个事件标志位
Definition flg.h:381
static xwer_t xwos_flg_get_num(struct xwos_flg *flg, xwsz_t *numbuf)
XWOS API:获取事件标志中事件槽的数量
Definition flg.h:336
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:626
static xwer_t xwos_flg_init(struct xwos_flg *flg, xwsz_t num, xwbmp_t *bmp, xwbmp_t *msk)
XWOS API:静态方式初始化事件标志对象
Definition flg.h:132
static xwer_t xwos_flg_acquire(xwos_flg_d flgd)
XWOS API:检查事件标志对象的标签并增加引用计数
Definition flg.h:235
static xwer_t xwos_flg_read(struct xwos_flg *flg, xwbmp_t out[])
XWOS API:读取事件标志位图的值
Definition flg.h:487
static xwsq_t xwos_flg_get_tik(struct xwos_flg *flg)
XWOS API:获取事件标志对象的标签
Definition flg.h:265
static xwer_t xwos_flg_c0m(struct xwos_flg *flg, xwbmp_t msk[])
XWOS API:同时清除多个事件标志位
Definition flg.h:403
static xwer_t xwos_flg_create(xwos_flg_d *flgd, xwsz_t num)
XWOS API:动态方式创建事件标志对象
Definition flg.h:203
static xwer_t xwos_flg_delete(xwos_flg_d flgd)
XWOS API:删除动态方式创建的事件标志对象
Definition flg.h:218
@ XWOS_FLG_TRIGGER_CLR_ANY
Definition flg.h:114
@ XWOS_FLG_TRIGGER_CLR_ALL
Definition flg.h:113
@ XWOS_FLG_TRIGGER_SET_ANY
Definition flg.h:112
@ XWOS_FLG_TRIGGER_TGL_ANY
Definition flg.h:116
@ XWOS_FLG_TRIGGER_TGL_ALL
Definition flg.h:115
@ XWOS_FLG_TRIGGER_SET_ALL
Definition flg.h:111
操作系统抽象层:事件标志接口描述
XWOS API:事件标志对象描述符
Definition flg.h:97
xwsq_t tik
Definition flg.h:99
struct xwos_flg * flg
Definition flg.h:98
XWOS API:事件标志对象
Definition flg.h:90
struct xwmp_evt osflg
Definition flg.h:91
XWOS API:信号选择器对象
Definition sel.h:78
struct xwmp_evt ossel
Definition sel.h:79
操作系统抽象层:信号选择器
操作系统抽象层:时间
XWOS的标准头文件