ARM Linux对中断的处理.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM Linux对中断的处理--中断管理系统的初始化 8 ARM Linux对中断的处理--中断注册方法 18 ARM Linux对中断的处理--中断处理 21 ARM Linux对中断的处理--内核模式下的中断处理 23 ARM Linux对中断的处理--用户模式下的中断处理 40 ARM Linux对中断的处理--相关数据结构 不管引起中断的电路的种类如何,所有I/O中断处理程序都执行四个相同的基本操作: 在内核态堆栈中保存IRQ的值和寄存器的内容。 为正在给IRQ线服务的PIC发送一个应答,这将允许PIC进一步发出中断。 执行共享这个IRQ的所有设备的中断服务例程。 与中断处理相关的数据结构 Linux系统里每个中断通过一个称为中断描述符的结构irq_desc来管理,各中断的信息都在这个结构中得以体现。irq_desc结构体在include/irq.h文件中定义: struct irq_desc { ?? unsigned int??? irq; ?? struct timer_rand_state *timer_rand_state; ?? unsigned int??????????? *kstat_irqs; #ifdef CONFIG_INTR_REMAP ?? struct irq_2_iommu????? *irq_2_iommu; #endif ?? irq_flow_handler_t handle_irq; ?? struct irq_chip牋?*chip;le 牋 struct msi_desc牋?*msi_desc;irq 牋 void牋牋牋?*handler_data;desc; 牋 void牋牋牋?*chip_data;ta;de 牋 struct irqaction牋 *action; /* IRQ action list */中得 牋 unsigned int牋?status;牋牋 /* IRQ status */ list ? 牋 unsigned int牋?depth;牋 /* nested irq disables *//中得以 牋 unsigned int牋?wake_depth; /* nested wake enables */体现。 牋 unsigned int牋?irq_count;?/* For detecting broken IRQs */q_de 牋 unsigned long牋牋?last_unhandled; /* Aging timer for unhandled count */lude 牋 unsigned int牋?irqs_unhandled;d; 牋 spinlock_t牋牋?lock;_unh #ifdef CONFIG_SMP 牋 cpumask_var_t牋牋?affinity;led; 牋 unsigned int牋?node;ini #ifdef CONFIG_GENERIC_PENDING_IRQ 牋 cpumask_var_t牋牋?pending_mask;RQ / #endif #endif 牋 atomic_t牋?threads_active;ask 牋 wait_queue_head_t牋牋牋 wait_for_threads;ng t #ifdef CONFIG_PROC_FS 牋 struct proc_dir_entry *dir;o #endif 牋 const char牋牋?*name;ry * } ____cacheline_internodealigned_in_smp; irq_desc结构体(中断描述符)中各个字段说明: irq:?? 中断描述符的中断号 timer_rand_state: pointer to timer rand state struct kstat_irqs:?? irq stats per cpu irq_2_iommu:? iommu with this irq handle_irq:?? 高层的irq时间处理程序(如果为NULL,则默认调用__do_IRQ()) chip:? 底层的中断硬件访问,指向PIC对象(irq_chip结构),它服务于IRQ线,Linux中断管理系统使用该成员来进行中断控制器的访问。 msi_desc:? MSI descriptor handler_data: irq_chip 方法使用的per-IRQ数据 chip_data:??? chip 方法使用的特定平台的per-chip 私有数据,以允许共享chip的实现 action:??? 标识当出现IRQ时要调用的中断服务例程。该字段指向IRQ的irqaction链表的第一个元素。我们用reques

文档评论(0)

youyang99 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档