队列queue
tos_queue_create
- 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
- 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
- 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
- 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
- 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
- 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 队列已满。