os_task_set_next

所属模块:调度器 | 类型:强制调度控制函数

API Metadata

函数ID:os_task_set_next
模块:scheduler
类型:force context switch
嵌套深度:1

函数简介

os_task_set_next 用于强制指定下一次运行的任务,并立即触发系统调度。

该接口会打断当前调度流程,直接修改当前任务与下一个任务的执行关系。

由于会绕过正常调度策略,该接口仅建议用于调试或特殊控制场景。

函数原型

char os_task_set_next(unsigned char id);

参数说明

参数 说明
id 目标任务ID(0~OS_PROCESS_MAX+1)

返回值

1:切换成功
-1:参数非法或任务不可运行

源码实现

char os_task_set_next(unsigned char id) { if(id > OS_PROCESS_MAX + 1) { return -1; } if(id < OS_PROCESS_MAX) { if((OS_PROCESS_OK[id] && 0x01) == 0) { return -1; } } if(id == OS_PROCESS_MAX) { if(!OS_KUAI_PROCESS_A) { return -1; } } if(id == OS_PROCESS_MAX + 1) { if(!OS_KUAI_PROCESS_B) { return -1; } } if(id == OS_CURRENT_TASK) { OS_TIME_XY = 0; return 1; } if(OS_JINCHENG_CUNCHU == 0) { OS_JINCHENG_CUNCHU = 1; OS_PREV_TASK = OS_CURRENT_TASK; OS_CURRENT_TASK = id; OS_SCHED_REASON = 1; TF0 = 1; return 1; } return -1; }

使用示例

void debug_switch() { os_task_set_next(2); }

注意事项

该接口会绕过正常调度逻辑,仅允许执行一次切换控制。 多次调用可能导致调度状态不一致。

相关推荐