互斥量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 互斥量拥有者嵌套释放。