completion
头文件清单 kernel/osal/include/schedule/osal_completion.h
接口清单
接口名称 功能简述 osal_completion_init 初始化动态分配的完成量结构 osal_complete 唤醒单个等待该完成量的线程 osal_wait_for_completion 等待完成量信号,不可中断且无超时 osal_wait_for_completion_timeout 等待完成量信号,支持超时 osal_complete_all 唤醒所有等待该完成量的线程 osal_complete_destory 释放动态分配的完成量资源
Functions
osal_completion_init
头文件清单 kernel/osal/include/schedule/osal_completion.h
功能说明
- 初始化动态分配的完成量结构体
- 内部动态分配内存并初始化完成量状态
- 必须通过 osal_complete_destory 释放资源
前置条件
- com 指针不为 NULL,且 com->completion 为 NULL(未被初始化)
- 系统内存资源充足,可完成动态内存分配
入参
名称 参数类型 详细说明 约束取值范围 com osal_completion * 待初始化的完成量结构体指针 非NULL,且completion字段为NULL
返回值
- 返回类型:int
返回值 文字含义 触发场景 OSAL_SUCCESS(0) 初始化成功 动态内存分配成功且完成量初始化完成 OSAL_FAILURE(-1) 初始化失败 com 为 NULL、com->completion 非 NULL 或动态内存分配失败
osal_complete
头文件清单 kernel/osal/include/schedule/osal_completion.h
功能说明
- 向完成量发送信号,唤醒单个等待该完成量的线程
- 线程按排队顺序依次唤醒
- 唤醒任务前执行全内存屏障
前置条件
- com 指针不为 NULL,且 com->completion 不为 NULL(已完成初始化)
入参
名称 参数类型 详细说明 约束取值范围 com osal_completion * 已初始化的完成量结构体指针 非NULL,且completion字段非NULL
osal_wait_for_completion
头文件清单 kernel/osal/include/schedule/osal_completion.h
功能说明
- 等待完成量信号,阻塞当前线程直到收到信号
- 不可中断,无超时机制
- 调用线程将阻塞直至其他线程调用 osal_complete 或 osal_complete_all
前置条件
- com 指针不为 NULL,且 com->completion 不为 NULL(已完成初始化)
- 不可在中断上下文中调用
入参
名称 参数类型 详细说明 约束取值范围 com osal_completion * 已初始化的完成量结构体指针 非NULL,且completion字段非NULL
osal_wait_for_completion_timeout
头文件清单 kernel/osal/include/schedule/osal_completion.h
功能说明
- 等待完成量信号,支持超时机制
- 在 Linux 系统下 timeout 单位为 jiffies,在 LiteOS 系统下 timeout 单位为 tick
- 不可中断
- 超时到期仍未收到信号则返回 0
前置条件
- com 指针不为 NULL,且 com->completion 不为 NULL(已完成初始化)
- 不可在中断上下文中调用
入参
名称 参数类型 详细说明 约束取值范围 com osal_completion * 已初始化的完成量结构体指针 非NULL,且completion字段非NULL timeout unsigned long 超时时间,Linux 下为 jiffies,LiteOS 下为 tick > 0
返回值
- 返回类型:unsigned long
返回值 文字含义 触发场景 0 超时 等待超时到期仍未收到完成量信号 正值 剩余超时时间 在超时到期前收到完成量信号 -1 执行失败 com 为 NULL 或 com->completion 为 NULL
osal_complete_all
头文件清单 kernel/osal/include/schedule/osal_completion.h
功能说明
- 向完成量发送信号,唤醒所有等待该完成量的线程
- 唤醒任务前执行全内存屏障
- 适用于广播通知场景
前置条件
- com 指针不为 NULL,且 com->completion 不为 NULL(已完成初始化)
入参
名称 参数类型 详细说明 约束取值范围 com osal_completion * 已初始化的完成量结构体指针 非NULL,且completion字段非NULL
osal_complete_destory
头文件清单 kernel/osal/include/schedule/osal_completion.h
功能说明
- 释放动态分配的完成量资源,释放内部内存并将 completion 字段置 NULL
- com 必须由 osal_completion_init 初始化获得
前置条件
- com 指针不为 NULL,且 com->completion 不为 NULL(已完成初始化)
- com 必须由 osal_completion_init 初始化,禁止释放未初始化的完成量
入参
名称 参数类型 详细说明 约束取值范围 com osal_completion * 已初始化的完成量结构体指针 非NULL,且completion字段非NULL
Structures
osal_completion
成员说明:
成员名称 数据类型 描述 completion void * 完成量内部实现指针,由 osal_completion_init 动态分配