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

再接再厉,再问几个问题。1

楼主#
更多 发布于:2005-05-19 12:05

1.在中断处理函数里,设置网卡的中断屏蔽位。
这句话的意思是不是说往硬件上的某个寄存器上写0,告诉硬件不要送中断上来。
而不是禁用掉主机上的中断。
而应该是尽早打开,不然会造成数据丢失。
这句话的意思应该是说在处理发送完成中断或者接收中断的时候,如果禁止掉中断的话,有可能因为再由数据

过来需要中断的时候没有中断,造成这一个数据帧的丢失。是吗?
我看NE2000的例子,它好像为了防止这种情况,在接受了一个数据包后又会去主动询问硬件。

您应该看过DDK的NE2000的例子吧,我感觉它的中断处理程序在那个while语句中就跳不出来了。这是怎么回事,还是我理解错了。
周维彬
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-05-20 20:16

1.在中断处理函数里,设置网卡的中断屏蔽位。
这句话的意思是不是说往硬件上的某个寄存器上写0,告诉硬件不要送中断上来。
而不是禁用掉主机上的中断。
 

zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2005-05-20 20:27

而应该是尽早打开,不然会造成数据丢失。
这句话的意思应该是说在处理发送完成中断或者接收中断的时候,如果禁止掉中断的话,有可能因为再由数据

过来需要中断的时候没有中断,造成这一个数据帧的丢失。是吗?
我看NE2000的例子,它好像为了防止这种情况,在接受了一个数据包后又会去主动询问硬件。

您应该看过DDK的NE2000的例子吧,我感觉它的中断处理程序在那个while语句中就跳不出来了。这是怎么回事,还是我理解错了。

对。
对于前面设置硬件上的中断屏蔽寄存器,网卡仍能接收数据,只是不会触发cpu中断了,并会设置中断状态寄存器
这样ne2000在一个中断处理函数里(实际上已经是dpc level了),一直查询中断状态寄存器避免丢失数据包。

代码我还有印象,至于你担心的中断处理程序在while语句中跳不出来,除非接收包的速度大于处理速度,不然把接收的包都处理了,就跳出来了
游客

返回顶部