消息队列msg_queue
tos_msg_queue_create
- k_err_t tos_msg_queue_create(k_msg_queue_t *msg_queue);
- 功能描述
创建一个消息队列。
- 参数解释
IN/OUT参数名描述[in]msg_queue消息队列句柄
- 注意
消息队列msg_queue与队列queue的区别在于,queue提供了一种同步等待机制。实际上,queue的底层实现采用了msg_queue的消息管理机制。
- 返回值
K_ERR_NONE 获取消息成功。
K_ERR_OBJ_PTR_NULL msg_queue是空指针。
tos_msg_queue_destroy
- k_err_t tos_msg_queue_destroy(k_msg_queue_t *msg_queue);
- 功能描述
销毁一个消息队列。
- 参数解释
IN/OUT参数名描述[in]msg_queue消息队列句柄
- 返回值
K_ERR_NONE 获取消息成功。
K_ERR_OBJ_PTR_NULL msg_queue是空指针。
K_ERR_OBJ_INVALID msg_queue指向的不是一个合法的消息队列。
tos_msg_queue_get
- k_err_t tos_msg_queue_get(k_msg_queue_t *msg_queue, void **msg_addr, size_t *msg_size);
- 功能描述
从消息队列中获取一个消息。
- 参数解释
IN/OUT参数名描述[in]msg_queue消息队列句柄[out]msg_addr获取到的消息地址[out]msg_size获取到的消息长度
- 返回值
K_ERR_NONE 获取消息成功。
K_ERR_QUEUE_EMPTY 消息队列已满。
tos_msg_queue_put
- k_err_t tos_msg_queue_put(k_msg_queue_t *msg_queue, void *msg_addr, size_t msg_size, k_opt_t opt);
- 功能描述
向消息队列中放置一个消息。
- 参数解释
IN/OUT参数名描述[in]msg_queue消息队列句柄[in]msg_addr待放置的消息地址[in]msg_size待放置的消息长度[in]opt选项
- 注意
opt选项说明:
1、TOS_OPT_MSG_PUT_LIFO
消息队列采用last in first out策略,也就是最后入队的消息最先出队。
2、TOS_OPT_MSG_PUT_FIFO
消息队列采用first in first out策略,也就是最先入队的消息最先出队。
- 返回值
K_ERR_NONE 消息放置成功。
K_ERR_QUEUE_FULL 消息队列已满。
tos_msg_queue_flush
- void tos_msg_queue_flush(k_msg_queue_t *msg_queue);
- 功能描述
冲洗消息队列(复位消息队列,丢弃消息队列中的所有消息)。
- 参数解释
IN/OUT参数名描述[in]msg_queue消息队列句柄
- 返回值
无