- 信号量semaphore
- tos_sem_create
- tos_sem_destroy
- tos_sem_pend
- tos_sem_post
- tos_sem_post_all
信号量semaphore
tos_sem_create
- k_err_t tos_sem_create(k_sem_t *sem, k_sem_cnt_t init_count);
- 功能描述
创建一个信号量。
- 参数解释
IN/OUT参数名描述[in]sem信号量句柄[in]init_count信号量初始量
- 返回值
K_ERR_NONE 信号量创建成功。
K_ERR_OBJ_PTR_NULL sem指针为空。
tos_sem_destroy
- k_err_t tos_sem_destroy(k_sem_t *sem);
- 功能描述
销毁一个信号量。
- 参数解释
IN/OUT参数名描述[in]sem信号量数据结构指针
- 返回值
K_ERR_NONE 信号量销毁成功。
K_ERR_OBJ_INVALID sem指向的不是一个合法的信号量。
K_ERR_OBJ_PTR_NULL sem指针为空。
tos_sem_pend
- k_err_t tos_sem_pend(k_sem_t *sem, k_tick_t timeout);
- 功能描述
尝试获取一个信号量。
- 参数解释
IN/OUT参数名描述[in]sem信号量句柄[in]timeout等待超时参数
- 返回值
K_ERR_NONE 获取信号量成功。
K_ERR_PEND_NOWAIT 获取信号量失败(信号量资源不足),同时timeout参数为TOS_TIME_NOWAIT(表示获取不到信号量时立即返回)
K_ERR_PEND_SCHED_LOCKED 获取信号量失败,同时系统调度处于锁定状态。
K_ERR_PEND_TIMEOUT 在timeout超时范围内未获取到信号量。
K_ERR_PEND_DESTROY 试图获取的信号量被销毁了(tos_sem_destroy)
tos_sem_post
- k_err_t tos_sem_post(k_sem_t *sem);
- 功能描述
释放信号量,并唤醒等待队列上的一个任务。如果有多个任务在此信号量的等待队列上,唤醒优先级最高的任务。
- 参数解释
IN/OUT参数名描述[in]sem信号量句柄
- 返回值
K_ERR_NONE 信号量释放成功。
K_ERR_SEM_OVERFLOW 信号量值溢出。
tos_sem_post_all
- k_err_t tos_sem_post_all(k_sem_t *sem);
- 功能描述
释放信号量,并唤醒等待队列上的所有任务。
- 参数解释
IN/OUT参数名描述[in]sem信号量句柄
- 返回值
K_ERR_NONE 信号量释放成功。
K_ERR_SEM_OVERFLOW 信号量值溢出。