os_task_resume

所属模块:任务管理 | 类型:任务恢复函数

API Metadata

函数ID:os_task_resume
模块:task
类型:task resume
嵌套深度:1

函数简介

os_task_resume 用于将指定任务从挂起状态恢复为就绪状态。

恢复后任务将重新参与调度,并可能在下一次调度周期中立即运行。

该接口支持普通任务与高速任务统一恢复,并会触发一次系统调度事件。

函数原型

char os_task_resume(unsigned char id);

参数说明

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

返回值

1:恢复成功
-1:参数非法或任务不存在

源码实现

/*------------------------------------------------------------------------ | FILE DESCRIPTION | ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | - File name : task_resume.c | - Author : 谭舒 | - Update date : 2026-09-19 | - Copyright(C) : 2026 HRTOS. All rights reserved. ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | INCLUDES | ------------------------------------------------------------------------*/ #include "hrtos_internal.h" /*------------------------------------------------------------------------ | API FUNCTIONS | ------------------------------------------------------------------------*/ /** * @brief 恢复指定任务运行。 * * @param[in] id 待恢复的任务编号。 * * @return 操作结果。 * @retval 1 任务恢复成功。 * @retval -1 任务编号无效或任务不存在。 * * @note 将指定任务由挂起状态恢复为就绪状态,使其重新参与系统调度。 * 对于高速任务,恢复对应的高速任务运行标志。 * 函数执行完成后请求系统重新进行任务调度。 */ char os_task_resume(unsigned char id)//将任务编号为id的任务,由挂起状态变为就绪状态 { u8 i; i=1; if(id>OS_PROCESS_MAX+1) { return -1; } if(id>=OS_PROCESS_MAX) { id%=OS_PROCESS_MAX; if(OS_KUAI_SP[id]==0) { return -1; } if(id==1) { OS_KUAI_PROCESS_B=1; } else { OS_KUAI_PROCESS_A=1; } } else { if(OS_PROCESS_OK[id]==0) { return -1; } OS_PROCESS_OK[id]|=0x01; } OS_SCHED_REASON=1;//调度触发位 TF0=1;//T0中断 return i; } /*------------------------------------------------------------------------ | END OF FILE: task_resume.c | ------------------------------------------------------------------------*/

使用示例

void demo_resume() { os_task_resume(2); }

注意事项

恢复操作会立即触发调度事件,任务可能在当前或下一调度周期运行。 高速任务与普通任务恢复路径不同,需注意资源一致性。

相关推荐