跳转至

task

task 提供内核线程的创建、销毁、优先级设置与调度控制功能,支持多操作系统(linux liteos freertos)下的任务管理与休眠延时。

头文件清单

#include "include/osal/schedule/osal_task.h"

接口清单

接口名称 功能简述
osal_kthread_create 创建内核线程
osal_kthread_create_static_ext 以静态栈方式创建内核线程
osal_kthread_create_ext 以扩展参数方式创建内核线程
osal_kthread_set_priority 设置线程优先级
osal_kthread_set_policy 设置线程调度策略
osal_kthread_set_affinity 设置线程 CPU 亲和性
osal_kthread_should_stop 检查线程是否应停止
osal_kthread_wakeup_process 唤醒指定线程
osal_kthread_bind 绑定线程到指定 CPU 核
osal_kthread_lock 锁定任务调度
osal_kthread_unlock 解锁任务调度
osal_kthread_destroy 销毁已创建的线程
osal_kthread_schedule 设置当前线程为不可中断休眠状态
osal_kthread_set_uninterrupt 设置当前线程为不可中断状态
osal_kthread_set_running 设置当前线程为运行状态
osal_cond_resched 主动让出 CPU 资源
osal_schedule 将当前任务放回就绪队列并触发调度
osal_kneon_begin 启用 NEON 算法加速
osal_kneon_end 停用 NEON 算法加速
osal_yield 暂停当前线程释放 CPU 时间片
osal_get_current_pid 获取当前线程 PID
osal_get_current_tid 获取当前线程 TID
osal_get_current_tgid 获取当前线程 TGID
osal_get_current_taskname 获取当前线程名称
osal_msleep 以毫秒为单位休眠当前线程
osal_msleep_uninterruptible 以毫秒为单位不可中断休眠
osal_udelay 以微秒为单位忙等待延时
osal_mdelay 以毫秒为单位忙等待延时
osal_kthread_suspend 挂起指定线程
osal_kthread_resume 恢复已挂起的线程
osal_kthread_recycle 回收僵尸线程
osal_kernel_init 初始化内核
osal_kernel_start 启动内核
osal_kernel_get_state 获取内核运行状态

Functions

osal_kthread_create

osal_task *osal_kthread_create(osal_kthread_handler handler, void *data, const char *name, unsigned int stack_size)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 提供内核线程创建接口,内部调用 kthread_run 创建内核线程
  • 若创建的线程栈大小小于等于 MINIMAL_STACK_SIZE,则将栈大小设为 MINIMAL_STACK_SIZE
  • 栈大小需足够大以避免任务栈溢出
  • 支持系统:linux liteos freertos

前置条件

  • 调用时序约束:模块已初始化完成,内核调度已启动或即将启动
  • 参数约束:handler 函数指针不为 NULL

入参

名称 参数类型 详细说明 约束取值范围
handler osal_kthread_handler 线程入口函数 非 NULL,函数签名为 int ()(void )
data void * 传递给线程入口函数的参数 可为 NULL
name const char * 线程名称 非 NULL,字符串标识
stack_size unsigned int 线程栈空间大小(字节) 大于 0,小于等于 MINIMAL_STACK_SIZE 时自动设为 MINIMAL_STACK_SIZE

返回值

  • 返回类型:osal_task *
返回值 文字含义 触发场景
非 NULL 指针 线程创建成功 线程成功创建并返回线程指针
NULL 线程创建失败 参数无效或内存分配失败或底层任务创建失败

参考案例

  • application/3322/input_wear/input_feature/input_feature.c#input_device_task
  • application/ux/solution/system/ux_api_system_config.c#ux_system_execute_format

osal_kthread_create_static_ext

osal_task *osal_kthread_create_static_ext(osal_kthread_init *init_handle, void *topStack)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 以静态栈方式创建内核线程,调用者自行分配栈空间
  • 通过 osal_kthread_init 结构体传入线程参数,支持设置优先级、调度策略等扩展属性
  • 支持系统:liteos

前置条件

  • 调用时序约束:内核调度已启动或即将启动
  • 依赖关系:init_handle 不为 NULL,topStack 不为 NULL

入参

