tqijin
驱动小牛
驱动小牛
  • 注册日期2006-07-04
  • 最后登录2013-11-21
  • 粉丝3
  • 关注0
  • 积分31分
  • 威望1060点
  • 贡献值1点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:2850回复:5

版主求助,PCI驱动ISR里使用KeSetEvent死锁疑问

楼主#
更多 发布于:2009-09-29 10:23
版主好,求求帮帮我,
驱动设计是这样的,启动一次数据DMA传输,传输完成以后,在DMA完成中断的中断服务例程ISR中调用KeSetEvent,触发事件,主线程KeWaitForSingleObject函数响应。
现在的问题是,运行一段时间后2分钟左右
主线程运行到KeWaitForSingleObject函数就死锁(现象:系统死机,不重启、不蓝屏、CPU不是100%)

分析快一个星期了,没有找到原因,帮帮我,谢谢谢谢
tqijin
驱动小牛
驱动小牛
  • 注册日期2006-07-04
  • 最后登录2013-11-21
  • 粉丝3
  • 关注0
  • 积分31分
  • 威望1060点
  • 贡献值1点
  • 好评度14点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-10-24 22:20
回 2楼(iwasmu) 的帖子
谢谢您热心回帖,通过以上机制来同步可能还存在问题,我见过很多人这么用都有问题,
即使把KeSetEvent 放在中断延迟调用里也是一样,
现在采用多加入一个队列的方法,把处理以后的IRP放入另外一个队列,
等待DMA中断以后,从该队列中取出IRP ,完成IRP ,
结果很好,
再次谢谢你
游客

返回顶部