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
94struct xwos_flg {
95 struct xwosdl_flg osflg;
96};
97
101typedef struct {
102 struct xwos_flg * flg;
104} xwos_flg_d;
105
109#define XWOS_FLG_NILD ((xwos_flg_d){NULL, 0,})
110
115 XWOS_FLG_TRIGGER_SET_ALL = XWOSDL_FLG_TRIGGER_SET_ALL,
116 XWOS_FLG_TRIGGER_SET_ANY = XWOSDL_FLG_TRIGGER_SET_ANY,
117 XWOS_FLG_TRIGGER_CLR_ALL = XWOSDL_FLG_TRIGGER_CLR_ALL,
118 XWOS_FLG_TRIGGER_CLR_ANY = XWOSDL_FLG_TRIGGER_CLR_ANY,
119 XWOS_FLG_TRIGGER_TGL_ALL = XWOSDL_FLG_TRIGGER_TGL_ALL,
120 XWOS_FLG_TRIGGER_TGL_ANY = XWOSDL_FLG_TRIGGER_TGL_ANY,
121};
122
137 xwbmp_t * bmp, xwbmp_t * msk)
138{
139 return xwosdl_flg_init(&flg->osflg, num, bmp, msk);
140}
141
153{
154 return xwosdl_flg_fini(&flg->osflg);
155}
156
172{
173 return xwosdl_flg_grab(&flg->osflg);
174}
175
191{
192 return xwosdl_flg_put(&flg->osflg);
193}
194
208{
209 return xwosdl_flg_create((xwosdl_flg_d *)flgd, num);
210}
211
223{
224 return xwosdl_flg_delete(&flgd.flg->osflg, flgd.tik);
225}
226
240{
241 return xwosdl_flg_acquire(&flgd.flg->osflg, flgd.tik);
242}
243
257{
258 return xwosdl_flg_release(&flgd.flg->osflg, flgd.tik);
259}
260
270{
271 return xwosdl_flg_get_tik(&flg->osflg);
272}
273
283{
284 xwos_flg_d flgd;
285
286 flgd.flg = flg;
287 flgd.tik = xwosdl_flg_get_tik(&flg->osflg);
288 return flgd;
289}
290
307xwer_t xwos_flg_bind(struct xwos_flg * flg, struct xwos_sel * sel, xwsq_t pos)
308{
309 return xwosdl_flg_bind(&flg->osflg, &sel->ossel, pos);
310}
311
324xwer_t xwos_flg_unbind(struct xwos_flg * flg, struct xwos_sel * sel)
325{
326 return xwosdl_flg_unbind(&flg->osflg, &sel->ossel);
327}
328
340xwer_t xwos_flg_get_num(struct xwos_flg * flg, xwsz_t * numbuf)
341{
342 return xwosdl_flg_get_num(&flg->osflg, numbuf);
343}
344
363{
364 return xwosdl_flg_s1m(&flg->osflg, msk);
365}
366
386{
387 return xwosdl_flg_s1i(&flg->osflg, pos);
388}
389
408{
409 return xwosdl_flg_c0m(&flg->osflg, msk);
410}
411
431{
432 return xwosdl_flg_c0i(&flg->osflg, pos);
433}
434
453{
454 return xwosdl_flg_x1m(&flg->osflg, msk);
455}
456
476{
477 return xwosdl_flg_x1i(&flg->osflg, pos);
478}
479
492{
493 return xwosdl_flg_read(&flg->osflg, out);
494}
495
535 enum xwos_flg_trigger_em trigger, bool consumption,
536 xwbmp_t origin[], xwbmp_t msk[])
537{
538 return xwosdl_flg_wait(&flg->osflg, trigger, consumption, origin, msk);
539}
540
586 enum xwos_flg_trigger_em trigger, bool consumption,
587 xwbmp_t origin[], xwbmp_t msk[],
588 xwtm_t to)
589{
590 return xwosdl_flg_wait_to(&flg->osflg, trigger, consumption, origin, msk, to);
591}
592
630 enum xwos_flg_trigger_em trigger, bool consumption,
631 xwbmp_t origin[], xwbmp_t msk[])
632{
633 return xwosdl_flg_trywait(&flg->osflg, trigger, consumption, origin, msk);
634}
635
675 enum xwos_flg_trigger_em trigger, bool consumption,
676 xwbmp_t origin[], xwbmp_t msk[])
677{
678 return xwosdl_flg_wait_unintr(&flg->osflg, trigger, consumption, origin, msk);
679}
680
685#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:152
static xwer_t xwos_flg_release(xwos_flg_d flgd)
XWOS API:检查事件标志对象的标签并减少引用计数
Definition flg.h:256
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_put(struct xwos_flg *flg)
XWOS API:减少事件标志对象的引用计数
Definition flg.h:190
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
static xwer_t xwos_flg_grab(struct xwos_flg *flg)
XWOS API:增加事件标志对象的引用计数
Definition flg.h:171
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 xwos_flg_d xwos_flg_get_d(struct xwos_flg *flg)
XWOS API:获取事件标志对象描述符
Definition flg.h:282
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_get_num(struct xwos_flg *flg, xwsz_t *numbuf)
XWOS API:获取事件标志中事件槽的数量
Definition flg.h:340
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_init(struct xwos_flg *flg, xwsz_t num, xwbmp_t *bmp, xwbmp_t *msk)
XWOS API:静态方式初始化事件标志对象
Definition flg.h:136
static xwer_t xwos_flg_acquire(xwos_flg_d flgd)
XWOS API:检查事件标志对象的标签并增加引用计数
Definition flg.h:239
static xwer_t xwos_flg_read(struct xwos_flg *flg, xwbmp_t out[])
XWOS API:读取事件标志位图的值
Definition flg.h:491
static xwsq_t xwos_flg_get_tik(struct xwos_flg *flg)
XWOS API:获取事件标志对象的标签
Definition flg.h:269
static xwer_t xwos_flg_c0m(struct xwos_flg *flg, xwbmp_t msk[])
XWOS API:同时清除多个事件标志位
Definition flg.h:407
static xwer_t xwos_flg_create(xwos_flg_d *flgd, xwsz_t num)
XWOS API:动态方式创建事件标志对象
Definition flg.h:207
static xwer_t xwos_flg_delete(xwos_flg_d flgd)
XWOS API:删除动态方式创建的事件标志对象
Definition flg.h:222
@ 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
操作系统抽象层:事件标志接口描述
XWOS API:事件标志对象描述符
Definition flg.h:101
xwsq_t tik
Definition flg.h:103
struct xwos_flg * flg
Definition flg.h:102
XWOS API:事件标志对象
Definition flg.h:94
struct xwmp_evt osflg
Definition flg.h:95
XWOS API:信号选择器对象
Definition sel.h:82
struct xwmp_evt ossel
Definition sel.h:83
操作系统抽象层:信号选择器
操作系统抽象层:时间
XWOS的标准头文件