aben1223
驱动小牛
驱动小牛
  • 注册日期2004-11-29
  • 最后登录2007-06-01
  • 粉丝1
  • 关注0
  • 积分1000分
  • 威望201点
  • 贡献值0点
  • 好评度192点
  • 原创分2分
  • 专家分0分
阅读:1083回复:1

问题8,帮帮忙,谢谢

楼主#
更多 发布于:2005-05-18 11:30
1.轮询和中断的问题,我想在发送数据包的时候用轮训的方式,而不是用发送完成中断,这要怎么做阿。我担心在轮训函数执行一半的时候,中断跳出来。还有在执行中断处理函数的时候轮询函数跳出来,那就很麻烦了。怎么办?这些顺序问题好头疼阿。
DDK文档说在提示接收的时候启用中断,提示发送完成的时候禁止中断。这句话我不太理解。是不是就是简单的说没有发送完成中断这个概念,只有一个接受中断而已。还是说也有发送完成中断,但是在执行的某个时间内被我禁止了。
周维彬
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-05-18 12:15
<<我想在发送数据包的时候用轮训的方式,而不是用发送完成中断,<<这要怎么做阿
  这和具体硬件相关,对于硬件什么动作产生中断,驱动是可以通过
硬件寄存器设置的,对于一般的网卡,你可以设置发送完成不产生中断,这样你就要通过polling来知道发送完成了,好调用NdisMSendComplete来通知上层协议
驱动程序做清理工作了

而且这个网卡中断屏蔽你是可以随时设置的,如果你担心polling的时候,网卡接收中断会跳出来,就可以先把网卡接收中断关掉。甚至可以提高irql的级别屏蔽所有的外部中断,这实际上是直接设置cpu的寄存器来实现的。

执行中断的时候,你的polling是没有机会插进来的,级别比较低。

发送完成中断,一看你的设备是不是支持,即使设备支持,一般也可以完全不用,或者可以随时屏蔽掉,有没有发送完成中断完全和硬件相关
不知道我是不是解释清楚了
游客

返回顶部