|
static xwer_t | xwos_sel_init (struct xwos_sel *sel, xwsz_t num, xwbmp_t *bmp, xwbmp_t *msk) |
| XWOS API:静态方式初始化信号选择器
|
|
static xwer_t | xwos_sel_fini (struct xwos_sel *sel) |
| XWOS API:销毁静态方式初始化的信号选择器
|
|
static xwer_t | xwos_sel_grab (struct xwos_sel *sel) |
| XWOS API:增加信号选择器对象的引用计数
|
|
static xwer_t | xwos_sel_put (struct xwos_sel *sel) |
| XWOS API:减少信号选择器对象的引用计数
|
|
static xwer_t | xwos_sel_create (xwos_sel_d *seld, xwsz_t num) |
| XWOS API:动态方式创建信号选择器
|
|
static xwer_t | xwos_sel_delete (xwos_sel_d seld) |
| XWOS API:删除动态方式创建的信号选择器
|
|
static xwer_t | xwos_sel_acquire (xwos_sel_d seld) |
| XWOS API:检查信号选择器对象的标签并增加引用计数
|
|
static xwer_t | xwos_sel_release (xwos_sel_d seld) |
| XWOS API:检查对象的标签并减少引用计数
|
|
static xwsq_t | xwos_sel_get_tik (struct xwos_sel *sel) |
| XWOS API:获取信号选择器对象的标签
|
|
static xwos_sel_d | xwos_sel_get_d (struct xwos_sel *sel) |
| XWOS API:获取信号选择器对象描述符
|
|
static xwer_t | xwos_sel_bind (struct xwos_sel *src, struct xwos_sel *dst, xwsq_t pos) |
| XWOS API:绑定源信号选择器到目的信号选择器
|
|
static xwer_t | xwos_sel_unbind (struct xwos_sel *src, struct xwos_sel *dst) |
| XWOS API:从目的信号选择器上解绑源信号选择器
|
|
static xwer_t | xwos_sel_get_num (struct xwos_sel *sel, xwsz_t *numbuf) |
| XWOS API:获取信号选择器中的信号槽的数量
|
|
static xwer_t | xwos_sel_select (struct xwos_sel *sel, xwbmp_t msk[], xwbmp_t trg[]) |
| XWOS API:等待信号选择器中的 选择信号
|
|
static xwer_t | xwos_sel_select_to (struct xwos_sel *sel, xwbmp_t msk[], xwbmp_t trg[], xwtm_t to) |
| XWOS API:限时等待信号选择器中的 选择信号
|
|
static xwer_t | xwos_sel_tryselect (struct xwos_sel *sel, xwbmp_t msk[], xwbmp_t trg[]) |
| XWOS API:检测信号选择器中是否有 选择信号
|
|
技术参考手册: 信号选择器
信号选择器的静态初始化、销毁
信号选择器的动态创建、删除
获取事件的状态
选择信号
使用信号选择器选择信号选择器
信号选择器对象的生命周期管理
- 通过 对象指针 管理生命周期:
- 通过 对象描述符 管理生命周期:
对象描述符和对象标签
已知信号选择器对象的指针的情况下,可以通过 xwos_sel_get_d()
获取 xwos_sel_d , 或可以通过 xwos_sel_get_tik()
获取对象标签。
C++
C++头文件: xwos/osal/sync/sel.hxx
◆ XWOS_SEL_NILD
XWOS API:空的信号选择器对象描述符
在文件 sel.h 第 96 行定义.
◆ xwos_sel_acquire()
XWOS API:检查信号选择器对象的标签并增加引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-ENILOBJD | 空的对象描述符 |
-EOBJDEAD | 对象无效 |
-EACCES | 对象标签检查失败 |
- 注解
-
在文件 sel.h 第 214 行定义.
215{
216 return xwosdl_sel_acquire(&seld.
sel->
ossel, seld.
tik);
217}
◆ xwos_sel_bind()
XWOS API:绑定源信号选择器到目的信号选择器
- 参数
-
[in] | src | 源信号选择器对象的指针 |
[in] | dst | 目的信号选择器对象的指针 |
[in] | pos | 同步对象映射到位图中的位置 |
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
-ECHRNG | 位置超出范围 |
-EALREADY | 同步对象已经绑定到事件对象 |
-EBUSY | 通道已经被其他同步对象独占 |
- 注解
-
多个信号选择器可以依次绑定,形成信号传递链。但不可循环绑定,否则会造成无限循环传递。
在文件 sel.h 第 284 行定义.
285{
286 return xwosdl_sel_bind(&src->
ossel, &dst->
ossel, pos);
287}
◆ xwos_sel_create()
XWOS API:动态方式创建信号选择器
- 参数
-
[out] | seld | 指向缓冲区的指针,通过此缓冲区返回信号选择器对象描述符 |
[in] | num | 信号选择器中信号的数量 |
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-EFAULT | 空指针 |
-ENOMEM | 内存不足 |
- 注解
-
在文件 sel.h 第 182 行定义.
183{
184 return xwosdl_sel_create((xwosdl_sel_d *)seld, num);
185}
◆ xwos_sel_delete()
XWOS API:删除动态方式创建的信号选择器
- 参数
-
- 返回
- 错误码
- 返回值
-
- 注解
-
在文件 sel.h 第 197 行定义.
198{
199 return xwosdl_sel_delete(&seld.
sel->
ossel, seld.
tik);
200}
◆ xwos_sel_fini()
XWOS API:销毁静态方式初始化的信号选择器
- 参数
-
- 返回
- 错误码
- 返回值
-
- 注解
-
在文件 sel.h 第 127 行定义.
128{
129 return xwosdl_sel_fini(&sel->
ossel);
130}
◆ xwos_sel_get_d()
XWOS API:获取信号选择器对象描述符
- 参数
-
- 返回
- 信号选择器对象描述符
- 注解
-
在文件 sel.h 第 257 行定义.
258{
260
262 seld.
tik = xwosdl_sel_get_tik(&sel->
ossel);
263 return seld;
264}
◆ xwos_sel_get_num()
XWOS API:获取信号选择器中的信号槽的数量
- 参数
-
[in] | sel | 信号选择器对象的指针 |
[out] | numbuf | 指向缓冲区的指针,通过此缓冲区返回信号槽的数量 |
- 返回
- 错误码
- 返回值
-
- 注解
-
在文件 sel.h 第 317 行定义.
318{
319 return xwosdl_sel_get_num(&sel->
ossel, numbuf);
320}
◆ xwos_sel_get_tik()
XWOS API:获取信号选择器对象的标签
- 参数
-
- 返回
- 信号选择器对象的标签
- 注解
-
在文件 sel.h 第 244 行定义.
245{
246 return xwosdl_sel_get_tik(&sel->
ossel);
247}
◆ xwos_sel_grab()
XWOS API:增加信号选择器对象的引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-EFAULT | 空指针 |
-EOBJDEAD | 对象无效 |
- 注解
-
此函数主要用于管理 静态对象 的引用计数。 若用于 动态对象 ,需要确保对象的指针一定不是野指针。
在文件 sel.h 第 146 行定义.
147{
148 return xwosdl_sel_grab(&sel->
ossel);
149}
◆ xwos_sel_init()
XWOS API:静态方式初始化信号选择器
- 参数
-
[in] | sel | 信号选择器对象的指针 |
[in] | num | 信号选择器中信号的数量 |
[in] | bmp | 信号选择器用来记录信号状态的位图缓冲区 |
[in] | msk | 信号选择器用来记录掩码状态的位图缓冲区 |
- 返回
- 错误码
- 返回值
-
- 注解
-
在文件 sel.h 第 111 行定义.
113{
114 return xwosdl_sel_init(&sel->
ossel, num, bmp, msk);
115}
◆ xwos_sel_put()
XWOS API:减少信号选择器对象的引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-EFAULT | 空指针 |
-EOBJDEAD | 对象无效 |
- 注解
-
此函数主要用于管理 静态对象 的引用计数。 若用于 动态对象 ,需要确保对象的指针一定不是野指针。
在文件 sel.h 第 165 行定义.
166{
167 return xwosdl_sel_put(&sel->
ossel);
168}
◆ xwos_sel_release()
XWOS API:检查对象的标签并减少引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-ENILOBJD | 空的对象描述符 |
-EOBJDEAD | 对象无效 |
-EACCES | 对象标签检查失败 |
- 注解
-
在文件 sel.h 第 231 行定义.
232{
233 return xwosdl_sel_release(&seld.
sel->
ossel, seld.
tik);
234}
◆ xwos_sel_select()
XWOS API:等待信号选择器中的 选择信号
- 参数
-
[in] | sel | 信号选择器对象的指针 |
[in] | msk | 同步对象位图掩码,表示只关注掩码内的同步对象 |
[out] | trg | 指向缓冲区的指针,通过此缓冲区返回已触发的同步对象位图掩码 |
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-EFAULT | 空指针 |
-EINTR | 等待被中断 |
-ENOTTHDCTX | 不在线程上下文中 |
- 注解
-
在文件 sel.h 第 336 行定义.
337{
338 return xwosdl_sel_select(&sel->
ossel, msk, trg);
339}
◆ xwos_sel_select_to()
XWOS API:限时等待信号选择器中的 选择信号
- 参数
-
[in] | sel | 信号选择器对象的指针 |
[in] | msk | 同步对象位图掩码,表示只关注掩码内的同步对象 |
[out] | trg | 指向缓冲区的指针,通过此缓冲区返回已触发的同步对象位图掩码 |
[in] | to | 期望唤醒的时间点 |
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-EFAULT | 空指针 |
-ETIMEDOUT | 超时 |
-EINTR | 等待被中断 |
-ENOTTHDCTX | 不在线程上下文中 |
- 注解
-
to
表示等待超时的时间点:
to
通常是未来的时间,即 当前系统时间 + delta
, 可以使用 xwtm_ft(delta)
表示;
- 如果
to
是过去的时间点,将直接返回 -ETIMEDOUT
。
在文件 sel.h 第 362 行定义.
365{
366 return xwosdl_sel_select_to(&sel->
ossel, msk, trg, to);
367}
◆ xwos_sel_tryselect()
XWOS API:检测信号选择器中是否有 选择信号
- 参数
-
[in] | sel | 信号选择器对象的指针 |
[in] | msk | 同步对象位图掩码,表示只关注掩码内的同步对象 |
[out] | trg | 指向缓冲区的指针,通过此缓冲区返回已触发的同步对象位图掩码 |
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-EFAULT | 空指针 |
-ENODATA | 没有任何同步对象向信号选择器发送 选择信号 |
- 注解
-
若没有 **选择信号**,立即返回错误码 -ENODATA
,不会等待。
在文件 sel.h 第 384 行定义.
385{
386 return xwosdl_sel_select(&sel->
ossel, msk, trg);
387}
◆ xwos_sel_unbind()
XWOS API:从目的信号选择器上解绑源信号选择器
- 参数
-
[in] | src | 源信号选择器对象的指针 |
[in] | dst | 目的信号选择器对象的指针 |
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
-ENOTCONN | 同步对象没有绑定到事件对象上 |
- 注解
-
在文件 sel.h 第 301 行定义.
302{
303 return xwosdl_sel_unbind(&src->
ossel, &dst->
ossel);
304}