X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-bounces using -f Message-ID: <271DBBEEA095D511B80D009027DE7D67DABEB8@mcoexc01.mlm.maxtor.com> From: "Dykstra, Sean" To: "'djgpp AT delorie DOT com'" Subject: Interrupt conflict - network card and ATA controller card Date: Tue, 12 Mar 2002 09:51:10 -0700 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain; charset="iso-8859-1" Reply-To: djgpp AT delorie DOT com Sorry about the last message, got a new machine and it had HTML on by default! Hello! I am having a problem with interrupt handling when a real mode ISR has been installed for a network card and that network card exists at the same IRQ as an add-in ATA controller card. The ATA controller card does not have a system drive on it, we are simply doing some low level tests with it. We are taking over the interrupt for the ATA controller card and not for the network card. I have tried hooking and chaining the interrupt and I get the same results - if the user does a write to the network drive, occasionally I will get random files appearing on the network card that weren't there before, and sometimes I get GPF's. On some systems the program will lock up as soon as I get an ATA interrupt. The really odd part is that most of the time it works (even if I don't chain - if I just hook, it usually works, network and all!) Also, if I induce artificial delays between user commands to the network drive and ATA controller commands, this seems to alleviate the problem. Also, if I never log onto the network, the program always works! I have the entire application locked into memory using the crt0 startup flags. I am using CWSDPMI as the DPMI host. It appears that the problem occurs just after a write to the network drive, and we get an interrupt for the ATA controller card. The network drivers are using real mode interrupts, and I am thinking that perhaps the network card is in the middle of sending a data packet at the same time an ATA interrupt occurs. This 'appears' to only occur on systems that have a network card with an IRQ at the same address as the ATA IRQ. I have tested this on around 40 systems, and only those that have shared the interrupt between the ATA controller and the network card have seen the problem so far. I have only installed a protected mode interrupt for my ATA controller. Do I need a real-mode version? Do I need to do something to make sure the real-mode ISR for the network card gets called? (other than chaining?) Are there protected mode DOS drivers for ethernet cards? Any other ideas? I am sure someone must have seen this type of problem, with the extensive use of allegro out there. (I am not using allegro). Thanks in advance for any help! So far DJGPP has been a great tool, and I would hate to hit a roadblock now!