os_idle_task

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

API Metadata

函数ID:os_idle_task
模块:kernel
类型:idle task core
嵌套深度:2-3

函数简介

:contentReference[oaicite:0]{index=0} 是系统空闲任务的核心入口函数, 在系统无可运行任务时执行,用于系统初始化收尾、资源清理以及空闲回调执行。

该函数在系统启动后由调度器进入,并长期驻留运行,是整个调度循环的“最低优先级执行单元”。

函数原型

void os_idle_task(void);

返回值

无返回值(系统级死循环任务)。

源码实现

#define OS_TASK_TOTAL (OS_PROCESS_MAX + OS_FAST_TASK_MAX) /* idle hook */ void (*g_idle_hook)(void); void os_idle_task(void) { u8 i; EA = 0; g_idle_hook = 0; g_slab_overflow_hook = 0; OS_SCHED_REASON = 0; OS_CFG_LOCK = 0; for(i = 1; i < OS_PROCESS_MAX; i++) { OS_TASK[i].wait_type = WAIT_NONE; OS_TASK[i].state = DEAD; OS_TASK[i].wait_tick = 0; } OS_WAIT_DI2[0] = 0; OS_WAIT_DI2[1] = 0; for(i = 0; i < OS_RESOURCE_MAX; i++) { OS_RES[i].value = 0; OS_RES[i].owner = OS_INVALID_ID; OS_RES[i].wait_cnt = 0; OS_RES[i].wait_mask = 0; OS_RES[i].pending_signal = 0; } hrtos_main(); OS_CFG_LOCK = 1; EA = 1; while(1) { EA = 0; for(i = 1; i < OS_TASK_TOTAL; i++) { if(OS_TASK_EVENT[i] & OS_EVENT_DELETE_REQ) { OS_TASK_EVENT[i] &= ~OS_EVENT_DELETE_REQ; os_task_cleanup(i); } } EA = 1; if (g_idle_hook) { g_idle_hook(); } } }

注意事项

Idle Task 为系统最低优先级执行单元,不应在其中执行阻塞操作或耗时逻辑。 同时资源清理操作发生在关中断区域,应确保数据一致性。

相关推荐