各位高手:我最近在看LINUX源代码中断部分。产生一个疑问。请高手们指点:在调用驱动写的ISR之前,如果SA_INTERRUPT为1时,就要调用_sti开中断。在处理软中断程序前也要调用_sti开中断。这我就产生疑问了:在汇编书里说,调用_sti只是置IF寄存器为1,允许INTF...
全文
回复(8) 2002-12-27 10:26 来自版块 - LINUX&UNIX核心开发
表情
donotgo底半软中断优先级是比硬中断低。也就是说执行bh代码时,硬件会抢先,这也是分上,下半部的原因。我们必须让上半部尽快完成,以防止耽误下一个中断,也就是你说的保证所有硬中断被响应。 UNIX1998,请问你看LNUX源代码时,有没有是那一段代码实现了这个软中断可被硬中断抢先的功...(2003-01-03 15:37)
donotgosunsetyang谢谢你告诉我很多原来不知道的东西。你觉的linux下的这段_sti汇编指令是不是应该就是简单置CPU中的IF位为1?也就是说跟汇编语言中的_sti指令是功能一样的吧?我觉得你好象对硬件特别通晓,请问一个跟硬件相关的问题:对中断控制寄存器,是不是可以发一些指令让...(2003-01-03 15:21)
sunsetyang不知道你看过ucosii的代码,那是实时的,中断分64个等级,也就是你说的会抢先。但是我看linux代码,感觉没有分等级,下半部的代码会放在一个任务队列里,由任务调度完成优先级。中断响应都是一样的。 中断的分级一般的来说上有两中层次,硬件层次和软件层次。硬件上可以通过对中断控...(2003-01-03 14:52)
sunsetyangUNIX1998非常谢谢你的回答 我没有看过ucosii的代码。但我看LINUX的代码时,我总结为:当中断发生,进入IDT中相应的中断门。自动关中断,做一些压栈工作,跳到do_IRQ函数,当SA_INTERRUPT为1调用_sti置位IF寄存器开中断(这点我看不懂_sti的汇编...(2003-01-03 14:37)
donotgoUNIX1998非常谢谢你的回答 我没有看过ucosii的代码。但我看LINUX的代码时,我总结为:当中断发生,进入IDT中相应的中断门。自动关中断,做一些压栈工作,跳到do_IRQ函数,当SA_INTERRUPT为1调用_sti置位IF寄存器开中断(这点我看不懂_sti的汇编...(2003-01-03 09:38)
unix1998不知道你看过ucosii的代码,那是实时的,中断分64个等级,也就是你说的会抢先。但是我看linux代码,感觉没有分等级,下半部的代码会放在一个任务队列里,由任务调度完成优先级。中断响应都是一样的。(2003-01-02 17:09)
donotgo谢谢UNIX1998的回答。我想请教你的是LINUX的中断是否是不分级的?我记得WINDOWS NT下写驱动,中断是分等级的。当中断发生,进入系统态,执行相应ISR。这时,当更高级的中断来后,响应高级中断,但这时,当同级中断或低级中断来后,不会被抢先。在LINUX下是否也有这钟情...(2003-01-02 16:48)
unix1998底半软中断优先级是比硬中断低。也就是说执行bh代码时,硬件会抢先,这也是分上,下半部的原因。我们必须让上半部尽快完成,以防止耽误下一个中断,也就是你说的保证所有硬中断被响应。(2003-01-02 13:24)

返回顶部