阅读:1386回复:6
何时开中断?
在KMD方式下,驱动程序运行到哪一步的时候开中断?是不是
IoConnectInterrupt? |
|
最新喜欢:![]() |
沙发#
发布于:2002-09-30 23:33
要先完成所有的初始化工作才能开....否则你就完了.... :mad: :mad: :mad:
|
|
|
板凳#
发布于:2002-10-01 11:47
要先完成所有的初始化工作才能开....否则你就完了.... :mad: :mad: :mad: 我的意思是哪一步或哪一个函数是具有汇编中“开中断sti”的作用 |
|
地板#
发布于:2002-10-02 10:08
开关中断应该是系统控制的吧?
|
|
地下室#
发布于:2002-10-02 14:57
开关中断应该是系统控制的吧? 能证明是系统控制的吗?如果能讲出道理来就好了。 |
|
5楼#
发布于:2002-10-08 09:24
你所说的“开中断”应该有多个含义。
1、CPU中断允许:STI是开CPU内部的中断允许,操作系统内核在CPU初始化之后,会允许CPU接受外部的中断请求。如果你看过linux内核的源代码,你就不会表示怀疑。试想,如果CPU不允许接收外部中断,你的键盘能用吗? 2、中断控制器允许。所有PC都有8259中断控制器(集成在芯片组内),外围设备的IRQ都是连到8259,而后由8259连到CPU。8259是可编程器件,端口地址为:20、21、A0、A1,它的编程也由操作系统初始化。 3、设备层的开中断。很多设备的中断也有禁止、使能编程接口。 由以上可见,windows设备驱动程序开发者只需要考虑最后一种,即设备层的开中断。一般是这样的,在刚上电时由硬件保证设备中断是禁止的,驱动程序在得到设备的硬件资源后调用了IoConnectInterrupt 之后的任何地方可以允许设备中断。因为此时准备好了ISR。 值到注意的是,在ISA总线时代,中断由边沿触发,且不记忆中断请求状态,这类设备根本没有开、关中断的概念,也就无所谓什么时候开中断了。 |
|
|
6楼#
发布于:2002-10-09 00:17
你所说的“开中断”应该有多个含义。 讲的好!逻辑清晰,深入细致。 |
|