os_task_create
所属模块:任务管理 | 类型:任务/进程创建函数(核心接口,已脱敏)
函数简介
:contentReference[oaicite:0]{index=0} 用于创建任务或进程,并为其分配运行栈空间、调度信息以及初始执行入口。
该函数是系统任务管理的核心接口之一,涉及内存分配、优先级校验、栈空间管理以及上下文初始化。
函数原型
char os_task_create(unsigned int addr,
unsigned char id,
unsigned char pr,
unsigned char sd);
参数说明
| 参数 |
说明 |
| addr |
任务入口函数地址 |
| id |
任务编号 |
| pr |
任务优先级(决定调度类别) |
| sd |
任务栈深度需求 |
返回值
1 表示创建成功,-1 表示失败(参数非法或资源不足)。
源码实现(已脱敏)
char os_task_create(unsigned int addr,
unsigned char id,
unsigned char pr,
unsigned char sd)
{
/* =========================
* 1. 系统状态检查
* =========================
* - 检查是否允许创建任务
* - 检查优先级范围是否合法
*/
/* =========================
* 2. 参数合法性校验
* =========================
* - ID 是否越界
* - 地址是否为空
* - 是否重复注册
*/
/* =========================
* 3. 栈需求计算
* =========================
* - 根据任务类型调整实际栈深度
* - 标准任务 / 高速任务分别处理
*/
/* =========================
* 4. 内存分配(Slab/Bitmap)
* =========================
* - 在用户 RAM 区域中查找连续空闲块
* - 使用位图标记占用情况
* - 找到足够连续空间后锁定分配
*/
/* =========================
* 5. 栈空间安全检查
* =========================
* - 更新系统最大栈使用水位
* - 检查是否越界
* - 严重越界触发系统复位机制
*/
/* =========================
* 6. 任务控制块初始化
* =========================
* 标准任务:
* - 初始化 SP
* - 保存入口地址到栈
* - 设置优先级与状态
* - 完成上下文初始化
*/
/* =========================
* 7. 高速任务初始化
* =========================
* - 分配快速任务索引
* - 初始化高速任务上下文
* - 设置启动标志
*/
/* =========================
* 8. 中断任务绑定
* =========================
* - pr == ISR 级任务
* - pr == 嵌套中断任务
* - 仅保存入口地址,不分配完整栈
*/
return 1;
}
注意事项
该函数涉及系统栈分配与调度结构初始化,属于内核核心接口。
实现已脱敏,具体内存管理逻辑不可依赖外部行为推测。