赞
踩
鸿蒙在CMSIS-RTOS2接口中封装了LiteOS-M的内核代码。因此当需要使用CMSIS-RTOS2接口时,只需要调用相应接口就行了。本篇文章将会记录官网API的使用方法以及使用案例,记录自己学习的想法和使用技巧会保持持续更新哟!!!
接口顺序将会按照小熊派官网视频讲解的顺序记录以便自己学习和使用。
外文名称:Thread Management
源接口地址:Thread Management
HarmonyOS_PPT:HarmonyOS内核开发-任务管理.pdf
任务管理可以规划函数的运行次序,非常方便地对任务运行的状态进行掌控。
所属函数:osThreadNew
数据类型 | 属性名称 | 描述 | 默认值 | 备注 |
---|---|---|---|---|
const char * | name | 任务名称 | NULL | |
uint32_t | attr_bits | 设置 osThreadJoin | 0U | |
void * | cb_mem | 任务块指针 | NULL | |
uint32_t | cb_size | 任务块指针大小 | 0U | |
void * | stack_mem | 任务栈指针 | NULL | |
uint32_t | stack_size | 任务栈指针大小 | 0U | |
osPriority_t | priority | 任务优先级 | osPriorityNormal | |
TZ_ModuleId_t | tz_module | TrustZone模块标识 | 0U | |
uint32_t | reserved | 保留字段 | 0U |
所属结构体:osThreadAttr_t
通过属性名称attr_bits
设置,attr_bits = 1U
任务与资源的关联
所属结构体:osThreadAttr_t
属性名称attr_bits
的默认值,attr_bits = 0U
断开任务与资源的关联,并在任务Terminated后资源将会重新归还系统给其他任务使用。
所属结构体:osThreadAttr_t
属性名称priority
,默认值osPriorityNormal
优先级 | 描述 |
---|---|
osPriorityNone | 无 |
osPriorityIdle | 预留给空闲任务(不可使用) |
osPriorityLow | 8个低级优先级 |
osPriorityBelowNormal | 8个低于正常优先级 |
osPriorityNormal | 8个正常优先级 |
osPriorityAboveNormal | 8个高于正常优先级 |
osPriorityHigh | 8个高级优先级 |
osPriorityRealtime | 8个实时优先级 |
osPriorityISR | 预留给ISR延迟任务(不可使用) |
osPriorityError | 优先级错误 |
osPriorityReserved | 保留字段 |
所属函数:osThreadNew
任务入口函数,即任务去执行的函数。
如果函数不是osThreadFunc_t
类型,使用时需要给函数转换类型为osThreadFunc_t
。
所属函数:[ osThreadTerminate | osThreadSuspend | osThreadResume ]
所属函数返回值:[ osThreadNew | osThreadGetId | osThreadEnumerate | osMutexGetOwner ]
任务ID,即线程号。
可以定位到一个具体任务上面。
所属函数返回值:osThreadGetState_t
状态 | 描述 |
---|---|
osThreadInactive | 任务未工作 |
osThreadReady | 任务就绪,随时准备工作 |
osThreadRunning | 任务开始运行 |
osThreadBlocked | 任务阻塞,任务等待中 |
osThreadTerminated | 任务终止,任务停止运行 |
osThreadError | 任务出错,任务不存在或没有scheduled |
osThreadReserved | 保留字段 |
参数名称 | 数据类型 | 描述 |
---|---|---|
func | osThreadFunc_t | 任务入口函数 |
argument | void * | 任务入口函数的参数 |
attr | const osThreadAttr_t | 任务的属性 |
返回值 | osThreadId_t | 任务ID |
将任务添加到active任务列表中,将任务状态设置为READY。
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_id | osThreadId_t | 任务ID |
返回值 | osStatus_t | 操作结果 |
将任务从active任务列表中移除掉。
如果任务当前状态为RUNNING时被该函数终止,这让下一个任务状态为READY的任务开始RUNNING。
如果任务不存在则不会终止该任务,而是返回osErrorResource。
参数名称 | 描述 |
---|---|
osOK | 操作成功 |
osErrorParameter | 任务ID为NULL或无效 |
osErrorResource | 任务无效或没有其他任务存在 |
osErrorISR | 任务不能被终止 |
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_id | osThreadId_t | 任务ID |
返回值 | osStatus_t | 操作结果 |
如果当前作用域下有一个任务状态设置为BLOCKED,那么下一个任务状态为READY的任务开始RUNNING。
如果任务状态为BLOCKED的任务通过 osThreadResume 函数将其恢复,那么任务状态改为READY。
参数名称 | 描述 |
---|---|
osOK | 操作成功 |
osErrorParameter | 任务ID为NULL或无效 |
osErrorResource | 任务无效或没有其他任务存在 |
osErrorISR | 任务不能被终止 |
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_id | osThreadId_t | 任务ID |
返回值 | osStatus_t | 操作结果 |
将状态变为BLOCKED的任务重新回到READY状态。
通过该函数恢复的任务在当前作用域下,如果其优先级高于某个状态为RUNNING的任务,那么其任务状态直接切换为RUNNIG。
建议:不提倡将不是通过osThreadSuspend函数终止的任务,直接通过该函数进行恢复。
参数名称 | 描述 |
---|---|
osOK | 操作成功 |
osErrorParameter | 任务ID为NULL或无效 |
osErrorResource | 任务无效或没有其他任务存在 |
osErrorISR | 任务不能被终止 |
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_id | osThreadId_t | 任务ID |
返回值 | name | 任务名称,默认值为 " " |
参数名称 | 数据类型 | 描述 |
---|---|---|
返回值 | osThreadId_t | 任务ID |
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_id | osThreadId_t | 任务ID |
返回值 | osThreadState_t | 任务状态 |
如果任务被ISR调用则会返回osThreadError。
所属函数返回值:osThreadGetState_t
状态 | 描述 |
---|---|
osThreadInactive | 任务未工作 |
osThreadReady | 任务就绪,随时准备工作 |
osThreadRunning | 任务开始运行 |
osThreadBlocked | 任务阻塞,任务等待中 |
osThreadTerminated | 任务终止,任务停止运行 |
osThreadError | 任务出错,任务不存在或没有scheduled |
osThreadReserved | 保留字段 |
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_id | osThreadId_t | 任务ID |
priority | osPriority_t | 任务优先级 |
返回值 | osStatus_t | 操作结果 |
所属结构体:osThreadAttr_t
属性名称priority
,默认值osPriorityNormal
优先级 | 描述 |
---|---|
osPriorityNone | 无 |
osPriorityIdle | 预留给空闲任务(不可使用) |
osPriorityLow | 8个低级优先级 |
osPriorityBelowNormal | 8个低于正常优先级 |
osPriorityNormal | 8个正常优先级 |
osPriorityAboveNormal | 8个高于正常优先级 |
osPriorityHigh | 8个高级优先级 |
osPriorityRealtime | 8个实时优先级 |
osPriorityISR | 预留给ISR延迟任务(不可使用) |
osPriorityError | 优先级错误 |
osPriorityReserved | 保留字段 |
参数名称 | 描述 |
---|---|
osOK | 操作成功 |
osErrorParameter | 任务ID为NULL或无效 |
osErrorResource | 任务无效或没有其他任务存在 |
osErrorISR | 任务不能被终止 |
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_id | osThreadId_t | 任务ID |
返回值 | osPriority_t | 任务优先级 |
所属结构体:osThreadAttr_t
属性名称priority
,默认值osPriorityNormal
优先级 | 描述 |
---|---|
osPriorityNone | 无 |
osPriorityIdle | 预留给空闲任务(不可使用) |
osPriorityLow | 8个低级优先级 |
osPriorityBelowNormal | 8个低于正常优先级 |
osPriorityNormal | 8个正常优先级 |
osPriorityAboveNormal | 8个高于正常优先级 |
osPriorityHigh | 8个高级优先级 |
osPriorityRealtime | 8个实时优先级 |
osPriorityISR | 预留给ISR延迟任务(不可使用) |
osPriorityError | 优先级错误 |
osPriorityReserved | 保留字段 |
如果由相同优先级的READY状态的任务,那么就开始执行它;如果没有那么继续执行当前任务。
注意事项
参数名称 | 描述 |
---|---|
osOK | 操作成功 |
osError | 未知错误 |
osErrorISR | 任务不能被终止 |
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_id | osThreadId_t | 任务ID |
返回值 | osPriority_t | 任务优先级 |
当某个任务该函数执行,那么该任务状态为TERMINATED时将会归还所有资源给系统。
任务定义为osThreadDetached时,将不会有任何改变。
参数名称 | 描述 |
---|---|
osOK | 操作成功 |
osErrorParameter | 任务ID为NULL或无效 |
osErrorResource | 任务无效状态 |
osErrorISR | 任务不能被终止 |
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_id | osThreadId_t | 任务ID |
返回值 | osPriority_t | 任务优先级 |
注意事项
参数名称 | 描述 |
---|---|
osOK | 操作成功 |
osErrorParameter | 任务ID为NULL或无效 |
osErrorResource | 任务无效状态 |
osErrorISR | 任务不能被终止 |
不是很懂,应该是可以将结果同步到 osThreadJoin
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_id | osThreadId_t | 任务ID |
返回值 | uint32_t | 任务栈大小,Bytes |
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_id | osThreadId_t | 任务ID |
返回值 | uint32_t | 任务栈大小,Bytes |
注意事项
注意事项
参数名称 | 数据类型 | 描述 |
---|---|---|
thread_array | osThreadId_t | 任务数组 |
array_items | uint32_t | 接收任务ID的数量 |
返回值 | uint32_t | 枚举的任务数 |
注意事项
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。