|
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 覆盖的位全部翻转。
此函数除了会修改事件标志位图的状态,还会通过 广播 唤醒所有正在等待的线程。 然后,线程通过比对位图状态,确定事件是否已经满足触发条件。 若满足触发条件,就退出等待;若未满足触发条件,重新进入阻塞等待状态。