XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
事件标志 的协作图:

结构体

struct  xwos_flg
 XWOS API:事件标志对象 更多...
 
struct  xwos_flg_d
 XWOS API:事件标志对象描述符 更多...
 

宏定义

#define XWOS_FLG_NILD   ((xwos_flg_d){NULL, 0,})
 XWOS API:空的事件标志对象描述符
 

枚举

enum  xwos_flg_trigger_em {
  XWOS_FLG_TRIGGER_SET_ALL = XWMP_FLG_TRIGGER_SET_ALL , XWOS_FLG_TRIGGER_SET_ANY = XWMP_FLG_TRIGGER_SET_ANY , XWOS_FLG_TRIGGER_CLR_ALL = XWMP_FLG_TRIGGER_CLR_ALL , XWOS_FLG_TRIGGER_CLR_ANY = XWMP_FLG_TRIGGER_CLR_ANY ,
  XWOS_FLG_TRIGGER_TGL_ALL = XWMP_FLG_TRIGGER_TGL_ALL , XWOS_FLG_TRIGGER_TGL_ANY = XWMP_FLG_TRIGGER_TGL_ANY
}
 事件标志触发条件枚举 更多...
 

函数

static xwer_t xwos_flg_init (struct xwos_flg *flg, xwsz_t num, xwbmp_t *bmp, xwbmp_t *msk)
 XWOS API:静态方式初始化事件标志对象
 
static xwer_t xwos_flg_fini (struct xwos_flg *flg)
 XWOS API:销毁静态方式初始化的事件标志对象
 
static xwer_t xwos_flg_grab (struct xwos_flg *flg)
 XWOS API:增加事件标志对象的引用计数
 
static xwer_t xwos_flg_put (struct xwos_flg *flg)
 XWOS API:减少事件标志对象的引用计数
 
static xwer_t xwos_flg_create (xwos_flg_d *flgd, xwsz_t num)
 XWOS API:动态方式创建事件标志对象
 
static xwer_t xwos_flg_delete (xwos_flg_d flgd)
 XWOS API:删除动态方式创建的事件标志对象
 
static xwer_t xwos_flg_acquire (xwos_flg_d flgd)
 XWOS API:检查事件标志对象的标签并增加引用计数
 
static xwer_t xwos_flg_release (xwos_flg_d flgd)
 XWOS API:检查事件标志对象的标签并减少引用计数
 
static xwsq_t xwos_flg_get_tik (struct xwos_flg *flg)
 XWOS API:获取事件标志对象的标签
 
static xwos_flg_d xwos_flg_get_d (struct xwos_flg *flg)
 XWOS API:获取事件标志对象描述符
 
static xwer_t xwos_flg_bind (struct xwos_flg *flg, struct xwos_sel *sel, xwsq_t pos)
 XWOS API:绑定事件标志对象到信号选择器
 
static xwer_t xwos_flg_unbind (struct xwos_flg *flg, struct xwos_sel *sel)
 XWOS API:从信号选择器上解绑事件标志对象
 
static xwer_t xwos_flg_get_num (struct xwos_flg *flg, xwsz_t *numbuf)
 XWOS API:获取事件标志中事件槽的数量
 
static xwer_t xwos_flg_s1m (struct xwos_flg *flg, xwbmp_t msk[])
 XWOS API:同时设置多个事件标志位
 
static xwer_t xwos_flg_s1i (struct xwos_flg *flg, xwsq_t pos)
 XWOS API:设置单个事件标志位
 
static xwer_t xwos_flg_c0m (struct xwos_flg *flg, xwbmp_t msk[])
 XWOS API:同时清除多个事件标志位
 
static xwer_t xwos_flg_c0i (struct xwos_flg *flg, xwsq_t pos)
 XWOS API:清除单个事件标志位
 
static xwer_t xwos_flg_x1m (struct xwos_flg *flg, xwbmp_t msk[])
 XWOS API:同时翻转多个事件标志位
 
static xwer_t xwos_flg_x1i (struct xwos_flg *flg, xwsq_t pos)
 XWOS API:翻转单个事件标志位
 