名称 参数类型 详细说明 约束取值范围
init_handle osal_kthread_init * 线程初始化参数结构体 非 NULL
topStack void * 任务栈指针 非 NULL,由调用者分配

返回值

  • 返回类型:osal_task *
返回值 文字含义 触发场景
非 NULL 指针 线程创建成功 线程成功创建并返回线程指针
NULL 线程创建失败 参数无效或底层任务创建失败

osal_kthread_create_ext

osal_task *osal_kthread_create_ext(osal_kthread_init *init_handle)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 以扩展参数方式创建内核线程,通过 osal_kthread_init 结构体传入线程参数
  • 支持设置优先级、调度策略等扩展属性
  • 支持系统:liteos

前置条件

  • 调用时序约束:内核调度已启动或即将启动
  • 依赖关系:init_handle 不为 NULL

入参

名称 参数类型 详细说明 约束取值范围
init_handle osal_kthread_init * 线程初始化参数结构体 非 NULL

返回值

  • 返回类型:osal_task *
返回值 文字含义 触发场景
非 NULL 指针 线程创建成功 线程成功创建并返回线程指针
NULL 线程创建失败 参数无效或底层任务创建失败

osal_kthread_set_priority

int osal_kthread_set_priority(osal_task *task, unsigned int priority)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 设置指定线程的优先级
  • 支持系统:linux liteos freertos

前置条件

  • 调用时序约束:目标线程已通过 osal_kthread_create 成功创建
  • 依赖关系:task 须为 osal_kthread_create 返回的有效指针

入参

名称 参数类型 详细说明 约束取值范围
task osal_task * 目标线程句柄 非 NULL,须为 osal_kthread_create 返回的有效指针
priority unsigned int 待设置的优先级 OSAL_TASK_PRIORITY_HIGH(3) / OSAL_TASK_PRIORITY_MIDDLE(6) / OSAL_TASK_PRIORITY_LOW(10)(LiteOS/FreeRTOS 模式)

返回值

  • 返回类型:int
返回值 文字含义 触发场景
OSAL_SUCCESS(0) 设置成功 优先级设置成功
OSAL_FAILURE(-1) 设置失败 task 为 NULL
其他非零值 底层返回码 底层 LOS_TaskPriSet 返回非 LOS_OK

参考案例

  • application/3322/input_wear/input_feature/input_feature.c

osal_kthread_set_policy

int osal_kthread_set_policy(osal_task *task, osal_thread_policy policy)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 设置指定线程的调度策略
  • 支持系统:linux liteos freertos

前置条件

  • 调用时序约束:目标线程已通过 osal_kthread_create 成功创建
  • 依赖关系:task 须为 osal_kthread_create 返回的有效指针

入参

名称 参数类型 详细说明 约束取值范围
task osal_task * 目标线程句柄 非 NULL,须为 osal_kthread_create 返回的有效指针
policy osal_thread_policy 调度策略 OSAL_THREAD_POLICY_DEFAULT(0) / OSAL_THREAD_POLICY_RT(1) / OSAL_THREAD_POLICY_CFS(2)

osal_kthread_set_affinity

void osal_kthread_set_affinity(osal_task *task, int cpu_mask)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 设置线程的 CPU 亲和性,指定线程可在哪些 CPU 核上运行
  • 支持系统:linux liteos

前置条件

  • 调用时序约束:目标线程已通过 osal_kthread_create 成功创建
  • 依赖关系:task 须为 osal_kthread_create 返回的有效指针

入参

名称 参数类型 详细说明 约束取值范围
task osal_task * 目标线程句柄 非 NULL
cpu_mask int CPU 亲和性掩码 OSAL_CPU_ALL / OSAL_CPU_0 / OSAL_CPU_1 / OSAL_CPU_2 / OSAL_CPU_3

osal_kthread_should_stop

