Mail Archives: djgpp/2002/10/10/17:55:56
> (_go32_dpmi_chain_protected_mode_interrupt_vector).
>
> These aren't reentrant. And they have some overhead. And
> chaining takes
> a lot of overhead (needs to call back to real mode). It's
> much better if
> you just hook the interrupt and do cleanup yourselves. Even
> better if you
> do it from your own wrapper ...
>
We can have multiple identical PCI boards plugged into our
system, and they may have to share interrupts with other
hardware (or each other), so chaining seems to be the easiest
solution. We can work around this if need be, but I think we
have worked out most of our problems (read on).
> > > Do you keep interrupts disabled?
> > I'm not sure I understand. The first line of our interrupt
> handler is
> > disable(); and the last line is enable(); if that's what you mean.
>
> Ouch. Try removing the enable (and the disable). The enable
> would let a
> second interrupt hit the wrapper before the first one was clear.
Bingo! This appears to be the biggest source of our problems. We
removed these lines from the handler, and things improved
dramatically, although I'm not completely sure I understand why.
Doesn't the interrupt controller prevent "simultaneous" interrupts
anyway?
> > > What version of cwsdpmi?
> > CWSDPMI V0.90+
>
> r5? Image size?
Yes, r5. Image size is 19,335 bytes.
Thanks once more,
Michael
- Raw text -