static xwer_t xwos_flg_read (struct xwos_flg *flg, xwbmp_t out[])
 XWOS API:读取事件标志位图的值
 
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:等待事件
 
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:限时等待触发事件
 
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:检查触发事件
 
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:等待事件,且等待不可被中断
 

详细描述

技术参考手册: 事件标志

事件标志的静态初始化、销毁

事件标志的动态创建、删除

产生事件

获取事件的状态

等待事件

使用信号选择器选择事件标志

事件标志对象的生命周期管理

对象描述符和对象标签

已知事件标志对象的指针的情况下,可以通过 xwos_flg_get_d() 获取 xwos_flg_d , 或可以通过 xwos_flg_get_tik() 获取对象标签。

宏定义说明

◆ XWOS_FLG_NILD

#define XWOS_FLG_NILD   ((xwos_flg_d){NULL, 0,})

XWOS API:空的事件标志对象描述符

在文件 flg.h105 行定义.

枚举类型说明

◆ xwos_flg_trigger_em

事件标志触发条件枚举

枚举值
XWOS_FLG_TRIGGER_SET_ALL 
XWOS_FLG_TRIGGER_SET_ANY 
XWOS_FLG_TRIGGER_CLR_ALL 
XWOS_FLG_TRIGGER_CLR_ANY 
XWOS_FLG_TRIGGER_TGL_ALL 
XWOS_FLG_TRIGGER_TGL_ANY 

在文件 flg.h110 行定义.

110 {
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};
@ 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_flg_init()

static xwer_t xwos_flg_init ( struct xwos_flg flg,
xwsz_t  num,
xwbmp_t bmp,
xwbmp_t msk 
)
inlinestatic

XWOS API:静态方式初始化事件标志对象

参数
[in]flg事件标志对象的指针
[in]num事件标志中的事件数量
[in]bmp事件标志用来记录事件状态的位图缓冲区
[in]msk事件标志用来记录事件掩码的位图缓冲区
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
注解
  • 上下文:任意

在文件 flg.h132 行定义.

134{
135 return xwosdl_flg_init(&flg->osflg, num, bmp, msk);
136}
struct xwmp_evt osflg
Definition flg.h:91
这是这个函数的调用关系图:

◆ xwos_flg_fini()

static xwer_t xwos_flg_fini ( struct xwos_flg flg)
inlinestatic

XWOS API:销毁静态方式初始化的事件标志对象

参数
[in]flg事件标志对象的指针
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
注解
  • 上下文:任意

在文件 flg.h148 行定义.

149{
150 return xwosdl_flg_fini(&flg->osflg);
151}
这是这个函数的调用关系图:

◆ xwos_flg_grab()

static xwer_t xwos_flg_grab ( struct xwos_flg flg)
inlinestatic

XWOS API:增加事件标志对象的引用计数

参数
[in]flg事件标志对象的指针
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-EOBJDEAD对象无效
注解
  • 上下文:任意

此函数主要用于管理 静态对象 的引用计数。 若用于 动态对象 ,需要确保对象的指针一定不是野指针。

在文件 flg.h167 行定义.

168{
169 return xwosdl_flg_grab(&flg->osflg);
170}
这是这个函数的调用关系图:

◆ xwos_flg_put()

static xwer_t xwos_flg_put ( struct xwos_flg flg)
inlinestatic

XWOS API:减少事件标志对象的引用计数

参数
[in]flg事件标志对象的指针
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-EOBJDEAD对象无效
注解
  • 上下文:任意

此函数主要用于管理 静态对象 的引用计数。 若用于 动态对象 ,需要确保对象的指针一定不是野指针。

在文件 flg.h186 行定义.

187{
188 return xwosdl_flg_put(&flg->osflg);
189}
这是这个函数的调用关系图:

◆ xwos_flg_create()

static xwer_t xwos_flg_create ( xwos_flg_d flgd,
xwsz_t  num 
)
inlinestatic

XWOS API:动态方式创建事件标志对象

