I wrote about a bit of brain-damage in the IBM PC bus design:
(e.g., the stupid edge-triggered interrupts, where
anyone with the
slightest bit of experience would have known to use negative level
triggered interrupts).
Jim leonard wrote:
I do not have the slightest bit of experience: Can
you explain why
level-triggered interrupts are better than edge-triggered?
Two principal reasons:
1) It's much harder to lose a level-triggered interrupt. Until you
actually service the interrupt, the device will simply continue
requesting service by holding the signal low. With edge-triggered
interrupts, it's possible to get into a state where a device thinks
that it's requesting an interrupt, but the edge wasn't noticed by
the interrupt controller, and there's nothing (short of polling) that
will let the software know that the device still wants service.
2) Active-low level-triggered interrupts can be shared between multiple
devices/cards. There's no viable way to do that with edge-triggered.
There are some hacks that kind of work under some circumstances,
but only if the cards are specially designed to support those hacks.
Eric