阅读:1083回复:1
问题8,帮帮忙,谢谢
1.轮询和中断的问题,我想在发送数据包的时候用轮训的方式,而不是用发送完成中断,这要怎么做阿。我担心在轮训函数执行一半的时候,中断跳出来。还有在执行中断处理函数的时候轮询函数跳出来,那就很麻烦了。怎么办?这些顺序问题好头疼阿。
DDK文档说在提示接收的时候启用中断,提示发送完成的时候禁止中断。这句话我不太理解。是不是就是简单的说没有发送完成中断这个概念,只有一个接受中断而已。还是说也有发送完成中断,但是在执行的某个时间内被我禁止了。 |
|
|
沙发#
发布于:2005-05-18 12:15
<<我想在发送数据包的时候用轮训的方式,而不是用发送完成中断,<<这要怎么做阿
这和具体硬件相关,对于硬件什么动作产生中断,驱动是可以通过 硬件寄存器设置的,对于一般的网卡,你可以设置发送完成不产生中断,这样你就要通过polling来知道发送完成了,好调用NdisMSendComplete来通知上层协议 驱动程序做清理工作了 而且这个网卡中断屏蔽你是可以随时设置的,如果你担心polling的时候,网卡接收中断会跳出来,就可以先把网卡接收中断关掉。甚至可以提高irql的级别屏蔽所有的外部中断,这实际上是直接设置cpu的寄存器来实现的。 执行中断的时候,你的polling是没有机会插进来的,级别比较低。 发送完成中断,一看你的设备是不是支持,即使设备支持,一般也可以完全不用,或者可以随时屏蔽掉,有没有发送完成中断完全和硬件相关 不知道我是不是解释清楚了 |
|