参数
[out]flgd指向缓冲区的指针,通过此缓冲区返回事件标志对象描述符
[in]num线程栅栏中的线程数量
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-ENOMEM内存不足
注解
  • 上下文:任意

在文件 flg.h203 行定义.

204{
205 return xwosdl_flg_create((xwosdl_flg_d *)flgd, num);
206}
这是这个函数的调用关系图:

◆ xwos_flg_delete()

static xwer_t xwos_flg_delete ( xwos_flg_d  flgd)
inlinestatic

XWOS API:删除动态方式创建的事件标志对象

参数
[in]flgd事件标志对象描述符
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
注解
  • 上下文:任意

在文件 flg.h218 行定义.

219{
220 return xwosdl_flg_delete(&flgd.flg->osflg, flgd.tik);
221}
xwsq_t tik
Definition flg.h:99
struct xwos_flg * flg
Definition flg.h:98
这是这个函数的调用关系图:

◆ xwos_flg_acquire()

static xwer_t xwos_flg_acquire ( xwos_flg_d  flgd)
inlinestatic

XWOS API:检查事件标志对象的标签并增加引用计数

参数
[in]flgd事件标志对象描述符
返回
错误码
返回值
XWOK没有错误
-ENILOBJD空的对象描述符
-EOBJDEAD对象无效
-EACCES对象标签检查失败
注解
  • 上下文:任意

在文件 flg.h235 行定义.

236{
237 return xwosdl_flg_acquire(&flgd.flg->osflg, flgd.tik);
238}
这是这个函数的调用关系图:

◆ xwos_flg_release()

static xwer_t xwos_flg_release ( xwos_flg_d  flgd)
inlinestatic

XWOS API:检查事件标志对象的标签并减少引用计数

参数
[in]flgd事件标志对象描述符
返回
错误码
返回值
XWOK没有错误
-ENILOBJD空的对象描述符
-EOBJDEAD对象无效
-EACCES对象标签检查失败
注解
  • 上下文:任意

在文件 flg.h252 行定义.

253{
254 return xwosdl_flg_release(&flgd.flg->osflg, flgd.tik);
255}
这是这个函数的调用关系图:

◆ xwos_flg_get_tik()

static xwsq_t xwos_flg_get_tik ( struct xwos_flg flg)
inlinestatic

XWOS API:获取事件标志对象的标签

参数
[in]flg事件标志对象的指针
返回
事件标志对象的标签
注解
  • 上下文:任意

在文件 flg.h265 行定义.

266{
267 return xwosdl_flg_get_tik(&flg->osflg);
268}

◆ xwos_flg_get_d()

static xwos_flg_d xwos_flg_get_d ( struct xwos_flg flg)
inlinestatic

XWOS API:获取事件标志对象描述符

参数
[in]flg事件标志对象的指针
返回
事件标志对象描述符
注解
  • 上下文:任意

在文件 flg.h278 行定义.

279{
280 xwos_flg_d flgd;
281
282 flgd.flg = flg;
283 flgd.tik = xwosdl_flg_get_tik(&flg->osflg);
284 return flgd;
285}
XWOS API:事件标志对象描述符
Definition flg.h:97

◆ xwos_flg_bind()

static xwer_t xwos_flg_bind ( struct xwos_flg flg,
struct xwos_sel sel,
xwsq_t  pos 
)
inlinestatic

XWOS API:绑定事件标志对象到信号选择器

参数
[in]flg事件标志对象的指针
[in]sel信号选择器的指针
[in]pos事件标志对象映射到位图中的位置
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-ECHRNG位置超出范围
-EALREADY同步对象已经绑定到事件对象
-EBUSY通道已经被其他同步对象独占
注解
  • 上下文:任意
  • 绑定方式:非独占绑定

在文件 flg.h303 行定义.

304{
305 return xwosdl_flg_bind(&flg->osflg, &sel->ossel, pos);
306}
struct xwmp_evt ossel
Definition sel.h:79
这是这个函数的调用关系图:

◆ xwos_flg_unbind()

static xwer_t xwos_flg_unbind ( struct xwos_flg flg,
struct xwos_sel sel 
)
inlinestatic

