- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 心理卫生与心理咨询00284.pdf VIP
- 新高一,第一次月考反思总结-高一上学期主题班会课件.pptx VIP
- 22-23年九上《道德与法治》期中试卷.pdf VIP
- 国开(SC)-安全原理-第4次形考作业-学习资料.docx VIP
- 道路交通信号灯设置与安装规范 GB14886-2016.docx VIP
- 最新苏教版六年级数学下册第一单元测试题.doc VIP
- 六年级语文质量分析语文工作总结PPT.pptx
- 2025至2030中国增塑剂(塑化剂)行业发展趋势分析与未来投资战略咨询研究报告.docx
- 智能学习环境构建在初中物理教学中的应用与效果评价教学研究课题报告.docx
- 2025民营经济促进法与案例讲座课件PPT.pptx
文档评论(0)