Linux内核中断嵌套

假设读者对Linux内核的中断一定的理解,下面来介绍Linux内核的中断嵌套和抢占规则。
1 中断运行过程中的开关情况
在进入硬中断的时候,CPU会自动将硬中断功能关闭;进入软件中断的时候不会关闭中断功能。为了支持中断的嵌套执行,Linux内核在进入中断服务程序之前会将硬中断开启,运行完中断服务程序之后再将硬中断关闭,在这期间硬件中断是可以被抢占的,而软中断执行过程中硬件中断始终是开启的。如果没有特殊说明,下面的中断都指硬中断。关闭中断是硬件自动完成的,为了实现中断的嵌套,需要人为的打开中断。中断发生后会进行多次函数跳转,最终会进入到真正的中断处理函数handle_IRQ_event(),在该函数里执行各设备的中断服务程序。函数定义如下:

irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action)
{
    irqreturn_t ret, retval = IRQ_NONE;
    unsigned int status = 0;

    handle_dynamic_tick(action);

    if (!(action->flags & IRQF_DISABLED))
        local_irq_enable_in_hardirq();//开中断

   
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值