int osal_kthread_should_stop(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 检查当前线程是否应停止运行
  • 用于内核线程的退出判断
  • 支持系统:linux liteos

前置条件

  • 调用时序约束:当前线程为通过 osal_kthread_create 创建的内核线程
  • 上下文限制:需在任务上下文中调用

返回值

  • 返回类型:int
返回值 文字含义 触发场景
0 线程继续运行 当前线程未被要求停止
1 线程应停止 当前线程被 kthread_stop 停止

osal_kthread_wakeup_process

int osal_kthread_wakeup_process(osal_task *task)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 唤醒指定的线程
  • 支持系统:linux

前置条件

  • 调用时序约束:目标线程已通过 osal_kthread_create 成功创建
  • 依赖关系:task 须为 osal_kthread_create 返回的有效指针

入参

名称 参数类型 详细说明 约束取值范围
task osal_task * 待唤醒的线程句柄 非 NULL

返回值

  • 返回类型:int
返回值 文字含义 触发场景
0 唤醒成功 线程成功被唤醒
-1 唤醒失败 唤醒操作失败

osal_kthread_bind

void osal_kthread_bind(osal_task *task, unsigned int cpu)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 将指定线程绑定到特定 CPU 核上运行
  • 支持系统:linux

前置条件

  • 调用时序约束:目标线程已通过 osal_kthread_create 成功创建
  • 依赖关系:task 须为 osal_kthread_create 返回的有效指针

入参

名称 参数类型 详细说明 约束取值范围
task osal_task * 目标线程句柄 非 NULL
cpu unsigned int 绑定的 CPU 核编号 有效 CPU 核编号

osal_kthread_lock

void osal_kthread_lock(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 锁定任务调度,锁定后不会发生任务切换
  • 若任务调度已锁定但中断未禁用,任务仍可被中断
  • 每次调用将任务调度锁计数加一,须与 osal_kthread_unlock 配对使用
  • 支持系统:liteos freertos

前置条件

  • 上下文限制:须与 osal_kthread_unlock 配对使用,确保锁计数最终归零
  • 调用时序约束:内核调度已启动

osal_kthread_unlock

void osal_kthread_unlock(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 解锁任务调度,调用后将任务锁计数减一
  • 若任务被多次锁定,仅在锁计数归零时才会真正解锁
  • 须与 osal_kthread_lock 配对使用
  • 支持系统:liteos freertos

前置条件

  • 调用时序约束:此前已调用 osal_kthread_lock
  • 上下文限制:须与 osal_kthread_lock 配对使用

osal_kthread_destroy

void osal_kthread_destroy(osal_task *task, unsigned int stop_flag)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 停止并销毁指定的内核线程
  • 调用此接口会释放 task 内存,调用者需将指针置 NULL
  • 若要销毁线程,该线程不能在调用此函数前已自行结束,否则将触发异常
  • 支持系统:linux liteos freertos

前置条件

  • 调用时序约束:目标线程由 osal_kthread_create 创建,且线程函数尚未自行退出
  • 依赖关系:task 须为 osal_kthread_create 返回的有效指针

入参

名称 参数类型 详细说明 约束取值范围
task osal_task * 待销毁的线程句柄 非 NULL,须为 osal_kthread_create 返回的有效指针
stop_flag unsigned int 是否停止当前线程的标志 0:不停止线程;非 0:停止线程

osal_kthread_schedule

void osal_kthread_schedule(unsigned int sleep_ns)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 设置当前线程为 TASK_UNINTERRUPTIBLE 状态并休眠指定纳秒数
  • 在此状态下线程不能被外部信号唤醒,只能由内核在休眠时间到达后唤醒
  • 支持系统:linux

前置条件

  • 上下文限制:当前处于任务上下文
  • 调用时序约束:内核调度已启动

入参

名称 参数类型 详细说明 约束取值范围
sleep_ns unsigned int 休眠时间(纳秒) 大于 0

osal_kthread_set_uninterrupt

void osal_kthread_set_uninterrupt(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 设置当前线程为 TASK_UNINTERRUPTIBLE 状态
  • 在此状态下线程不能被外部信号唤醒,只能由内核自身唤醒
  • 支持系统:linux

前置条件

  • 上下文限制:当前处于任务上下文
  • 调用时序约束:内核调度已启动

osal_kthread_set_running

void osal_kthread_set_running(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 设置当前线程状态为 TASK_RUNNING
  • 处于可运行状态不意味着已分配到 CPU,需等待调度器选择
  • 支持系统:linux

前置条件

  • 上下文限制:当前处于任务上下文
  • 调用时序约束:内核调度已启动

osal_cond_resched

void osal_cond_resched(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 主动让出 CPU 资源,防止内核态长时间运行导致软锁定或长调度延迟
  • 支持系统:linux

前置条件

  • 上下文限制:当前处于内核态任务上下文
  • 调用时序约束:内核调度已启动

osal_schedule

void osal_schedule(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 将当前任务放回就绪队列并尝试执行调度
  • 支持系统:linux liteos freertos

前置条件

  • 调用时序约束:内核调度已启动
  • 上下文限制:需在任务上下文中调用

osal_kneon_begin

void osal_kneon_begin(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 启用 NEON 算法加速
  • 仅在定义了 CONFIG_KERNEL_MODE_NEON 时生效,否则不做任何操作
  • 支持系统:linux

前置条件

  • 依赖关系:CONFIG_KERNEL_MODE_NEON 宏已定义
  • 上下文限制:需在内核态任务上下文中调用

osal_kneon_end

void osal_kneon_end(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 停用 NEON 算法加速
  • 仅在定义了 CONFIG_KERNEL_MODE_NEON 时生效,否则不做任何操作
  • 支持系统:linux

前置条件

  • 依赖关系:CONFIG_KERNEL_MODE_NEON 宏已定义,此前已调用 osal_kneon_begin
  • 上下文限制:需在内核态任务上下文中调用

osal_yield

void osal_yield(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 暂停当前线程,释放 CPU 时间片,使线程重新参与调度竞争
  • 当前线程可能重新获得 CPU,也可能被其他线程获得
  • 支持系统:linux freertos

前置条件

  • 调用时序约束:内核调度已启动
  • 上下文限制:需在任务上下文中调用

osal_get_current_pid

long osal_get_current_pid(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 获取当前线程的 PID (Process Identifier)
  • 支持系统:linux liteos

前置条件

  • 调用时序约束:内核调度已启动
  • 上下文限制:需在任务上下文中调用

返回值

  • 返回类型:long
返回值 文字含义 触发场景
大于 0 当前线程的 PID 获取成功
其他 获取失败 内核未就绪

osal_get_current_tid

long osal_get_current_tid(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 获取当前线程的 TID (Thread Identifier)
  • 支持系统:linux liteos seliteos

前置条件

  • 调用时序约束:内核调度已启动
  • 上下文限制:需在任务上下文中调用

返回值

  • 返回类型:long
返回值 文字含义 触发场景
大于 0 当前线程的 TID 获取成功
其他 获取失败 内核未就绪

osal_get_current_tgid

int osal_get_current_tgid(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 获取当前线程的 TGID (Thread Group Identifier)
  • 支持系统:linux

前置条件

  • 调用时序约束:内核调度已启动
  • 上下文限制:需在任务上下文中调用

返回值

  • 返回类型:int
返回值 文字含义 触发场景
大于 0 当前线程的 TGID 获取成功
其他 获取失败 内核未就绪

osal_get_current_taskname

char *osal_get_current_taskname(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 获取当前线程的名称
  • 支持系统:linux

前置条件

  • 调用时序约束:内核调度已启动
  • 上下文限制:需在任务上下文中调用

返回值

  • 返回类型:char *
返回值 文字含义 触发场景
非 NULL 当前线程名称字符串 获取成功
NULL 获取失败 内核未就绪

osal_msleep

unsigned long osal_msleep(unsigned int msecs)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 以毫秒为单位使当前线程休眠
  • 定时器到期时返回 0,否则返回剩余毫秒数
  • 支持系统:linux liteos freertos

前置条件

  • 调用时序约束:内核调度已启动
  • 上下文限制:当前处于任务上下文

入参

名称 参数类型 详细说明 约束取值范围
msecs unsigned int 休眠时间(毫秒) 大于 0

返回值

  • 返回类型:unsigned long
返回值 文字含义 触发场景
0 定时器已到期 休眠时间完整度过
非 0 剩余毫秒数 休眠被提前唤醒 休眠期间被信号中断

osal_msleep_uninterruptible

void osal_msleep_uninterruptible(unsigned int msecs)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 以毫秒为单位进行不可中断休眠,即使等待队列中断也能安全休眠
  • 支持系统:linux liteos

前置条件

  • 调用时序约束:内核调度已启动
  • 上下文限制:当前处于任务上下文

入参

名称 参数类型 详细说明 约束取值范围
msecs unsigned int 休眠时间(毫秒) 大于 0

osal_udelay

void osal_udelay(unsigned int usecs)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 以微秒为单位的忙等待延时
  • 不释放 CPU,通过忙循环实现精确短延时
  • 支持系统:linux liteos freertos

前置条件

  • 调用上下文约束:适用于需要精确短延时的场景,禁止在中断上下文中长时间延时

入参

名称 参数类型 详细说明 约束取值范围
usecs unsigned int 延时时间(微秒) 大于 0

osal_mdelay

void osal_mdelay(unsigned int msecs)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 以毫秒为单位的忙等待延时
  • 不释放 CPU,通过忙循环实现精确短延时
  • 支持系统:linux liteos freertos

前置条件

  • 调用上下文约束:适用于需要精确短延时的场景,禁止在中断上下文中长时间延时

入参

名称 参数类型 详细说明 约束取值范围
msecs unsigned int 延时时间(毫秒) 大于 0

osal_kthread_suspend

void osal_kthread_suspend(osal_task *task)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 挂起指定线程,将其从就绪队列中移除
  • 支持系统:liteos

前置条件

  • 调用时序约束:目标线程已通过 osal_kthread_create 成功创建
  • 依赖关系:task 须为 osal_kthread_create 返回的有效指针

入参

名称 参数类型 详细说明 约束取值范围
task osal_task * 待挂起的线程句柄 非 NULL

osal_kthread_resume

void osal_kthread_resume(osal_task *task)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 恢复已挂起的线程
  • 支持系统:liteos

前置条件

  • 调用时序约束:目标线程已通过 osal_kthread_suspend 挂起
  • 依赖关系:task 须为 osal_kthread_create 返回的有效指针

入参

名称 参数类型 详细说明 约束取值范围
task osal_task * 待恢复的线程句柄 非 NULL

osal_kthread_recycle

void osal_kthread_recycle(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 回收所有僵尸线程
  • 支持系统:liteos

前置条件

  • 调用时序约束:内核调度已启动
  • 上下文限制:需在任务上下文中调用

osal_kernel_init

unsigned int osal_kernel_init(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 初始化内核
  • 支持系统:liteos

前置条件

  • 调用时序约束:系统启动阶段,内核尚未启动
  • 调用上下文约束:需在主线程中调用

返回值

  • 返回类型:unsigned int
返回值 文字含义 触发场景
OSAL_SUCCESS(0) 初始化成功 内核初始化成功
OSAL_FAILURE(-1) 初始化失败 内核初始化失败

osal_kernel_start

unsigned int osal_kernel_start(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 启动内核调度
  • 支持系统:liteos

前置条件

  • 调用时序约束:内核已通过 osal_kernel_init 成功初始化
  • 调用上下文约束:需在主线程中调用

返回值

  • 返回类型:unsigned int
返回值 文字含义 触发场景
OSAL_SUCCESS(0) 启动成功 内核启动成功
OSAL_FAILURE(-1) 启动失败 内核启动失败

osal_kernel_get_state

osal_kernel_status osal_kernel_get_state(void)

头文件清单

#include "include/osal/schedule/osal_task.h"

功能说明

  • 获取内核当前运行状态
  • 支持系统:liteos

前置条件

  • 调用时序约束:内核已初始化
  • 上下文限制:需在任务上下文中调用

返回值

返回值 文字含义 触发场景
OSAL_KERNEL_STATUS_INACTIVE(0) 内核未激活 内核尚未启动
OSAL_KERNEL_STATUS_READY(1) 内核就绪 内核已初始化就绪
OSAL_KERNEL_STATUS_RUNING(2) 内核运行中 内核正在运行
OSAL_KERNEL_STATUS_SCHEDULE_LOCK(3) 内核调度被锁定 调度锁生效
OSAL_KERNEL_STATUS_ERROR(-1) 内核状态错误 状态异常

Type definitions

osal_kthread_handler

typedef int (*osal_kthread_handler)(void *data);

使用说明

  • 用于 osal_kthread_create 的线程入口函数指针类型
  • 调用时机:线程被内核调度器选中运行时,由内核调用该回调函数
  • 参数 data:由 osal_kthread_create 的 data 参数透传而来
  • 返回值处理:线程入口函数的返回值由调用者自行处理,内核不检查返回值

Enumerations

osal_thread_policy

typedef enum {
    OSAL_THREAD_POLICY_DEFAULT      = 0, // Rt/RR/FIFO.
    OSAL_THREAD_POLICY_RT           = 1, // Rt/RR/FIFO.
    OSAL_THREAD_POLICY_CFS          = 2, // CFS.
} osal_thread_policy;
枚举成员 取值 描述
OSAL_THREAD_POLICY_DEFAULT 0 默认调度策略(RT/RR/FIFO)
OSAL_THREAD_POLICY_RT 1 实时调度策略(RT/RR/FIFO)
OSAL_THREAD_POLICY_CFS 2 完全公平调度策略(CFS)

osal_kernel_status

typedef enum {
    OSAL_KERNEL_STATUS_INACTIVE         = 0, // Inactive.
    OSAL_KERNEL_STATUS_READY            = 1, // Ready.
    OSAL_KERNEL_STATUS_RUNING           = 2, // Running.
    OSAL_KERNEL_STATUS_SCHEDULE_LOCK    = 3, // Blocked.
    OSAL_KERNEL_STATUS_ERROR            = -1 // Error.
} osal_kernel_status;
枚举成员 取值 描述
OSAL_KERNEL_STATUS_INACTIVE 0 内核未激活
OSAL_KERNEL_STATUS_READY 1 内核就绪
OSAL_KERNEL_STATUS_RUNING 2 内核运行中
OSAL_KERNEL_STATUS_SCHEDULE_LOCK 3 内核调度被锁定
OSAL_KERNEL_STATUS_ERROR -1 内核状态错误

Structures

osal_task

typedef struct {
    void *task;
} osal_task;

成员说明

成员名称 数据类型 描述
task void * 底层任务句柄指针

osal_kthread_init

typedef struct {
    osal_kthread_handler    handler;    /**< Task entrance function */
    unsigned int            taskprio;   /**< Task priority */
    unsigned int            stacksize;  /**< Task stack size */
    char                    *taskname;  /**< Task name */
    void                    *data;      /**< data */
    osal_thread_policy      policy;
} osal_kthread_init;

成员说明

成员名称 数据类型 描述
handler osal_kthread_handler 线程入口函数
taskprio unsigned int 任务优先级
stacksize unsigned int 任务栈大小(字节)
taskname char * 任务名称
data void * 传递给线程入口函数的数据
policy osal_thread_policy 线程调度策略

Macros

OSAL_TASK_PRIORITY_ABOVE_HIGH

#define OSAL_TASK_PRIORITY_ABOVE_HIGH   2

OSAL_TASK_PRIORITY_HIGH

#define OSAL_TASK_PRIORITY_HIGH         3

OSAL_TASK_PRIORITY_BELOW_HIGH

#define OSAL_TASK_PRIORITY_BELOW_HIGH   4

OSAL_TASK_PRIORITY_ABOVE_MIDDLE

#define OSAL_TASK_PRIORITY_ABOVE_MIDDLE 5

OSAL_TASK_PRIORITY_MIDDLE

#define OSAL_TASK_PRIORITY_MIDDLE       6

OSAL_TASK_PRIORITY_BELOW_MIDDLE

#define OSAL_TASK_PRIORITY_BELOW_MIDDLE 7

OSAL_TASK_PRIORITY_ABOVE_LOW

#define OSAL_TASK_PRIORITY_ABOVE_LOW    8

OSAL_TASK_PRIORITY_LOW

#define OSAL_TASK_PRIORITY_LOW          10

OSAL_TASK_PRIORITY_BELOW_LOW

#define OSAL_TASK_PRIORITY_BELOW_LOW    11

OSAL_SUCCESS

#define OSAL_SUCCESS 0

OSAL_FAILURE

#define OSAL_FAILURE (-1)