0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux Kernel的中断处理函数中是否会被其它程序(中断/异常)打断?

冬至子 来源:ARM精选 作者:baron 2023-06-07 17:27 次阅读

先说结论

  • 1、当一个irq/fiq正在执行时 ,是否可能会其它的irq/fiq打断呢?

    (1)如果开启了中断优先级,则在irq/fiq进入的时候,也会再次enalbe irq/fiq,即也就是支持了中断嵌套。所以此时一个irq或fiq正在执行的时候,它是有可能被另外一个高优先级的irq/fiq num的中断抢占的。

    (2) 但是很遗憾 ,在我们的Linux Kernel系统中,至今都没有默认开启中断优先级,在一进入irq/fiq的时候,也没有再次enable irq/fiq. 所以这种情况下,一个正在执行的irq/fiq是不可能被另外的irq/fiq打断的。

  • 2、当一个irq/fiq正在执行时 ,是否可能会其它异常打断呢?

    当然可以,您仔细阅读代码就会发现,在一进入irq/fiq handler的时候, PSTATE.DPSTATE.A都是被enabled,所以irq/fiq正在执行的时候,是可能被 WatchpointBreakpointSoftwareStepexceptionsSerror打断的

  • 3、当一个irq/fiq正在执行时 ,还会被别的程序打断吗?

    当然可以,同步异常嘛!

代码/文档导读

(1) 如下代码展示了,在一进入irq/fiq的时候,就调用 enable_daPSTATE.DPSTATE.A unmasked了。所以irq/fiq中断,是可以被 WatchpointBreakpointSoftwareStepexceptionsSerror打断的

image.png

(2) irq和fiq属于异步异常,具有同样的优先级。而同步异常的优先级又高于异步异常的优先级,同意异常的优先级 如下所示 (也就意味着以下同步异常都可以打断正在执行的irq/fiq):

image.png

image.png

image.png

image.png

(3)如果开启了中断优先级,则在irq/fiq进入的时候,也会再次enalbe irq/fiq

image.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    567

    浏览量

    26923
  • 串口中断
    +关注

    关注

    0

    文章

    63

    浏览量

    13614
  • 中断优先级
    +关注

    关注

    0

    文章

    22

    浏览量

    9268
收藏 人收藏

    评论

    相关推荐

    ARM处理SWI异常中断处理程序的实现

    ,SWI异常中断处理函数分为两级,第一级的SWI处理函数用于从SWI指令中提取24位的立即数即中断
    发表于 01-10 15:09

    教你一种ARM处理异常中断的方法

    FIQ中断;保存返回地址:将下一条指令的地址(被打断程序)保存在LR(异常模式下LR_excep)。跳入
    发表于 08-18 15:26

    Linux 2.6 中断处理原理简介

    Linux 2.6 中断处理原理简介 中断描述符表(Interrupt Descriptor Table,IDT)是一个系统表,它与每一个中断
    发表于 02-05 10:52 770次阅读

    S3C2410中断异常处理流程

    异常主要是从处理器被动接受的角度出发的一种描述,指意外操作引起的异常。而中断则带有向处理器主动申请的意味。但这两种情况具有一定的共性,都是请
    发表于 12-06 16:45 49次下载

    WindowsCE异常中断服务程序

    WindowsCE异常中断服务程序,中断异常都是异步发生的事件,当该事件发生,系统将停止目前正在执行的代码转而执行事件响应的服务
    发表于 01-04 15:37 1515次阅读

    linux驱动之中断处理过程C程序部分

    linux内核将所有的中断统一编号,使用一个irq_desc[NR_IRQS]的结构体数组来描述这些中断:每个数组项对应着一个中断源(可能是一个中断
    发表于 05-07 11:13 898次阅读

    单片机的中断程序如何运行

    单片机的中断就是类似的一个过程,发生中断时,就会打断正在执行的主程序,先处理中断任务,返回主
    的头像 发表于 01-27 17:11 1w次阅读
    单片机的<b class='flag-5'>中断</b><b class='flag-5'>程序</b>如何运行

    ARM异常中断的原因及处理措施

    当ARM异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理
    的头像 发表于 06-17 10:05 7210次阅读

    当ARM异常中断发生时的处理措施

    外部中断请求(IRQ) 当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。系统中个外设
    的头像 发表于 08-27 14:21 2379次阅读

    处理器中异常中断解决

    异常是能够引起程序流偏离正常流程的事件,当异常发生时,正在执行的程序会被挂起,处理器转而执行一
    的头像 发表于 10-12 17:14 4276次阅读

    Linux是如何利用陷阱门处理中断异常

    中断异常处理程序执行的代码不是一个进程。而是一个内核控制路径,比一个进程的上下文要少,建立或终止需要的时间很少。
    发表于 08-17 11:31 418次阅读

    中断异常?傻傻分不清楚

    在一段时间里,我都认为中断异常没有很明显的区别,因为表现出来都是当前运行中的程序打断,然后执行中断向量表中的
    的头像 发表于 08-10 11:18 1383次阅读
    <b class='flag-5'>中断</b>和<b class='flag-5'>异常</b>?傻傻分不清楚

    arm处理器有哪些中断源?arm处理器对异常中断的响应过程

    arm处理器有哪些中断源?arm处理器对异常中断的响应过程  ARM处理器是一种广泛使用的嵌入式处理
    的头像 发表于 10-19 16:35 822次阅读

    ARM中的异常中断是如何实现进入中断程序的?如何进入呢?

    ARM中的异常中断是如何实现进入中断程序的?如何进入呢? 在计算机系统中,异常中断是两个常见的概念。 在ARM中,
    的头像 发表于 10-19 16:36 566次阅读

    Linux中断处理浅析

    去继续运行被暂时中断程序Linux中通常分为外部中断(又叫硬件中断)和内部中断(又叫
    的头像 发表于 11-09 16:46 289次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>中断</b><b class='flag-5'>处理</b>浅析