全部博文(44)
分类: LINUX
2008-04-27 21:33:09
写在前面的话
前段时间在ChinaUnix和很多朋友一起讨论了Linux中断的问题,发现不少地方都搞不清楚。于是静下心来,收集了一些资料,配合源代码进行了学习。经过一个月的时间,已经大体了解了关于中断的细节和实现,但仍然有很多疑问,我把它们总结了一下,写下这篇文章,和大家一起讨论。个人水平有限,难免有错,希望大家在发现错误后能反馈到我的邮箱,我好及时更正。
这篇文章不是学习Linux中断的入门文章,如果对中断没有概念,笔者建议先阅读《Understanding Linux Kernel(3thd Edition)》。此文是对ULK3的补充,讲了一些它没讲的内容。文中的硬件知识,适用与Intel的x86平台、x86_64平台,但不适用与IA64的SAPIC系统。
此外,本文对于Linux源码的讲解采用的是ULK3的模式,笔者比较反感源码注释。对于开源项目来说,“告诉我你要做什么,但不要告诉我你是怎么做的”、“代码就是最好的注释”,这是我的信条。
(版权声明:此文欢迎转载。但未经允许不得用于商业目的)
内容提要
第一章:介绍了PIC和APIC系统的基本架构,提供了了解现代中断系统构成的基本知识。
第二章:论述了Linux如何探测中断硬件,以及如何初始化它们。
第三章:补充了一些中断系统的硬件知识,没有它们你也应该能读懂前两章的内容。
文中用大量“题外话”介绍了中断相关的知识和原理,它们大部分是笔者感兴趣的,例如“Remote IRR的作用”、“Edge中断的共享与丢失”、“伪中断产生的原因”等。以“笔者”开头的文字,是作者自己对一些问题的看法,其中有很多不能解决的疑问,如果你知道答案,希望能通过
此文虽取名为“硬件篇”,但不代表就有一个“软件篇”存在。虽然目前内核使用了Generic Interrupt Layer,但这只是对原__do_IRQ()路径的封装,ULK3的内容完全适用于当前内核中断系统,软件相关内容可以参考此书。
目录
1.2.3 IOAPIC发出的中断消息是如何找到LAPIC的?... 13
1.2.4 TPR、PPR、APR和Lowest priority —— 中断发给Whom?... 16