os_task_ready

所属模块:任务管理 | 类型:任务状态控制函数

函数简介

os_task_ready 用于将指定任务设置为就绪状态,使其重新参与系统调度。

该函数通常用于恢复被挂起(os_task_hang)的任务, 或在任务条件满足时,将其重新加入调度队列。

函数原型

char os_task_ready(unsigned char id);

参数说明

参数 说明
id 任务ID(普通任务或快速任务)

返回值

0 表示成功,-1 表示失败(任务不存在或参数错误)。

核心机制解析

1. 参数合法性检查

if(id > OS_JINCHENG_MAX+1) return -1;

2. 快速任务处理

if(id >= OS_JINCHENG_MAX) { id %= OS_JINCHENG_MAX; if(OS_KUAI_SP[id] == 0) return -1; if(id == 1) OS_KUAI_PEOCESS_B = 1; else OS_KUAI_PEOCESS_A = 1; }

快速任务通过独立标志位控制,就绪状态通过置位实现。

3. 普通任务处理

if(OS_PEOCESS_OK[id] == 0) return -1; OS_PEOCESS_OK[id] |= 0x01;

设置最低位为1,表示任务进入“就绪状态”, 调度器将在扫描时选择该任务参与执行。

使用示例

void main() { // 恢复任务1 os_task_ready(1); while(1) { } }

典型使用场景

注意事项

任务必须已创建,否则设置就绪状态会失败。
就绪任务不一定立即执行,具体由调度器决定。

相关推荐