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