Samuel Thibault <samuel.thiba...@gnu.org> writes: > A simpler way for now would be to make deliver_intr and > device_intr_enable count how many "disables" we have for each irq. > Both device_intr_register and deliver_intr would increase it (and thus > disable the irq), and userland would have to call device_intr_enable > to decrease the counter so the irq can be re-enabled. Of course if > some userland "forgets" to call device_intr_enable(), the irq will > stay disabled and we're screwed with anything else sharing the irq > until userland gets killed for instance. But at least it seems like a > workable way for sharing interrupts between different userland processes > (and gnumach drivers if any, e.g. the current ahci).
I remember thinking about using a send-once right that when deallocated enables the interrupt again. This should be a) well optimized, and b) robust in the face of misbehaving userland.
signature.asc
Description: PGP signature