os_task_is_valid
所属模块:任务管理 | 类型:任务状态校验函数
函数简介
os_task_is_valid 用于判断指定任务是否已经注册或有效存在。
该接口用于任务调度前的合法性检查,防止对未注册任务进行操作。
支持普通任务与高速任务的统一检测,是系统资源安全访问的重要保护机制。
函数原型
signed char os_task_is_valid(u8 id);
参数说明
| 参数 |
说明 |
| id |
任务ID(0~OS_PROCESS_MAX+1) |
返回值
-1:参数异常
0:任务未注册
1:任务已注册
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : task_is_valid.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 0 任务未注册。
* @retval -1 任务编号无效。
*
* @note 该接口同时支持标准任务和高速任务的注册状态查询。
*/
signed char os_task_is_valid(u8 id)//任务是否存在/注册检查-1参数异常,0未注册,1已注册
{
if(id>OS_PROCESS_MAX+1)
{
return -1;
}
if(id==OS_PROCESS_MAX+1)
{
if(OS_SP_KUAI_BEI[1])
{
return 1;
}
else
{
return 0;
}
}
if(id==OS_PROCESS_MAX)
{
if(OS_SP_KUAI_BEI[0])
{
return 1;
}
else
{
return 0;
}
}
if(OS_PROCESS_OK[id]!=0)/*已注册*/
{
return 1;
}
return 0;
}
/*------------------------------------------------------------------------
| END OF FILE: task_is_valid.c |
------------------------------------------------------------------------*/
使用示例
void debug_valid()
{
if(os_task_is_valid(3))
{
// 任务存在
}
}
注意事项
该函数仅用于任务存在性判断,不会修改任务状态。
高速任务与普通任务的判定逻辑不同,需注意区分处理方式。