|
XWOS API
4.0
XWOS C/C++ API参考手册
|

模块 | |
| XWCQ C++ Lib | |
结构体 | |
| struct | xwcq |
| 循环队列对象 更多... | |
| struct | xwcq_d |
| 循环队列对象描述符 更多... | |
宏定义 | |
| #define | XWCQ_DEF_MEMPOOL(name, slotsize, slotnum) __xwcc_alignl1cache xwu8_t name[(slotsize) * (slotnum)] |
| 定义循环队列缓冲区 | |
函数 | |
| xwer_t | xwcq_init (struct xwcq *cq, xwsz_t slotsize, xwsz_t slotnum, xwu8_t *mem) |
| XWCQ API:初始化循环队列 | |
| xwer_t | xwcq_fini (struct xwcq *cq) |
| XWCQ API:销毁循环队列对象 | |
| xwsq_t | xwcq_get_tik (struct xwcq *cq) |
| XWCQ API:获取循环队列对象的标签 | |
| static xwcq_d | xwcq_get_d (struct xwcq *cq) |
| XWCQ API:获取循环队列对象描述符 | |
| xwer_t | xwcq_acquire (xwcq_d cqd) |
| XWCQ API:检查循环队列对象的标签并增加引用计数 | |
| xwer_t | xwcq_release (xwcq_d cqd) |
| XWCQ API:检查循环队列对象的标签并增加引用计数 | |
| xwer_t | xwcq_grab (struct xwcq *cq) |
| XWCQ API:增加循环队列对象的引用计数 | |
| xwer_t | xwcq_put (struct xwcq *cq) |
| XWCQ API:减少循环队列对象的引用计数 | |
| xwer_t | xwcq_eq (struct xwcq *cq, const xwu8_t *data, xwsz_t *size) |
| XWCQ API:将数据发送到循环队列的 尾端 (入队,EnQueue) | |
| xwer_t | xwcq_jq (struct xwcq *cq, const xwu8_t *data, xwsz_t *size) |
| XWCQ API:将数据发送循环队列的 首端 (插队,Jump the Queue) | |
| xwer_t | xwcq_dq (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 等待从循环队列的 首端 接收数据 (离队,DeQueue) | |
| xwer_t | xwcq_dq_to (struct xwcq *cq, xwu8_t *data, xwsz_t *size, xwtm_t to) |
| XWCQ API: 限时等待从循环队列的 首端 接收数据 (离队,DeQueue) | |
| xwer_t | xwcq_dq_unintr (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 等待从循环队列的 首端 接收数据 (离队,DeQueue), 并且等待不可被中断 | |
| xwer_t | xwcq_trydq (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 尝试从循环队列的 首端 接收数据 (离队,DeQueue) | |
| xwer_t | xwcq_rq (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 等待从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue) | |
| xwer_t | xwcq_rq_to (struct xwcq *cq, xwu8_t *data, xwsz_t *size, xwtm_t to) |
| XWCQ API: 限时等待从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue) | |
| xwer_t | xwcq_rq_unintr (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 等待从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue), 并且等待不可被中断 | |
| xwer_t | xwcq_tryrq (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 尝试从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue) | |
| xwer_t | xwcq_pfq (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 等待从循环队列 头端 拷贝数据 (Peek at the Front of Queue) | |
| xwer_t | xwcq_pfq_to (struct xwcq *cq, xwu8_t *data, xwsz_t *size, xwtm_t to) |
| XWCQ API: 限时等待从循环队列 头端 拷贝数据 (Peek at the Front of Queue) | |
| xwer_t | xwcq_pfq_unintr (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 等待从循环队列 头端 拷贝数据 (Peek at the Front of Queue), 并且等待不可被中断 | |
| xwer_t | xwcq_trypfq (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 尝试从循环队列 头端 拷贝数据 (Peek at the Front of Queue) | |
| xwer_t | xwcq_prq (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 等待从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue) | |
| xwer_t | xwcq_prq_to (struct xwcq *cq, xwu8_t *data, xwsz_t *size, xwtm_t to) |
| XWCQ API: 限时等待从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue) | |
| xwer_t | xwcq_prq_unintr (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 等待从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue), 并且等待不可被中断 | |
| xwer_t | xwcq_tryprq (struct xwcq *cq, xwu8_t *data, xwsz_t *size) |
| XWCQ API: 尝试从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue) | |
| xwer_t | xwcq_flush (struct xwcq *cq) |
| XWCQ API: 清空循环队列 | |
| xwer_t | xwcq_get_capacity (struct xwcq *cq, xwsz_t *capbuf) |
| XWCQ API: 获取循环队列的容量 | |
| xwer_t | xwcq_get_size (struct xwcq *cq, xwsz_t *szbuf) |
| XWCQ API: 获取循环队列的单个数据槽的大小 | |
| xwer_t | xwcq_get_availability (struct xwcq *cq, xwsz_t *avbbuf) |
| XWCQ API: 获取循环队列中有效数据槽的数量 | |
| xwer_t | xwcq_bind (struct xwcq *cq, struct xwos_sel *sel, xwsq_t pos) |
| XWOS API:绑定循环队列对象到信号选择器 | |
| xwer_t | xwcq_unbind (struct xwcq *cq, struct xwos_sel *sel) |
| XWOS API:从信号选择器上解绑循环队列对象 | |
技术参考手册: 循环队列
xwcq_init() :初始化xwcq_fini() :销毁XWOS并未提供基于动态内存管理的创建与删除CAPI。
xwcq_dq() :等待消息,只能在 线程 上下文使用xwcq_dq_to() :限时等待消息,只能在 线程 上下文使用xwcq_dq_unintr() :不可中断地等待消息,只能在 线程 上下文使用xwcq_trydq() :尝试获取消息,可在 任意 上下文使用xwcq_rq() :等待消息,只能在 线程 上下文使用xwcq_rq_to() :限时等待消息,只能在 线程 上下文使用xwcq_rq_unintr() :不可中断地等待消息,只能在 线程 上下文使用xwcq_tryrq() :尝试获取消息,可在 任意 上下文使用xwcq_pfq() :等待消息,只能在 线程 上下文使用xwcq_pfq_to() :限时等待消息,只能在 线程 上下文使用xwcq_pfq_unintr() :不可中断地等待消息,只能在 线程 上下文使用xwcq_trypfq() :尝试获取消息,可在 任意 上下文使用xwcq_prq() :等待消息,只能在 线程 上下文使用xwcq_prq_to() :限时等待消息,只能在 线程 上下文使用xwcq_prq_unintr() :不可中断地等待消息,只能在 线程 上下文使用xwcq_tryprq() :尝试获取消息,可在 任意 上下文使用xwcq_flush() :将循环队列恢复到初始化状态xwcq_get_capacity() :获取循环队列的容量xwcq_get_size() :获取单个数据槽的大小xwcq_get_availability() :获取循环队列中有效数据槽的数量xwcq_grab() :增加引用计数xwcq_put() :减少引用计数xwcq_acquire() :增加引用计数xwcq_release() :减少引用计数已知循环队列对象的指针的情况下,可以通过 xwcq_get_d() 获取 xwcq_d , 或可以通过 xwcq_get_tik() 获取对象标签。
| #define XWCQ_DEF_MEMPOOL | ( | name, | |
| slotsize, | |||
| slotnum | |||
| ) | __xwcc_alignl1cache xwu8_t name[(slotsize) * (slotnum)] |
XWCQ API:检查循环队列对象的标签并增加引用计数
| [in] | cqd | 循环队列对象描述符 |
| XWOK | 没有错误 |
| -ENILOBJD | 空的对象描述符 |
| -EOBJDEAD | 对象无效 |
| -EACCES | 对象标签检查失败 |

XWOS API:绑定循环队列对象到信号选择器
| [in] | cq | 循环队列对象的指针 |
| [in] | sel | 信号选择器的指针 |
| [in] | pos | 循环队列对象对象映射到位图中的位置 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ECHRNG | 位置超出范围 |
| -EALREADY | 同步对象已经绑定到事件对象 |
| -EBUSY | 通道已经被其他同步对象独占 |

XWCQ API: 等待从循环队列的 首端 接收数据 (离队,DeQueue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
-EINTR 。 

XWCQ API: 限时等待从循环队列的 首端 接收数据 (离队,DeQueue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| [in] | to | 期望唤醒的时间点 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ETIMEDOUT | 超时 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
-EINTR 。to 表示等待超时的时间点:to 通常是未来的时间,即 当前系统时间 + delta , 可以使用 xwtm_ft(delta) 表示;to 是过去的时间点,将直接返回 -ETIMEDOUT 。 <No error


XWCQ API: 等待从循环队列的 首端 接收数据 (离队,DeQueue), 并且等待不可被中断
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
<No error


XWCQ API:将数据发送到循环队列的 尾端 (入队,EnQueue)
| [in] | cq | 循环队列对象的指针 |
| [in] | data | 数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
*size 超过初始化循环队列时指定的 slotsize , 数据将被截断。<No error


XWCQ API:销毁循环队列对象
| [in] | cq | 循环队列对象的指针 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |

XWCQ API: 获取循环队列中有效数据槽的数量
| [in] | cq | 循环队列对象的指针 |
| [out] | szbuf | 指向缓冲区的指针,此缓冲区用于返回数量 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
<No error

XWCQ API: 获取循环队列的容量
| [in] | cq | 循环队列对象的指针 |
| [out] | capbuf | 指向缓冲区的指针,此缓冲区用于返回容量 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
slotnum 指定的。 <No error

XWCQ API: 获取循环队列的单个数据槽的大小
| [in] | cq | 循环队列对象的指针 |
| [out] | szbuf | 指向缓冲区的指针,此缓冲区用于返回单个数据槽的大小 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
slotsize 指定的。 <No error

XWCQ API:获取循环队列对象的标签
| [in] | cq | 循环队列对象的指针 |

XWCQ API:增加循环队列对象的引用计数
| [in] | cq | 循环队列控制块对象指针 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EOBJDEAD | 对象无效 |


XWCQ API:初始化循环队列
| [in] | cq | 循环队列对象的指针 |
| [in] | slotsize | 每个数据槽的大小 |
| [in] | slotnum | 数据槽的数量 |
| [in] | mem | 数据缓冲区的指针, |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ESIZE | slotsize 或 slotnum 为 0 |
| -EALIGN | slotsize 不是 XWMMCFG_ALIGNMENT 的整数倍 |
slotnum 个数据槽构成,每个数据槽能容纳 slotsize 字节的数据。mem 大小不能小于 slotsize * slotnum , 用户应该使用宏 XWCQ_DEF_MEMPOOL() 来定义数据缓冲区。slotsize 必须是系统配置 XWMMCFG_ALIGNMENT 的整数倍, 错误的大小将返回错误码 -EALIGN 。 <Size error
<Size error
< 内存管理对齐的字节数
< 内存管理未对齐掩码
<Not aligned


XWCQ API:将数据发送循环队列的 首端 (插队,Jump the Queue)
| [in] | cq | 循环队列对象的指针 |
| [in] | data | 数据 |
| [in] | size | 数据的大小 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
*size 超过初始化循环队列时指定的 slotsize , 数据将被截断。<No error


XWCQ API: 等待从循环队列 头端 拷贝数据 (Peek at the Front of Queue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
-EINTR 。 

XWCQ API: 限时等待从循环队列 头端 拷贝数据 (Peek at the Front of Queue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| [in] | to | 期望唤醒的时间点 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ETIMEDOUT | 超时 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
-EINTR 。to 表示等待超时的时间点:to 通常是未来的时间,即 当前系统时间 + delta , 可以使用 xwtm_ft(delta) 表示;to 是过去的时间点,将直接返回 -ETIMEDOUT 。 <No error


XWCQ API: 等待从循环队列 头端 拷贝数据 (Peek at the Front of Queue), 并且等待不可被中断
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
<No error


XWCQ API: 等待从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
-EINTR 。 

XWCQ API: 限时等待从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| [in] | to | 期望唤醒的时间点 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ETIMEDOUT | 超时 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
-EINTR 。to 表示等待超时的时间点:to 通常是未来的时间,即 当前系统时间 + delta , 可以使用 xwtm_ft(delta) 表示;to 是过去的时间点,将直接返回 -ETIMEDOUT 。 <No error


XWCQ API: 等待从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue), 并且等待不可被中断
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
<No error


XWCQ API:减少循环队列对象的引用计数
| [in] | cq | 循环队列控制块对象指针 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EOBJDEAD | 对象无效 |


XWCQ API:检查循环队列对象的标签并增加引用计数
| [in] | cqd | 循环队列对象描述符 |
| XWOK | 没有错误 |
| -ENILOBJD | 空的对象描述符 |
| -EOBJDEAD | 对象无效 |
| -EACCES | 对象标签检查失败 |

XWCQ API: 等待从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
-EINTR 。 

XWCQ API: 限时等待从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| [in] | to | 期望唤醒的时间点 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ETIMEDOUT | 超时 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
-EINTR 。to 表示等待超时的时间点:to 通常是未来的时间,即 当前系统时间 + delta , 可以使用 xwtm_ft(delta) 表示;to 是过去的时间点,将直接返回 -ETIMEDOUT 。 <No error


XWCQ API: 等待从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue), 并且等待不可被中断
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
<No error


XWCQ API: 尝试从循环队列的 首端 接收数据 (离队,DeQueue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENODATA | 循环队列为空 |
-ENODATA 。<No error


XWCQ API: 尝试从循环队列 头端 拷贝数据 (Peek at the Front of Queue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENODATA | 循环队列为空 |
-ENODATA ,此CAPI可在中断中使用。 <No error


XWCQ API: 尝试从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENODATA | 循环队列为空 |
-ENODATA ,此CAPI可在中断中使用。 <No error


XWCQ API: 尝试从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue)
| [in] | cq | 循环队列对象的指针 |
| [out] | data | 指向缓冲区的指针,此缓冲区用于接收数据 |
| [in,out] | size | 指向缓冲区的指针,此缓冲区:
|
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENODATA | 循环队列为空 |
-ENODATA ,此CAPI可在中断中使用。 <No error


XWOS API:从信号选择器上解绑循环队列对象
| [in] | cq | 循环队列对象的指针 |
| [in] | sel | 信号选择器的指针 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENOTCONN | 同步对象没有绑定到事件对象上 |
< 报告BUG
< 当条件x成立时报告BUG
<No error
