消息队列msg_queue

tos_msg_queue_create

  1. 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

  1. 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

  1. 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

  1. 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

  1. void tos_msg_queue_flush(k_msg_queue_t *msg_queue);
  • 功能描述

冲洗消息队列(复位消息队列,丢弃消息队列中的所有消息)。

  • 参数解释

IN/OUT参数名描述[in]msg_queue消息队列句柄

  • 返回值