os_in_isr

所属模块:运行环境检测 | 类型:上下文判断函数

API Metadata

函数ID:os_in_isr
模块:kernel
类型:context check
嵌套深度:1

函数简介

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,必须确保中断入口正确设置该标志。

相关推荐