• 队列queue
    • tos_queue_create
    • tos_queue_destroy
    • tos_queue_flush
    • tos_queue_pend
    • tos_queue_post
    • tos_queue_post_all

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