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

    文章

    593

    浏览量

    27392
  • 串口中断
    +关注

    关注

    0

    文章

    64

    浏览量

    13883
  • 中断优先级
    +关注

    关注

    0

    文章

    22

    浏览量

    9368
收藏 人收藏

    评论

    相关推荐

    Linux 2.6 中断处理原理简介

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

    WindowsCE异常中断服务程序

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

    ARM异常中断问题详情分析总结

    ARM异常中断的类型问题分析总结 一、ARM异常中断的类型: 异常中断名称 含义 复位(Reset) 当
    发表于 04-05 10:51 1305次阅读

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

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

    了解Linux中断处理原理

    最简单的中断机制就是像芯片手册上讲的那样,在中断向量表填入跳转到对应处理函数的指令,然后在处理
    发表于 05-14 13:49 2331次阅读
    了解<b class='flag-5'>Linux</b><b class='flag-5'>中断</b><b class='flag-5'>处理</b>原理

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

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

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

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

    处理异常中断解决

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

    STM32中断系统(NVIC和EXTI)

    EXTIEXTI (External interrupt) 就是指外部中断,通过 GPIO 检测输入脉冲,引起中断事件,打断原来的代码执行流程,进入到中断服务
    发表于 01-14 15:51 5次下载
    STM32<b class='flag-5'>中断</b>系统(NVIC和EXTI)

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

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

    中断异常?傻傻分不清楚

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

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

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

    Linux中断处理浅析

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

    什么是LInux 操作系统中断

    进程来持有CPU进行需要的操作! 有了中断之后,提升了操作系统的性能!可以异步并行处理很多任务! 软中断(80中断) 由CPU产生的;CPU检查到
    的头像 发表于 11-10 11:29 622次阅读
    什么是<b class='flag-5'>LInux</b> 操作系统<b class='flag-5'>中断</b>

    stm32中断怎么处理

    中断是指在程序执行过程,由硬件或软件的触发而打断正常的程序执行流程,暂时转去执行特定的处理
    的头像 发表于 01-02 17:35 2571次阅读