跳到主要内容

tkl_semaphore | 信号量

文件 tkl_semaphore.c 用于创建和管理信号量,用于嵌入式系统或多任务操作系统中实现任务间同步或事件通知。本文件提供了创建信号量、等待信号量、发送信号量以及释放信号量的接口。文件同样是由涂鸦操作系统(TuyaOS)自动生成,并为开发者预留了代码实现的区域。

API 说明

tkl_semaphore_create_init

OPERATE_RET tkl_semaphore_create_init(TKL_SEM_HANDLE *handle, uint32_t sem_cnt, uint32_t sem_max);

功能

创建并初始化一个计数信号量。

参数

  • handle: 输出参数,用于接收创建的信号量句柄。
  • sem_cnt: 信号量的初始计数。
  • sem_max: 信号量的最大计数。

返回值

返回值为 OPRT_OK 表示成功创建信号量,其余返回值表示出现错误,具体错误码可参见 tuya_error_code.h

tkl_semaphore_wait

OPERATE_RET tkl_semaphore_wait(const TKL_SEM_HANDLE handle, uint32_t timeout);

功能

等待一个信号量。

参数

  • handle: 信号量句柄。
  • timeout: 等待超时时间,单位毫秒。TKL_SEM_WAIT_FOREVER 表示一直等待直到获得信号量。

返回值

OPRT_OK 表示成功获取信号量,OPRT_OS_ADAPTER_SEM_WAIT_TIMEOUT 表示发生超时,其他返回值表示出现错误,具体错误码可查阅 tuya_error_code.h

tkl_semaphore_post

OPERATE_RET tkl_semaphore_post(const TKL_SEM_HANDLE handle);

功能

发送(释放)一个信号量,增加信号量的计数。

参数

  • handle: 信号量句柄。

返回值

OPRT_OK 表示成功发送信号量,其它返回值表示出现错误,详细的错误码可查询 tuya_error_code.h

tkl_semaphore_release

OPERATE_RET tkl_semaphore_release(const TKL_SEM_HANDLE handle);

功能

释放并删除一个信号量。

参数

  • handle: 信号量句柄。

返回值

OPRT_OK 表示成功释放资源,其他返回值代表发生错误,可以通过 tuya_error_code.h 获得详细信息。