[lkml]   [1999]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: interrupt handling w/o handler?
Mark Lord wrote:
> Jes Sorensen wrote:
> >
> > >>>>> "Jeff" == Jeff Garzik <> writes:
> >
> > Jeff> Is there a function available to drivers that allows something
> > Jeff> like: ... interruptible_sleep_on_irq (9); /* wait on IRQ 9 */
> ..
> > You have to register a handler for thaat, otherwise how are you
> > guaranteed that the interrupt is handled and the hardware doesn't keep
> > reasserting the same interrupt over and over again.
> I think Jeff might be looking for a function such as:
> interruptable_sleep_on_irq(n):
> -- allocate unused irq(n), bind in generic_irqhandler(n)
> -- save PID in wakeuptable(n)
> -- unmask irq(n)
> -- sleep until woken up by generic_irqhandler(n)
> -- deallocate irq(n)
> -- exit
> generic_irqhandler(n):
> -- permanently mask irq(n)
> -- wakeup(wakeuptable(n))
> -- exit
> Those two functions could then be made available to user-level
> either through /proc or a newsyscall, thereby permitting *user-level*
> interrupt handling ("virtual device drivers" from userland).


It seems to me that many drivers do not need a specific interrupt
handler, they simply use interrupts to wait until an event occurs. I
think a simple, generic interrupt handler that simply lets you know that
an event occurred would be very useful.

Specifically in video drivers, one can do

do {
status = read_fifo_register() & mask;
} while (!status); /* poll for fifo */


interruptible_sleep_on_irq (video_irq);
/* FIFO is ready, proceed... */

Now I _could_ write an interrupt handler to do this sort of thing, but a
generic method seems much more useful, and keeps the code much, much
cleaner. There might be a generic "register_generic_irq_handler()" step
at video driver init, if needed.

I hadn't thought about IRQ handling from userland, that _is_ an added



One of the most overlooked advantages to computers is... If they do
foul up, there's no law against whacking them around a little.
-- Joe Martin

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:52    [W:0.051 / U:7.416 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site