软中断的重入
来源:互联网 发布:高能金域名都开盘价 编辑:程序博客网 时间:2024/05/17 03:59
一般情况下,在硬件中断处理程序后都会试图调用do_softirq执行软中断,
但是如果发现现在已经有中断在运行,或者已经有软中断在运行,则
不再运行自己调用的中断。也就是说,软中断是不能进入硬件中断部分的,并且软?br>卸显谝桓鯿pu上是不可重入的,或者说是串行化的(serialize)
其目的是避免访问同样的变量导致竞争条件的出现。在开中断的中断处理程序中不
允许调用软中断可能是希望这个中断处理程序尽快结束。
这是由do_softirq中的
if (in_interrupt())
return;
保证的.
其中,
#define in_interrupt() ({ int __cpu = smp_processor_id(); /
(local_irq_count(__cpu) + local_bh_count(__cpu) != 0); })
前者local_irq_count(_cpu)
当进入硬件中断处理程序时,handle_IRQ_event中的irq_enter(cpu,
irq)会将它加1,表明又进入一个硬件中断
退出则调用irq_exit(cpu, irq)
后者local_bh_count(__cpu)
当进入软中断处理程序时,do_softirq中的local_bh_disable()会将它加1,表明处于软中断中
local_bh_disable();
一个例子:
当内核正在执行处理定时器的软中断时,这期间可能会发生多个时钟中断,这些时钟中断的处理程序都试图再次运行处理定时器的软中断,但是由于
已经有个软中断在运行了,于是就放弃返回。
- 软中断的重入
- 危险:中断不可重入的函数
- arm 中断重入
- 中断重入
- 【第6章】中断重入
- 重入和中断处理程序
- 重入和中断处理程序
- synchronized的重入
- 锁的重入
- Linux中断函数应避免使用不可重入函数
- 不可重入的函数
- 函数的重入和不可重入
- STM32F103ZE单片机在WWDG窗口看门狗的EWI中断中喂狗导致系统复位的原因及解决办法(中断函数重入问题)
- 重入
- 不可重入函数getpwnam的问题
- printf的重入问题及解决方法
- 多线程中函数的重入
- 【3】多线程的重入和并发
- 吞噬星空
- Linux操作系统应用软件大集合
- Win7
- 微软,Google面试题 (27) —— 二元树的深度
- 编程十诫
- 软中断的重入
- ShopEx 模版标签
- 为了无耻地增加点击率
- Flex基础-----之DataProvider
- 确定实习的日子
- 封装JS文件到DLL中并在页面中调用
- 未能加载文件或程序集“Oracle.Web, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一个依赖项。系统找不到指定的文件。
- Perl 黑客编程
- ASM-51 宏汇编使用手册