我在中断处理程序中使用静态变量,使中断处理程序不可重入。
谢谢
PS。 我正在使用Linux。 我正在使用的编程语言是C,如果它有所作为。
简短的回答是,中断服务程序本身并不需要是可重入的。 只有在嵌套中断的情况下才需要重入。 如果您使用的操作系统不支持嵌套中断 ,那么您根本不必担心重入。 如果是这样,您可以控制重置正在服务的中断,以便永远不会得到嵌套中断。
编辑:现在我知道你正在使用Linux,你可能会发现这个链接很有用: 中断处理程序是否可以被同一个中断处理程序抢占?
基本上你的问题的答案是Linux在断言时屏蔽中断,这样除非在注册ISR时传递特定标志,否则它不会抢占自身。
这是一个相关的引用:
Linux中的中断处理程序不需要是可重入的。 当给定的中断处理程序正在执行时,相应的中断线在所有处理器上被屏蔽掉,从而防止接收到同一线路上的另一个中断。 通常所有其他中断都被使能,因此其他中断被服务,但是当前线路始终被禁用。 因此,永远不会同时调用相同的中断处理程序来为嵌套中断提供服务。 这大大简化了编写中断处理程序的过程。
不能代表所有中断处理程序,但在十几个平台上,我已经编写了硬件中断服务程序(ISR),这些机制通常会阻止重入行为。
另一方面,用于软件中断的ISR是我编写的2,用于检测和处理重入活动。
如其他地方所述,这可能取决于操作系统/平台。
需要了解更多c/c++开发分享中断处理程序是否必须是可重入的?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享中断处理程序是否必须是可重入的?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/980188.html