中断学习之基本数据结构

CONFIG_IRQTACKS决定中断栈是独立的还是依附于内核栈。

 

irq_desc {

    irq_flow_handler_t handle_irq;;中断处理函数,会调用ISR

    irq_chip;//中断控制器对象,抽象不同种类的PIC,例如8259控制器

    irqaction *action;//共享中断链表,中断例程ISR

}

关系可以通过中断处理程序看出来

desc->handle_irq = handle_level_irq;//Mpc8xx_pic.c (c:\linux\linux-2.6.23\arch\powerpc\sysdev):
	=>desc->chip->ack(irq);/* Start handling the irq */
	=>desc->status |= IRQ_INPROGRESS;/* Mark the IRQ currently in progress.*/
	=>do//可能好几个中断都上报
		desc->status &= ~IRQ_PENDING;
		action_ret = handle_IRQ_event(irq, action);
			=>do//依次查看是否共享中断
				ret = action->handler(irq, action->dev_id);
				retval |= ret;
				action = action->next;
			=>while (action);
	=>while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING);

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值