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:空的事件标志对象描述符 | |
函数 | |
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, xwsq_t trigger, xwsq_t action, xwbmp_t origin[], xwbmp_t msk[]) |
XWOS API:等待事件 | |
static xwer_t | xwos_flg_wait_to (struct xwos_flg *flg, xwsq_t trigger, xwsq_t action, xwbmp_t origin[], xwbmp_t msk[], xwtm_t to) |
XWOS API:限时等待触发事件 | |
static xwer_t | xwos_flg_trywait (struct xwos_flg *flg, xwsq_t trigger, xwsq_t action, xwbmp_t origin[], xwbmp_t msk[]) |
XWOS API:检查触发事件 | |
技术参考手册: 事件标志
xwos_flg_init()
:静态初始化xwos_flg_fini()
:销毁xwos_flg_create()
:动态创建xwos_flg_delete()
:删除xwos_flg_s1m()
:同时设置多个事件标志位,可在 任意 上下文使用xwos_flg_s1i()
:设置单个事件标志位,可在 任意 上下文使用xwos_flg_c0m()
:同时清除多个事件标志位,可在 任意 上下文使用xwos_flg_c0i()
:清除单个事件标志位,可在 任意 上下文使用xwos_flg_x1m()
:同时翻转多个事件标志位,可在 任意 上下文使用xwos_flg_x1i()
:翻转单个事件标志位,可在 任意 上下文使用xwos_flg_get_num()
:获取事件标志中总共有多少个事件,可在 任意 上下文使用xwos_flg_read()
:读取事件标志中位图的值,可在 任意 上下文使用xwos_flg_wait()
:等待事件,只能在 线程 上下文使用xwos_flg_wait_to()
:限时等待事件,只能在 线程 上下文使用xwos_flg_trywait()
:仅测试事件,可在 任意 上下文使用xwos_flg_bind()
:将事件标志绑定到 信号选择器 上xwos_flg_unbind()
:从 信号选择器 上解绑xwos_flg_grab()
:增加引用计数xwos_flg_put()
:减少引用计数xwos_flg_acquire()
:增加引用计数xwos_flg_release()
:减少引用计数已知事件标志对象的指针的情况下,可以通过 xwos_flg_get_d()
获取 xwos_flg_d , 或可以通过 xwos_flg_get_tik()
获取对象标签。
C++头文件: xwos/osal/sync/flg.hxx
#define XWOS_FLG_NILD ((xwos_flg_d){NULL, 0,}) |
|
inlinestatic |
XWOS API:检查事件标志对象的标签并增加引用计数
[in] | flgd | 事件标志对象描述符 |
XWOK | 没有错误 |
-ENILOBJD | 空的对象描述符 |
-EOBJDEAD | 对象无效 |
-EACCES | 对象标签检查失败 |
|
inlinestatic |
XWOS API:绑定事件标志对象到信号选择器
[in] | flg | 事件标志对象的指针 |
[in] | sel | 信号选择器的指针 |
[in] | pos | 事件标志对象映射到位图中的位置 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
-ECHRNG | 位置超出范围 |
-EALREADY | 同步对象已经绑定到事件对象 |
-EBUSY | 通道已经被其他同步对象独占 |
XWOS API:清除单个事件标志位
[in] | flg | 事件标志对象指针 |
[in] | pos | 事件的序号 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
-ECHRNG | 位置超出范围 |
此方法会将事件标志位图中,序号为 pos
的单个位清 0 。
此函数除了会修改事件标志位图的状态,还会通过 广播 唤醒所有正在等待的线程。 然后,线程通过比对位图状态,确定事件是否已经满足触发条件。 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。
XWOS API:同时清除多个事件标志位
[in] | flg | 事件标志对象指针 |
[in] | msk | 事件的位图掩码 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
此方法会将事件标志位图中,被掩码 msk
覆盖的位全部清 0 。
此函数除了会修改事件标志位图的状态,还会通过 广播 唤醒所有正在等待的线程。 然后,线程通过比对位图状态,确定事件是否已经满足触发条件。 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
XWOS API:获取事件标志对象描述符
[in] | flg | 事件标志对象的指针 |
|
inlinestatic |
XWOS API:设置单个事件标志位
[in] | flg | 事件标志对象指针 |
[in] | pos | 事件的序号 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
-ECHRNG | 位置超出范围 |
此方法会将事件标志位图中,序号为 pos
的单个位设置为 1 。
此函数除了会修改事件标志位图的状态,还会通过 广播 唤醒所有正在等待的线程。 然后,线程通过比对位图状态,确定事件是否已经满足触发条件。 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。
XWOS API:同时设置多个事件标志位
[in] | flg | 事件标志对象指针 |
[in] | msk | 事件标志对象的位图掩码 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
此方法会将事件标志位图中,被掩码 msk
覆盖的位全部设置为 1 。
此函数除了会修改事件标志位图的状态,还会通过 广播 唤醒所有正在等待的线程。 然后,线程通过比对位图状态,确定事件是否已经满足触发条件。 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。
|
inlinestatic |
XWOS API:检查触发事件
[in] | flg | 事件标志对象指针 |
[in] | trigger | 事件触发条件,取值:
|
[in] | action | 事件触发后的动作,
|
[in,out] | origin | 指向缓冲区的指针:
|
[in] | msk | 事件的位图掩码,表示只关注掩码部分的事件 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
-EINVAL | 参数无效 |
-ENODATA | 没有任何事件触发 |
XWOK
。-ENODATA
。
|
inlinestatic |
XWOS API:等待事件
[in] | flg | 事件标志对象指针 |
[in] | trigger | 事件触发条件,取值:
|
[in] | action | 事件触发后的动作,
|
[in,out] | origin | 指向缓冲区的指针:
|
[in] | msk | 事件的位图掩码,表示只关注掩码部分的事件 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
-EINVAL | 参数无效 |
-EINTR | 等待被中断 |
-ENOTTHDCTX | 不在线程上下文中 |
XWOK
。-EINTR
。
|
inlinestatic |
XWOS API:限时等待触发事件
[in] | flg | 事件标志对象指针 |
[in] | trigger | 事件触发条件,取值:
|
[in] | action | 事件触发后的动作,
|
[in,out] | origin | 指向缓冲区的指针:
|
[in] | msk | 事件的位图掩码,表示只关注掩码部分的事件 |
[in] | to | 期望唤醒的时间点 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
-EINVAL | 参数无效 |
-ETIMEDOUT | 超时 |
-EINTR | 等待被中断 |
-ENOTTHDCTX | 不在线程上下文中 |
XWOK
。to
, to
表示等待超时的时间点:to
通常是未来的时间,即 当前系统时间 + delta
, 可以使用 xwtm_ft(delta)
表示;to
是过去的时间点,将直接返回 -ETIMEDOUT
。-EINTR
。 XWOS API:翻转单个事件标志位
[in] | flg | 事件标志对象指针 |
[in] | pos | 事件的序号 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
-ECHRNG | 位置超出范围 |
此方法会将事件标志位图中,序号为 pos
的单个位翻转。
此函数除了会修改事件标志位图的状态,还会通过 广播 唤醒所有正在等待的线程。 然后,线程通过比对位图状态,确定事件是否已经满足触发条件。 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。
XWOS API:同时翻转多个事件标志位
[in] | flg | 事件标志对象指针 |
[in] | msk | 事件的位图掩码 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
此方法会将事件标志位图中,被掩码 msk
覆盖的位全部翻转。
此函数除了会修改事件标志位图的状态,还会通过 广播 唤醒所有正在等待的线程。 然后,线程通过比对位图状态,确定事件是否已经满足触发条件。 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。