XWOS API:从信号选择器上解绑事件标志对象

参数
[in]flg事件标志对象的指针
[in]sel信号选择器的指针
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-ENOTCONN同步对象没有绑定到事件对象上
注解
  • 上下文:任意

在文件 flg.h320 行定义.

321{
322 return xwosdl_flg_unbind(&flg->osflg, &sel->ossel);
323}
这是这个函数的调用关系图:

◆ xwos_flg_get_num()

static xwer_t xwos_flg_get_num ( struct xwos_flg flg,
xwsz_t numbuf 
)
inlinestatic

XWOS API:获取事件标志中事件槽的数量

参数
[in]flg事件标志对象的指针
[out]numbuf指向缓冲区的指针,通过此缓冲区返回事件槽的数量
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
注解
  • 上下文:任意

在文件 flg.h336 行定义.

337{
338 return xwosdl_flg_get_num(&flg->osflg, numbuf);
339}

◆ xwos_flg_s1m()

static xwer_t xwos_flg_s1m ( struct xwos_flg flg,
xwbmp_t  msk[] 
)
inlinestatic

XWOS API:同时设置多个事件标志位

参数
[in]flg事件标志对象指针
[in]msk事件标志对象的位图掩码
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
注解
  • 上下文:任意
  • 此CAPI会将事件标志位图中,被掩码 msk 覆盖的位全部设置为 1 , 然后 广播 所有正在等待的线程。
  • 线程唤醒后通过比对位图状态,确定事件是否已经满足触发条件, 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。

+ 缩写说明: s == set, m == mask

在文件 flg.h358 行定义.

359{
360 return xwosdl_flg_s1m(&flg->osflg, msk);
361}
这是这个函数的调用关系图:

◆ xwos_flg_s1i()

static xwer_t xwos_flg_s1i ( struct xwos_flg flg,
xwsq_t  pos 
)
inlinestatic

XWOS API:设置单个事件标志位

参数
[in]flg事件标志对象指针
[in]pos事件的序号
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-ECHRNG位置超出范围
注解
  • 上下文:任意
  • 此CAPI会将事件标志位图中,序号为 pos 的单个位设置为 1 , 然后 广播 所有正在等待的线程。
  • 线程唤醒后通过比对位图状态,确定事件是否已经满足触发条件, 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。

+ 缩写说明: s == set, i == index

在文件 flg.h381 行定义.

382{
383 return xwosdl_flg_s1i(&flg->osflg, pos);
384}
这是这个函数的调用关系图:

◆ xwos_flg_c0m()

static xwer_t xwos_flg_c0m ( struct xwos_flg flg,
xwbmp_t  msk[] 
)
inlinestatic

XWOS API:同时清除多个事件标志位

参数
[in]flg事件标志对象指针
[in]msk事件的位图掩码
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
注解
  • 上下文:任意
  • 此CAPI会将事件标志位图中,被掩码 msk 覆盖的位全部清 0 , 然后 广播 所有正在等待的线程。
  • 线程唤醒后通过比对位图状态,确定事件是否已经满足触发条件, 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。

+ 缩写说明: c == clear, m == mask

在文件 flg.h403 行定义.

404{
405 return xwosdl_flg_c0m(&flg->osflg, msk);
406}
这是这个函数的调用关系图:

◆ xwos_flg_c0i()

static xwer_t xwos_flg_c0i ( struct xwos_flg flg,
xwsq_t  pos 
)
inlinestatic

XWOS API:清除单个事件标志位

参数
[in]flg事件标志对象指针
[in]pos事件的序号
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-ECHRNG位置超出范围
注解
  • 上下文:任意
  • 此CAPI会将事件标志位图中,序号为 pos 的单个位清 0 , 然后 广播 所有正在等待的线程。
  • 线程唤醒后通过比对位图状态,确定事件是否已经满足触发条件, 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。

+ 缩写说明: c == clear, i == index

在文件 flg.h426 行定义.

427{
428 return xwosdl_flg_c0i(&flg->osflg, pos);
429}
这是这个函数的调用关系图:

