os_sem.h 函数
2026/4/26大约 1 分钟函数声明同步机制API
os_sem.h 函数
📚 本节导读
用途: 信号量 API 函数声明
来源: kernel/include/os_sem.h:97
一、信号量创建
os_sem_create
os_sem_id os_sem_create(const char *name, os_uint32_t value, os_uint32_t max_value);功能: 创建一个信号量
参数:
- name: 信号量名称
- value: 初始值
- max_value: 最大值
返回值: 信号量 ID,失败返回 OS_NULL
os_sem_delete
os_err_t os_sem_delete(os_sem_id sem);功能: 删除信号量
二、信号量操作
os_sem_wait
os_err_t os_sem_wait(os_sem_id sem, os_int32_t timeout);功能: 等待(P 操作)
参数:
- sem: 信号量 ID
- timeout: 超时时间(0 不等待,负数无限等待)
返回值: OS_EOK 成功,其他值失败
os_sem_post
os_err_t os_sem_post(os_sem_id sem);功能: 释放(V 操作)
三、静态信号量管理
OS_SEMAPHORE_DEFINE
#define OS_SEMAPHORE_DEFINE(name) os_semaphore_dummy_t name功能: 静态定义信号量
os_sem_init
os_err_t os_sem_init(os_sem_id sem, const char *name,
os_uint32_t value, os_uint32_t max_value);功能: 初始化静态信号量
os_sem_deinit
os_err_t os_sem_deinit(os_sem_id sem);功能: 反初始化静态信号量
四、信号量信息查询
os_sem_get_value
os_uint32_t os_sem_get_value(os_sem_id sem);功能: 获取当前值
os_sem_get_max_value
os_uint32_t os_sem_get_max_value(os_sem_id sem);功能: 获取最大值
五、唤醒类型设置
os_sem_set_wake_type
os_err_t os_sem_set_wake_type(os_sem_id sem, os_uint8_t wake_type);功能: 设置唤醒类型
参数:
- wake_type: 唤醒类型
- OS_SEM_WAKE_TYPE_PRIO: 按优先级唤醒
- OS_SEM_WAKE_TYPE_FIFO: 按 FIFO 唤醒