os_in_isr
所属模块:运行环境检测 | 类型:上下文判断函数
函数简介
os_in_isr 用于判断当前代码是否运行在中断上下文中。
可用于区分任务与中断执行环境。
该函数在调度器设计和安全操作判断中具有重要作用。
函数原型
char os_in_isr(void);
返回值
1 - 当前运行在中断中
0 - 当前运行在任务中
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : in_isr.c
| - Author : 谭舒
| - Update date : 2026-09-19
| - Copyright(C) : 2026 HRTOS. All rights reserved.
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| INCLUDES |
------------------------------------------------------------------------*/
#include"hrtos_internal.h"
/*------------------------------------------------------------------------
| API FUNCTIONS |
------------------------------------------------------------------------*/
/**
* @brief 判断当前代码是否运行在中断环境。
*
* @param[in] None
*
* @return 当前运行环境状态。
* @retval 1 当前运行在中断环境。
* @retval 0 当前运行在任务环境。
*/
char os_in_isr(void)//判断当前代码是在任务里运行,还是在中断里运行。1 = 当前在中断中;0 = 当前在任务中
{
return OS_ISR_FLAG;
}
/*------------------------------------------------------------------------
| END OF FILE: in_isr.c |
------------------------------------------------------------------------*/
使用示例
void log_event()
{
if(os_in_isr())
{
// 中断环境:避免阻塞操作
return;
}
// 任务环境:允许复杂处理
process_log();
}
注意事项
该函数依赖 OS_ISR_FLAG,必须确保中断入口正确设置该标志。