版块
论坛
喜欢
话题
应用
搜索
登录
注册
donotgo的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=41207
LINUX中断
各位高手:我最近在看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)
回复
donotgo
:
sunsetyang谢谢你告诉我很多原来不知道的东西。你觉的linux下的这段_sti汇编指令是不是应该就是简单置CPU中的IF位为1?也就是说跟汇编语言中的_sti指令是功能一样的吧?我觉得你好象对硬件特别通晓,请问一个跟硬件相关的问题:对中断控制寄存器,是不是可以发一些指令让...
(2003-01-03 15:21)
回复
sunsetyang
:
不知道你看过ucosii的代码,那是实时的,中断分64个等级,也就是你说的会抢先。但是我看linux代码,感觉没有分等级,下半部的代码会放在一个任务队列里,由任务调度完成优先级。中断响应都是一样的。 中断的分级一般的来说上有两中层次,硬件层次和软件层次。硬件上可以通过对中断控...
(2003-01-03 14:52)
回复
sunsetyang
:
UNIX1998非常谢谢你的回答 我没有看过ucosii的代码。但我看LINUX的代码时,我总结为:当中断发生,进入IDT中相应的中断门。自动关中断,做一些压栈工作,跳到do_IRQ函数,当SA_INTERRUPT为1调用_sti置位IF寄存器开中断(这点我看不懂_sti的汇编...
(2003-01-03 14:37)
回复
donotgo
:
UNIX1998非常谢谢你的回答 我没有看过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)
回复
donotgo
加关注
写私信
0
关注
0
粉丝
14
帖子
返回顶部