队列queue

tos_queue_create

  1. k_err_t tos_queue_create(k_queue_t *queue);
  • 功能描述

创建一个队列。

  • 参数解释

IN/OUT参数名描述[in]queue队列句柄

  • 返回值

K_ERR_NONE 队列创建成功。

K_ERR_OBJ_PTR_NULL queue指针为空。

tos_queue_destroy

  1. k_err_t tos_queue_destroy(k_queue_t *queue);
  • 功能描述

销毁一个队列。

  • 参数解释

IN/OUT参数名描述[in]queue队列句柄

  • 返回值

K_ERR_NONE 队列销毁成功。

K_ERR_OBJ_PTR_NULL queue指针为空。

K_ERR_OBJ_INVALID queue指向的不是一个合法的队列。

tos_queue_flush

  1. k_err_t tos_queue_flush(k_queue_t *queue);
  • 功能描述

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

  • 参数解释

IN/OUT参数名描述[in]queue队列句柄

  • 返回值

K_ERR_NONE 队列冲洗成功。

K_ERR_OBJ_PTR_NULL queue指针为空。

K_ERR_OBJ_INVALID queue指向的不是一个合法的队列。

tos_queue_pend

  1. k_err_t tos_queue_pend(k_queue_t *queue, void **msg_addr, size_t *msg_size, k_tick_t timeout);
  • 功能描述

尝试从队列中获取消息。

  • 参数解释

IN/OUT参数名描述[in]queue队列句柄[out]msg_addr获取到的消息地址[out]msg_size获取到的消息长度[in]timeout等待超时参数

  • 返回值

K_ERR_NONE 从队列获取消息成功,msg_addr和msg_size分别是获取到的消息地址和消息长度。

K_ERR_PEND_NOWAIT 未能从队列中获取到消息,并且timeout参数为TOS_TIME_NOWAIT(表示获取不到消息时立即返回)。

K_ERR_PEND_SCHED_LOCKED 未能从队列中获取到消息,并且系统调度处于锁定状态。

K_ERR_PEND_TIMEOUT 在timeout超时范围内未能从队列中获取到消息。

K_ERR_PEND_DESTROY 尝试获取消息的队列被销毁了(tos_queue_destroy)。

tos_queue_post

  1. k_err_t tos_queue_post(k_queue_t *queue, void *msg_addr, size_t msg_size);
  • 功能描述

向队列中放入一个消息,并唤醒等待队列上的一个任务。如果有多个任务在此队列的等待队列上,唤醒优先级最高的任务。

  • 参数解释

IN/OUT参数名描述[in]queue队列句柄[in]msg_addr消息地址[in]msg_size消息长度

  • 返回值

K_ERR_NONE 向队列中放入消息成功。

K_ERR_QUEUE_FULL 队列已满。

tos_queue_post_all

  1. k_err_t tos_queue_post_all(k_queue_t *queue, void *msg_addr, size_t msg_size);
  • 功能描述

向队列中放入一个消息,并唤醒等待队列上的所有任务。

  • 参数解释

IN/OUT参数名描述[in]queue队列句柄[in]msg_addr消息地址[in]msg_size消息长度

  • 返回值

K_ERR_NONE 向队列中放入消息成功。

K_ERR_QUEUE_FULL 队列已满。