阅读:1681回复:3
PCI中断冲突,详细看代码
我用C6205的PCI接口写了个中断驱动,应用层调用连续测试正常。
但是如果我同时使用网络邻居传输几个大的文件,则我的测试程序会中断。 我分析是我的程序驱动STATUS_PENDING的时候,接收了不该接收的中断,导致我的程序测试中断。但是我在中断服务历程中已经判断了我接收的中断是不是我的,如果不是我返回FALSE. 我的中断历程: BOOLEAN SDevice::Isr_Irq0(void) { unsigned int hsr; //read pc status hsr = m_MemoryRange1.ind(0x27fff0); if((hsr&0xff)==3){ //判断是不是我的中断 hsr = 0x1; m_MemoryRange1.outd(0x27fff0,hsr); // Start DPC to handle the interrupt RequestDpc(CurrentIrp(), NULL); return TRUE; } // If we reach here, then the interrupt is not ours return FALSE; } |
|
|
沙发#
发布于:2005-04-22 08:49
我自己先顶一下。希望大牛给我的测试bug的建议
|
|
|
板凳#
发布于:2005-04-27 14:08
我把问题说的更明白一些,不同PCI设备卡之间,由于不正当的设置会产生冲突吗?如果能,能否举个例子?
|
|
|
驱动牛犊
![]() |
地板#
发布于:2008-04-03 13:28
if((hsr&0xff)==3) 不能用0xff吧
|