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

结构体 | |
| struct | xwmq_msg |
| 消息队列的消息 更多... | |
| struct | xwmq |
| 消息队列对象 更多... | |
| struct | xwmq_d |
| 消息队列对象描述符 更多... | |
函数 | |
| xwer_t | xwmq_init (struct xwmq *mq, struct xwmq_msg *txq, xwsz_t num) |
| XWMQ API:静态方式初始化消息队列 | |
| xwer_t | xwmq_fini (struct xwmq *mq) |
| XWMQ API:销毁静态方式初始化的消息队列对象 | |
| xwer_t | xwmq_grab (struct xwmq *mq) |
| XWMQ API:增加消息队列对象的引用计数 | |
| xwer_t | xwmq_put (struct xwmq *mq) |
| XWMQ API:减少消息队列对象的引用计数 | |
| xwsq_t | xwmq_get_tik (struct xwmq *mq) |
| XWMQ API:获取消息队列对象的标签 | |
| static xwmq_d | xwmq_get_d (struct xwmq *mq) |
| XWMQ API:获取消息队列对象描述符 | |
| xwer_t | xwmq_acquire (xwmq_d mqd) |
| XWMQ API:检查消息队列对象的标签并增加引用计数 | |
| xwer_t | xwmq_release (xwmq_d mqd) |
| XWMQ API:检查消息队列对象的标签并减少引用计数 | |
| xwer_t | xwmq_eq (struct xwmq *mq, xwsq_t topic, void *data) |
| XWMQ API:等待消息槽,成功后将消息发送到消息队列的 尾端 (入队) | |
| xwer_t | xwmq_eq_to (struct xwmq *mq, xwsq_t topic, void *data, xwtm_t to) |
| XWMQ API:限时等待消息槽,成功后将消息发送到消息队列的 尾端 (入队) | |
| xwer_t | xwmq_eq_unintr (struct xwmq *mq, xwsq_t topic, void *data) |
| XWMQ API:等待消息槽,且等待不可被中断, 成功后将消息发送到消息队列的 尾端 (入队) | |
| xwer_t | xwmq_tryeq (struct xwmq *mq, xwsq_t topic, void *data) |
| XWMQ API:尝试获取消息槽,成功后将消息发送到消息队列的 尾端 (入队) | |
| xwer_t | xwmq_jq (struct xwmq *mq, xwsq_t topic, void *data) |
| XWMQ API:等待消息槽,成功后将消息发送到消息队列的 首端 (插队) | |
| xwer_t | xwmq_jq_to (struct xwmq *mq, xwsq_t topic, void *data, xwtm_t to) |
| XWMQ API:限时等待消息槽,成功后将消息发送到消息队列的 首端 (插队) | |
| xwer_t | xwmq_jq_unintr (struct xwmq *mq, xwsq_t topic, void *data) |
| XWMQ API:等待消息槽,且等待不可被中断, 成功后将消息发送到消息队列的 首端 (插队) | |
| xwer_t | xwmq_tryjq (struct xwmq *mq, xwsq_t topic, void *data) |
| XWMQ API:尝试获取消息槽,成功后将消息发送到消息队列的 首端 (插队) | |
| xwer_t | xwmq_dq (struct xwmq *mq, xwsq_t *topic, void **databuf) |
| XWMQ API: 等待从消息队列 首端 接收一条消息 | |
| xwer_t | xwmq_dq_to (struct xwmq *mq, xwsq_t *topic, void **databuf, xwtm_t to) |
| XWMQ API: 限时等待从消息队列 首端 接收一条消息 | |
| xwer_t | xwmq_dq_unintr (struct xwmq *mq, xwsq_t *topic, void **databuf) |
| XWMQ API: 等待从消息队列 首端 接收一条消息,且等待不可被中断 | |
| xwer_t | xwmq_trydq (struct xwmq *mq, xwsq_t *topic, void **databuf) |
| XWMQ API: 尝试从消息队列 首端 接收一条消息 | |
| xwer_t | xwmq_rq (struct xwmq *mq, xwsq_t *topic, void **databuf) |
| XWMQ API: 等待从消息队列 尾端 接收一条消息 | |
| xwer_t | xwmq_rq_to (struct xwmq *mq, xwsq_t *topic, void **databuf, xwtm_t to) |
| XWMQ API: 限时等待从消息队列 尾端 接收一条消息 | |
| xwer_t | xwmq_rq_unintr (struct xwmq *mq, xwsq_t *topic, void **databuf) |
| XWMQ API: 等待从消息队列 尾端 接收一条消息,且等待不可被中断 | |
| xwer_t | xwmq_tryrq (struct xwmq *mq, xwsq_t *topic, void **databuf) |
| XWMQ API: 尝试从消息队列 尾端 接收一条消息 | |
技术参考手册: 消息队列
xwmq_init() :初始化xwmq_fini() :销毁XWOS并未提供基于动态内存管理的创建与删除CAPI。
xwmq_eq() :等待消息槽,只能在 线程 上下文使用xwmq_eq_to() :限时等待消息槽,只能在 线程 上下文使用xwmq_eq_unintr() :不可中断地等待消息槽,只能在 线程 上下文使用xwmq_tryeq() :尝试获取消息槽,可在 任意 上下文使用xwmq_jq() :等待消息槽,只能在 线程 上下文使用xwmq_jq_to() :限时等待消息槽,只能在 线程 上下文使用xwmq_jq_unintr() :不可中断地等待消息槽,只能在 线程 上下文使用xwmq_tryjq() :尝试获取消息槽,可在 任意 上下文使用xwmq_dq() :等待消息,只能在 线程 上下文使用xwmq_dq_to() :限时等待消息,只能在 线程 上下文使用xwmq_dq_unintr() :不可中断地等待消息,只能在 线程 上下文使用xwmq_trydq() :尝试获取消息,可在 任意 上下文使用xwmq_rq() :等待消息,只能在 线程 上下文使用xwmq_rq_to() :限时等待消息,只能在 线程 上下文使用xwmq_rq_unintr() :不可中断地等待消息,只能在 线程 上下文使用xwmq_tryrq() :尝试获取消息,可在 任意 上下文使用xwmq_grab() :增加引用计数xwmq_put() :减少引用计数xwmq_acquire() :增加引用计数xwmq_release() :减少引用计数已知消息队列对象的指针的情况下,可以通过 xwmq_get_d() 获取 xwmq_d , 或可以通过 xwmq_get_tik() 获取对象标签。
XWMQ API:检查消息队列对象的标签并增加引用计数
| [in] | mqd | 消息队列对象描述符 |
| XWOK | 没有错误 |
| -ENILOBJD | 空的对象描述符 |
| -EOBJDEAD | 对象无效 |
| -EACCES | 对象标签检查失败 |

XWMQ API: 等待从消息队列 首端 接收一条消息
| [in] | mq | 消息队列对象的指针 |
| [out] | :topic | 指向缓冲区的指针,通过此缓冲区返回接收消息的标题 |
| [out] | :databuf | 指向缓冲区的指针,通过此缓冲区返回接收消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
若接收队列中没有消息,就阻塞接收线程,直到有新的消息或被中断。
接收消息后,会释放消息槽。若有发送线程正在等待消息槽,将唤醒发送线程。
如果等待被中断,此CAPI将返回 -EINTR 。

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


XWMQ API: 等待从消息队列 首端 接收一条消息,且等待不可被中断
| [in] | mq | 消息队列对象的指针 |
| [out] | :topic | 指向缓冲区的指针,通过此缓冲区返回接收消息的标题 |
| [out] | :databuf | 指向缓冲区的指针,通过此缓冲区返回接收消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
若接收队列中没有消息,就阻塞接收线程,直到有新的消息。 并且接收线程的等待不可被中断。
接收消息后,会释放消息槽。若有发送线程正在等待消息槽,将唤醒发送线程。
<No error

XWMQ API:等待消息槽,成功后将消息发送到消息队列的 尾端 (入队)
| [in] | mq | 消息队列对象的指针 |
| [in] | topic | 消息的标题 |
| [in] | data | 消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
若消息槽队列中没有空闲的消息槽,就阻塞发送线程,直到有空闲的消息槽或被中断。
如果等待被中断,此CAPI将返回 -EINTR 。

XWMQ API:限时等待消息槽,成功后将消息发送到消息队列的 尾端 (入队)
| [in] | mq | 消息队列对象的指针 |
| [in] | topic | 消息的标题 |
| [in] | data | 消息的数据 |
| [in] | to | 期望唤醒的时间点 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ETIMEDOUT | 超时 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
-EINTR 。to 表示等待超时的时间点:to 通常是未来的时间,即 当前系统时间 + delta , 可以使用 xwtm_ft(delta) 表示;to 是过去的时间点,将直接返回 -ETIMEDOUT 。 <No error


XWMQ API:等待消息槽,且等待不可被中断, 成功后将消息发送到消息队列的 尾端 (入队)
| [in] | mq | 消息队列对象的指针 |
| [in] | topic | 消息的标题 |
| [in] | data | 消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
若消息槽队列中没有空闲的消息槽,就阻塞发送线程,直到有空闲的消息槽。 并且发送线程的等待不可被中断。
<No error

XWMQ API:获取消息队列对象的标签
| [in] | mq | 消息队列对象的指针 |

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

XWMQ API:静态方式初始化消息队列
| [in] | mq | 消息队列对象的指针 |
| [in] | txq | 消息槽内存池 |
| [in] | num | 消息槽数量 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINVAL | 无效参数 |

XWMQ API:等待消息槽,成功后将消息发送到消息队列的 首端 (插队)
| [in] | mq | 消息队列对象的指针 |
| [in] | topic | 消息的标题 |
| [in] | data | 消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
若消息槽队列中没有空闲的消息槽,就阻塞发送线程,直到有空闲的消息槽或被中断。
如果等待被中断,此CAPI将返回 -EINTR 。