◆ xwos_flg_x1m()

static xwer_t xwos_flg_x1m ( struct xwos_flg flg,
xwbmp_t  msk[] 
)
inlinestatic

XWOS API:同时翻转多个事件标志位

参数
[in]flg事件标志对象指针
[in]msk事件的位图掩码
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
注解
  • 上下文:任意
  • 此CAPI会将事件标志位图中,被掩码 msk 覆盖的位全部翻转, 然后 广播 所有正在等待的线程。
  • 线程唤醒后通过比对位图状态,确定事件是否已经满足触发条件, 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。

+ 缩写说明: x == exclusive OR, m == mask

在文件 flg.h448 行定义.

449{
450 return xwosdl_flg_x1m(&flg->osflg, msk);
451}
这是这个函数的调用关系图:

◆ xwos_flg_x1i()

static xwer_t xwos_flg_x1i ( struct xwos_flg flg,
xwsq_t  pos 
)
inlinestatic

XWOS API:翻转单个事件标志位

参数
[in]flg事件标志对象指针
[in]pos事件的序号
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-ECHRNG位置超出范围
注解
  • 上下文:任意
  • 此CAPI会将事件标志位图中,序号为 pos 的单个位翻转, 然后 广播 所有正在等待的线程。
  • 线程唤醒后通过比对位图状态,确定事件是否已经满足触发条件, 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。

+ 缩写说明: x == exclusive OR, i == index

在文件 flg.h471 行定义.

472{
473 return xwosdl_flg_x1i(&flg->osflg, pos);
474}
这是这个函数的调用关系图:

◆ xwos_flg_read()

static xwer_t xwos_flg_read ( struct xwos_flg flg,
xwbmp_t  out[] 
)
inlinestatic

XWOS API:读取事件标志位图的值

参数
[in]flg事件标志对象指针
[out]out指向缓冲区的指针,通过此缓冲区返回事件标志对象位图的值
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
注解
  • 上下文:任意

在文件 flg.h487 行定义.

488{
489 return xwosdl_flg_read(&flg->osflg, out);
490}
这是这个函数的调用关系图:

◆ xwos_flg_wait()

static xwer_t xwos_flg_wait ( struct xwos_flg flg,
enum xwos_flg_trigger_em  trigger,
bool  consumption,
xwbmp_t  origin[],
xwbmp_t  msk[] 
)
inlinestatic

XWOS API:等待事件

参数
[in]flg事件标志对象指针
[in]trigger事件触发条件,取值:
[in]consumption事件触发后是否清除事件:
  • trigger电平触发 时,
    • true 表示清除事件标志
    • false 表示保留事件标志
  • trigger边沿触发 时,此参数没有意义
[in,out]origin指向缓冲区的指针:
  • trigger电平触发
    • (O) 返回事件 触发之后,清理之前 的位图状态。 “**清理**” 是指 consumptiontrue 时,自动清除事件标志。
  • trigger边沿触发
    • (I) 输入时,作为评估事件位图是否发生变化的初始状态
    • (O) 输出时,返回触发后的事件位图状态(可作为下一次调用的初始值)
[in]msk事件的位图掩码,表示只关注掩码部分的事件
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-EINVAL参数无效
-EINTR等待被中断
-ENOTTHDCTX不在线程上下文中
注解
  • 上下文:线程
  • 当没有检测到事件时,线程会阻塞等待。
  • 当检测到事件时,线程被唤醒,然后返回 XWOK
  • 当线程阻塞等待被中断时,返回 -EINTR

在文件 flg.h531 行定义.

534{
535 return xwosdl_flg_wait(&flg->osflg, trigger, consumption, origin, msk);
536}
这是这个函数的调用关系图:

◆ xwos_flg_wait_to()

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 
)
inlinestatic

XWOS API:限时等待触发事件

参数
[in]flg事件标志对象指针
[in]trigger事件触发条件,取值:
[in]consumption事件触发后是否清除事件:
  • trigger电平触发 时,
    • true 表示清除事件标志
    • false 表示保留事件标志
  • trigger边沿触发 时,此参数没有意义
