• 互斥量mutex
    • tos_mutex_create
    • tos_mutex_destroy
    • tos_mutex_pend
    • tos_mutex_pend_timed
    • tos_mutex_post

    互斥量mutex

    tos_mutex_create

    1. k_err_t tos_mutex_create(k_mutex_t *mutex);
    • 功能描述

    创建一个互斥量。

    • 参数解释

    IN/OUT参数名描述[in]mutex互斥量句柄

    • 返回值

    K_ERR_NONE 互斥量创建成功。

    K_ERR_OBJ_PTR_NULL mutex为空指针。

    tos_mutex_destroy

    1. k_err_t tos_mutex_destroy(k_mutex_t *mutex);
    • 功能描述

    销毁一个互斥量。

    • 参数解释

    IN/OUT参数名描述[in]mutex互斥量句柄

    • 返回值

    K_ERR_NONE 互斥量销毁成功。

    K_ERR_OBJ_PTR_NULL mutex为空指针。

    K_ERR_OBJ_INVALID mutex指向的不是一个合法的互斥量。

    tos_mutex_pend

    1. k_err_t tos_mutex_pend(k_mutex_t *mutex);
    • 功能描述

    尝试获取一个互斥量(永久阻塞式等待)。

    • 参数解释

    IN/OUT参数名描述[in]mutex互斥量句柄

    • 返回值

    K_ERR_NONE 获取互斥量成功。

    K_ERR_MUTEX_NESTING_OVERFLOW 互斥量拥有者嵌套获取溢出。

    K_ERR_MUTEX_NESTING 互斥量拥有者嵌套获取。

    K_ERR_PEND_SCHED_LOCKED 此互斥量被其他任务持有,且系统调度处于锁定状态。

    K_ERR_PEND_DESTROY 当前任务试图获取的互斥量被销毁(tos_mutex_destroy)了。

    tos_mutex_pend_timed

    1. k_err_t tos_mutex_pend(k_mutex_t *mutex, k_tick_t timeout);
    • 功能描述

    尝试获取一个互斥量(有限时间内的阻塞等待)。

    • 参数解释

    IN/OUT参数名描述[in]mutex互斥量句柄[in]timeout等待超时参数

    • 返回值

    K_ERR_NONE 获取互斥量成功。

    K_ERR_MUTEX_NESTING_OVERFLOW 互斥量拥有者嵌套获取溢出。

    K_ERR_MUTEX_NESTING 互斥量拥有者嵌套获取。

    K_ERR_PEND_NOWAIT 此互斥量被其他任务持有,同时timeout参数为TOS_TIME_NOWAIT(表示获取不到互斥量时立即返回)

    K_ERR_PEND_SCHED_LOCKED 此互斥量被其他任务持有(获取失败),且系统调度处于锁定状态。

    K_ERR_PEND_TIMEOUT 在timeout时间范围内未获取到互斥量。

    K_ERR_PEND_DESTROY 当前任务试图获取的互斥量被销毁(tos_mutex_destroy)了。

    tos_mutex_post

    1. k_err_t tos_mutex_post(k_mutex_t *mutex);
    • 功能描述

    释放互斥量。

    • 参数解释

    IN/OUT参数名描述[in]mutex互斥量句柄

    • 返回值

    K_ERR_NONE 互斥量释放成功。

    K_ERR_MUTEX_NOT_OWNER 当前任务并非此互斥量的拥有者。

    K_ERR_MUTEX_NESTING_OVERFLOW 互斥量拥有者嵌套释放溢出。

    K_ERR_MUTEX_NESTING 互斥量拥有者嵌套释放。