XWMQ API:限时等待消息槽,成功后将消息发送到消息队列的 首端 (插队)
| [in] | mq | 消息队列对象的指针 |
| [in] | topic | 消息的标题 |
| [in] | data | 消息的数据 |
| [in] | to | 期望唤醒的时间点 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ETIMEDOUT | 超时 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
-EINTR 。to 表示等待超时的时间点:to 通常是未来的时间,即 当前系统时间 + delta , 可以使用 xwtm_ft(delta) 表示;to 是过去的时间点,将直接返回 -ETIMEDOUT 。 <No error


XWMQ API:等待消息槽,且等待不可被中断, 成功后将消息发送到消息队列的 首端 (插队)
| [in] | mq | 消息队列对象的指针 |
| [in] | topic | 消息的标题 |
| [in] | data | 消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
若消息槽队列中没有空闲的消息槽,就阻塞发送线程,直到有空闲的消息槽。 并且发送线程的等待不可被中断。
<No error

XWMQ API:减少消息队列对象的引用计数
| [in] | mq | 消息队列控制块对象指针 |
| XWOK | 没有错误 |
| -EOBJDEAD | 对象无效 |


XWMQ API:检查消息队列对象的标签并减少引用计数
| [in] | mqd | 消息队列对象描述符 |
| XWOK | 没有错误 |
| -ENILOBJD | 空的对象描述符 |
| -EOBJDEAD | 对象无效 |
| -EACCES | 对象标签检查失败 |

XWMQ API: 等待从消息队列 尾端 接收一条消息
| [in] | mq | 消息队列对象的指针 |
| [out] | :topic | 指向缓冲区的指针,通过此缓冲区返回接收消息的标题 |
| [out] | :databuf | 指向缓冲区的指针,通过此缓冲区返回接收消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EINTR | 等待被中断 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
若接收队列中没有消息,就阻塞接收线程,直到有新的消息或被中断。
接收消息后,会释放消息槽。若有发送线程正在等待消息槽,将唤醒发送线程。
如果等待被中断,此CAPI将返回 -EINTR 。

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


XWMQ API: 等待从消息队列 尾端 接收一条消息,且等待不可被中断
| [in] | mq | 消息队列对象的指针 |
| [out] | :topic | 指向缓冲区的指针,通过此缓冲区返回接收消息的标题 |
| [out] | :databuf | 指向缓冲区的指针,通过此缓冲区返回接收消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENOTTHDCTX | 不在线程上下文中 |
| -EDISIRQ | 中断被关闭 |
| -EDISPMPT | 抢占被关闭 |
| -EDISBH | 中断底半部被关闭 |
若接收队列中没有消息,就阻塞接收线程,直到有新的消息。 并且接收线程的等待不可被中断。
接收消息后,会释放消息槽。若有发送线程正在等待消息槽,将唤醒发送线程。
<No error

XWMQ API: 尝试从消息队列 首端 接收一条消息
| [in] | mq | 消息队列对象的指针 |
| [out] | :topic | 指向缓冲区的指针,通过此缓冲区返回接收消息的标题 |
| [out] | :databuf | 指向缓冲区的指针,通过此缓冲区返回接收消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENODATA | 接收队列为空 |
若接收队列中没有新的消息,就立即返回 -ENODATA ,此CAPI可在中断中使用。
接收消息后,会释放消息槽。若有发送线程正在等待消息槽,将唤醒发送线程。
<No error

XWMQ API:尝试获取消息槽,成功后将消息发送到消息队列的 尾端 (入队)
| [in] | mq | 消息队列对象的指针 |
| [in] | topic | 消息的标题 |
| [in] | data | 消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENODATA | 接收队列为空 |
若消息槽队列中没有空闲的消息槽,就立即返回 -ENODATA,此CAPI可在中断中使用。
<No error

XWMQ API:尝试获取消息槽,成功后将消息发送到消息队列的 首端 (插队)
| [in] | mq | 消息队列对象的指针 |
| [in] | topic | 消息的标题 |
| [in] | data | 消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENODATA | 接收队列为空 |
若消息槽队列中没有空闲的消息槽,就立即返回 -ENODATA,此CAPI可在中断中使用。
<No error

XWMQ API: 尝试从消息队列 尾端 接收一条消息
| [in] | mq | 消息队列对象的指针 |
| [out] | :topic | 指向缓冲区的指针,通过此缓冲区返回接收消息的标题 |
| [out] | :databuf | 指向缓冲区的指针,通过此缓冲区返回接收消息的数据 |
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -ENODATA | 接收队列为空 |
若接收队列中没有新的消息,就立即返回 -ENODATA ,此CAPI可在中断中使用。
接收消息后,会释放消息槽。若有发送线程正在等待消息槽,将唤醒发送线程。
<No error
