[记录]内核中断系统分析

本文介绍了Linux内核中断处理的上下文结构,包括top half和bottom half的概念,重点讲解了bottom half的三种实现方式:softirq、tasklet和workqueue。此外,详细阐述了中断函数的申请、中断相关处理,如电平和边沿等级的中断响应,以及中断执行函数调用关系和中断驱动初始化的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大多数操作系统把中断分成两部分:top half、bottom half。之所以这样是因为执行中断服务函数时最好的情况都会屏蔽同级的中断,如果中断服务函数执行时间很长的话,就会导致系统响应不够及时,所以需要中断服务函数里面的处理很快。

Bottom half

内核里面下半部有三种实现方式,分别是sofrirq、tasklet、workqueue。其中softirq和tasklet还是在中断上下文中执行。在irq_exit中会判断是否有软中断的标志,然后执行。

/**
 * generic_handle_arch_irq - root irq handler for architectures which do no
 *                           entry accounting themselves
 * @regs:   Register file coming from the low-level handling code
 */
asmlinkage void noinstr generic_handle_arch_irq(struct pt_regs *regs)
{
   
    struct pt_regs *old_regs;
    // 进入中断上下文,禁用抢占和调度
    irq_enter();
    old_regs = set_irq_regs(regs);
    handle_arch_irq(regs);
    set_irq_regs(old_regs);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值