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() 获取对象标签。

C++

C++头文件: xwos/osal/sync/flg.hxx

宏定义说明

◆ XWOS_FLG_NILD

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

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

在文件 flg.h109 行定义.

枚举类型说明

◆ 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.h114 行定义.

114 {
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};
@ 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_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.h136 行定义.

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

◆ xwos_flg_fini()

static xwer_t xwos_flg_fini ( struct xwos_flg flg)
inlinestatic

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

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

在文件 flg.h152 行定义.

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

◆ xwos_flg_grab()

static xwer_t xwos_flg_grab ( struct xwos_flg flg)
inlinestatic

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

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

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

在文件 flg.h171 行定义.

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

◆ xwos_flg_put()

static xwer_t xwos_flg_put ( struct xwos_flg flg)
inlinestatic

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

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

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

在文件 flg.h190 行定义.

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

◆ 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.h207 行定义.

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

◆ xwos_flg_delete()

static xwer_t xwos_flg_delete ( xwos_flg_d  flgd)
inlinestatic

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

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

在文件 flg.h222 行定义.

223{
224 return xwosdl_flg_delete(&flgd.flg->osflg, flgd.tik);
225}
xwsq_t tik
Definition flg.h:103
struct xwos_flg * flg
Definition flg.h:102
这是这个函数的调用关系图:

◆ xwos_flg_acquire()

static xwer_t xwos_flg_acquire ( xwos_flg_d  flgd)
inlinestatic

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

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

在文件 flg.h239 行定义.

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

◆ xwos_flg_release()

static xwer_t xwos_flg_release ( xwos_flg_d  flgd)
inlinestatic

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

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

在文件 flg.h256 行定义.

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

◆ xwos_flg_get_tik()

static xwsq_t xwos_flg_get_tik ( struct xwos_flg flg)
inlinestatic

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

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

在文件 flg.h269 行定义.

270{
271 return xwosdl_flg_get_tik(&flg->osflg);
272}

◆ xwos_flg_get_d()

static xwos_flg_d xwos_flg_get_d ( struct xwos_flg flg)
inlinestatic

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

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

在文件 flg.h282 行定义.

283{
284 xwos_flg_d flgd;
285
286 flgd.flg = flg;
287 flgd.tik = xwosdl_flg_get_tik(&flg->osflg);
288 return flgd;
289}
XWOS API:事件标志对象描述符
Definition flg.h:101

◆ 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.h307 行定义.

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

◆ 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.h324 行定义.

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

◆ 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.h340 行定义.

341{
342 return xwosdl_flg_get_num(&flg->osflg, numbuf);
343}

◆ 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.h362 行定义.

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

◆ 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.h385 行定义.

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

◆ 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.h407 行定义.

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

◆ 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.h430 行定义.

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

◆ 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.h452 行定义.

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

◆ 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.h475 行定义.

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

◆ 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.h491 行定义.

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

◆ 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) 返回事件触发 之前 的位图状态
  • trigger边沿触发
    • (I) 输入时,作为评估事件位图是否发生变化的初始状态
    • (O) 输出时,返回触发后的事件位图状态(可作为下一次调用的初始值)
[in]msk事件的位图掩码,表示只关注掩码部分的事件
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-EINVAL参数无效
-EINTR等待被中断
-ENOTTHDCTX不在线程上下文中
注解
  • 上下文:线程
  • 当没有检测到事件时,线程会阻塞等待。
  • 当检测到事件时,线程被唤醒,然后返回 XWOK
  • 当线程阻塞等待被中断时,返回 -EINTR

在文件 flg.h534 行定义.

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

◆ 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.h585 行定义.

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

◆ 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.h629 行定义.

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

◆ 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.h674 行定义.

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