wake_task

所属模块:内核调度 | 类型:任务唤醒函数

API Metadata

函数ID:wake_task
模块:kernel scheduler
类型:task wake / state transition
嵌套深度:1

函数简介

wake_task 用于唤醒处于等待状态的任务, 将任务从 WAIT 状态恢复为 READY 状态,并重新参与系统调度。

该函数同时负责清理任务的等待上下文信息, 并解除资源对象中的等待标记。

函数原型

void wake_task(u8 tid, u8 flag);

参数说明

参数 说明
tid 任务ID
flag 唤醒原因标志(WAIT_SIGNAL / WAIT_TIMEOUT等)

返回值

无返回值(void函数)

源码实现

#include "hrtos_internal.h" /* ========================================================= * 任务唤醒核心 */ void wake_task(u8 tid, u8 flag) { u8 obj; obj = OS_TASK[tid].wait_obj; /* ------------------------- * 清理资源等待位图 * ------------------------- */ if(obj != OS_INVALID_ID) { OS_RES[obj].wait_mask &= ~((u16)1 << tid); if(OS_RES[obj].wait_cnt) { OS_RES[obj].wait_cnt--; } } /* ------------------------- * 设置唤醒结果 * ------------------------- */ OS_TASK[tid].wait_flag = flag; /* ------------------------- * 清理等待上下文 * ------------------------- */ OS_TASK[tid].wait_type = WAIT_NONE; OS_TASK[tid].wait_obj = OS_INVALID_ID; OS_TASK[tid].wait_tick = 0; /* ------------------------- * 恢复就绪状态 * ------------------------- */ OS_TASK[tid].state = READY; /* ------------------------- * 加入调度系统 * ------------------------- */ OS_PROCESS_OK[tid] |= 1; OS_SCHED_REASON = 1; TF0 = 1; }

使用示例

wake_task(1, WAIT_SIGNAL);

注意事项

wake_task 是系统级核心函数,仅用于内核内部调用。 直接错误使用可能破坏任务状态一致性。

相关推荐