Ara*_*uhi 6 c interrupt reentrancy interrupt-handling
我在中断处理程序中使用静态变量,使中断处理程序不可重入.
谢谢
PS.我正在使用Linux.我正在使用的编程语言是C,如果它有所作为.
简短的回答是,中断服务程序本身并不需要是可重入的.只有在嵌套中断的情况下才需要重入.如果您使用的操作系统不支持嵌套中断,那么您根本不必担心重入.如果是这样,您可以控制重置正在服务的中断,以便永远不会得到嵌套中断.
编辑:现在我知道你正在使用Linux,你可能会发现这个链接很有用:中断处理程序是否可以被同一个中断处理程序抢占?
基本上你的问题的答案是Linux在断言时屏蔽中断,这样除非在注册ISR时传递特定标志,否则它不会抢占自身.
这是一个相关的引用:
Linux中的中断处理程序不需要是可重入的.当给定的中断处理程序正在执行时,相应的中断线在所有处理器上被屏蔽掉,从而防止接收到同一线路上的另一个中断.通常所有其他中断都被使能,因此其他中断被服务,但是当前线路始终被禁用.因此,永远不会同时调用相同的中断处理程序来为嵌套中断提供服务.这大大简化了编写中断处理程序的过程.