[in,out]origin指向缓冲区的指针:
  • trigger电平触发
    • (O) 返回事件触发 之前 的位图状态
  • trigger边沿触发
    • (I) 输入时,作为评估事件位图是否发生变化的初始状态
    • (O) 输出时,返回触发后的事件标志位图状态(可作为下一次调用的初始值)
[in]msk事件的位图掩码,表示只关注掩码部分的事件
[in]to期望唤醒的时间点
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-EINVAL参数无效
-ETIMEDOUT超时
-EINTR等待被中断
-ENOTTHDCTX不在线程上下文中
注解
  • 上下文:线程
  • 当检测到事件,线程被唤醒,然后返回 XWOK
  • 当没有检测到事件,线程会阻塞等待,等待时会指定一个唤醒时间点 toto 表示等待超时的时间点:
    • to 通常是未来的时间,即 当前系统时间 + delta , 可以使用 xwtm_ft(delta) 表示;
    • 如果 to 是过去的时间点,将直接返回 -ETIMEDOUT
  • 当线程阻塞等待被中断时,返回 -EINTR

在文件 flg.h582 行定义.

586{
587 return xwosdl_flg_wait_to(&flg->osflg, trigger, consumption, origin, msk, to);
588}
这是这个函数的调用关系图:

◆ xwos_flg_trywait()

static xwer_t xwos_flg_trywait ( struct xwos_flg flg,
enum xwos_flg_trigger_em  trigger,
bool  consumption,
xwbmp_t  origin[],
xwbmp_t  msk[] 
)
inlinestatic

XWOS API:检查触发事件

参数
[in]flg事件标志对象指针
[in]trigger事件触发条件,取值:
[in]consumption事件触发后是否清除事件:
  • trigger电平触发 时,
    • true 表示清除事件标志
    • false 表示保留事件标志
  • trigger边沿触发 时,此参数没有意义
[in,out]origin指向缓冲区的指针:
  • trigger电平触发
    • (O) 返回事件触发 之前 的位图状态
  • trigger边沿触发
    • (I) 输入时,作为评估事件位图是否发生变化的初始状态
    • (O) 输出时,返回触发后的事件标志位图状态(可作为下一次调用的初始值)
[in]msk事件的位图掩码,表示只关注掩码部分的事件
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-EINVAL参数无效
-ENODATA没有任何事件触发
注解
  • 上下文:任意
  • 当检测到事件,立即返回 XWOK
  • 当没有检测到事件,立即返回 -ENODATA

在文件 flg.h626 行定义.

629{
630 return xwosdl_flg_trywait(&flg->osflg, trigger, consumption, origin, msk);
631}
这是这个函数的调用关系图:

◆ xwos_flg_wait_unintr()

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[] 
)
inlinestatic

XWOS API:等待事件,且等待不可被中断

参数
[in]flg事件标志对象指针
[in]trigger事件触发条件,取值:
[in]consumption事件触发后是否清除事件:
  • trigger电平触发 时,
    • true 表示清除事件标志
    • false 表示保留事件标志
  • trigger边沿触发 时,此参数没有意义
[in,out]origin指向缓冲区的指针:
  • trigger电平触发
    • (O) 返回事件触发 之前 的位图状态
  • trigger边沿触发
    • (I) 输入时,作为评估事件位图是否发生变化的初始状态
    • (O) 输出时,返回触发后的事件标志位图状态(可作为下一次调用的初始值)
[in]msk事件的位图掩码,表示只关注掩码部分的事件
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-EINVAL参数无效
-EINTR等待被中断
-ENOTTHDCTX不在线程上下文中
注解
  • 上下文:线程
  • 当没有检测到事件时,线程会阻塞等待。
  • 当检测到事件时,线程被唤醒,然后返回 XWOK
  • 当线程阻塞等待被中断时,返回 -EINTR

在文件 flg.h671 行定义.

674{
675 return xwosdl_flg_wait_unintr(&flg->osflg, trigger, consumption, origin, msk);
676}
这是这个函数的调用关系图: