2009年(11)
分类: LINUX
2009-09-15 18:46:11
文件:
ARM Linux中断机制分析.pdf
大小:
207KB
下载:
下载
作者:张俊岭
EMAIL: ;
QQ: 251450387
日期:
说明:本文档基于AT91SAM9260EK板
1 数据结构
中断机制的核心数据结构是irq_desc,它完整地描述了一条中断线(或称为“中断通道” )。 irq_desc结构在include/linux/irq.h中定义:
typedef void fastcall (*irq_flow_handler_t)(unsigned int irq, struct irq_desc *desc); struct irq_desc { irq_flow_handler_t handle_irq; /* 高层次的中断事件处理函数 */ struct irq_chip *chip; /* 低层次的硬件操作 */ struct msi_desc *msi_desc; /* MSI 描述符?? */ void *handler_data; /* chip方法使用的数据*/ void *chip_data; /* chip私有数据 */ struct irqaction *action; /* 行为链表(action list) */ unsigned int status; /* 状态 */ unsigned int depth; /* 关中断次数 */ unsigned int wake_depth; /* 唤醒次数 */ unsigned int irq_count; /* 发生的中断次数 */ unsigned int irqs_unhandled; spinlock_t lock; /* 自旋锁 */ #ifdef CONFIG_SMP cpumask_t affinity; unsigned int cpu; #endif #if defined(CONFIG_GENERIC_PENDING_IRQ) || defined(CONFIG_IRQBALANCE) cpumask_t pending_mask; #endif #ifdef CONFIG_PROC_FS struct proc_dir_entry *dir; /* 在proc文件系统中的目录 */ #endif const char *name; /* 名称 */ } ____cacheline_aligned; |