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

问题11,帮帮忙,谢谢

楼主#
更多 发布于:2005-05-18 11:34
4.一个网卡硬件通常有两个最主要的中断(发送完成中断,还有接收中断)。
第一个问题:是不是一旦发生中断,CPU便将当前信息保存下来以便中断处理完成之后,跳出中断继续执行刚刚被中断的代码。我以前所学的只是书上的知识没有接触过真正的硬件中断。不过我问过几个硬件的老师,他们说就是这样。
第二个问题:在中断处理过程中一旦再次出现中断情况,譬如在处理发送完成中断时,又有新的数据到来。那么是不是因为是平级中断所以不再发生接收中断。而是在中断状态位上标明有新的中断需要处理。还是说我已经在硬件上的某个寄存器上写0了,硬件就不产生中断了。我看到好几个例子感觉是这样的。只是看到DDK带的NE2000例子中的中断处理代码HandleInterrupt()函数感觉好像就跳不出中断循环了。
其实这个问题还是因为我担心产生时序混乱上的问题。
周维彬
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-05-18 13:54
1。是象你说的那样
2。和具体硬件相关,也和os中断处理架构有关。这种问题我认为只有在linux 这种可以看到源代码的os上才能彻底搞清楚。
在windows 上,你只是提供了几个会调函数,系统做了什么你都不清楚,很难彻底搞清楚。
常见的处理,是在网卡中断处理函数里,设置网卡的硬件中断屏蔽位
就使硬件不会向cpu产生硬件中断了,但应该是尽早打开,不然会造成数据丢失。
游客

返回顶部