TSK模块中提供一系列函数,这些函数通过TSK_Handle句柄访问和管理任务对象。DSP/BIOS的任务管理模块根据任务对象的优先级安排运行,并通过切换函数完成从一项任务切换到另一项任务。
每个任务都有四个执行状态:运行(run)、就绪(ready)、暂停(blocked)和终止。一旦任务被创建,它总是处在四个状态之一。
在DSP/BIOS还可定义一个或多个钩子函数,无论什么时候,这些任务状态发生状态改变时,这些钩子函数就会运行。
另外,用户还可以定义一个切换函数,当新任务变成运行态时会调用该切换函数 。切换函数允许应用程序在任务转换间访问当前和下一个任务对象句柄。
TSK模块API函数:
TSK_checkstatcks:检查任务堆栈
TSK_create:新建一个任务
TSK_delete:删除任务
TSK_deltatime:更新的任务时间统计参数
TSK_disable:禁止DSP/BIOS 内核进行任务管理调度
TSK_enable : 允许DSP/BIOS 内核进行任务管理调度
TSK_exit:终止当前任务的运行
TSK_getnv:返回任务的环境变量
TSK_geterr:返回任务错误代码
TSK_getname:返回任务的名字
TSK_getpri:返回任务的优先级
TSK_getsts:从STS模块中返回任务的统计结果
TSK_itick:系统告警时钟加1(仅用于中断)
TSK_self:返回当前任务的句柄
TSK_setnv:设置任务的环境变量
TSK_seterr:设置任务的错误代码
TSK_setpri:设置任务的优先级
TSK_settime:设置任务统计的起始时间
TSK_sleep:延迟当前任务的执行
TSK_stat:返回任务的状态参数
TSK_tick:系统告警时钟加1
TSK_time:返回任务的系统时钟
TSK_yield:切换到下一个任务
2.HOOK钩子函数管理模块
HOOK模块是对任务管理模块的延伸,使我们在重要的执行点上执行多重的钩子函数。每个钩子对象都有一个为每个使用该钩子函数的任务保留的专用数据区。钩子函数可在程序初始化时或在任务函数运行时调用。
HOOK模块管理着一组涉及钩子函数的对象。在DSP/BIOS初始化期间,每个HOOK对象都分配了一个数字标识符。每个HOOK模块都有一个初始化函数,该函数会在钩子函数调用前运行。在调用初始化函数时,DSP/BOIS内核把HOOK对象的标识符以参数形式传给初始化函数。
3.IDL模块——DSP/BIOS的后台管理,最低等级的线程,IDL模块执行DSP/BIOS 的API函数,DSP/BIOS内核真是利用这些函数来处理与主机通信和CPU负载计算。
IDL模块只提供了一个API函数:
IDL_run:将一次执行IDL模块定义的所有IDL函数,该函数在所有IDL函数执行一次后返回。