>> For the sharing case, some sort of softirq should be created. That is, when a >> hard interrupt is generated and the irq handler is executed, set a flag that >> at >> some other point in time, the irq is delivered to userspace. Like you do with >> signals in userspace: > >NO. > >The whole point is, YOU CANNOT DO THIS. > >You need to shut the device up. Otherwise it keeps screaming. > >Please, people, don't confuse the issue any further. A hardware driver > > ABSOLUTELY POSITIVELY HAS TO > >have an in-kernel irq handler that knows how to turn the irq off. > >End of story. No ifs, buts, maybes about it.
I don't get you. The rtc module does something similar (RTC generates interrupts and notifies userspace about it) irqreturn_t uio_handler(...) { disable interrupts for this dev; set a flag that notifies userspace the next best time; seomstruct->flag |= IRQ_ARRIVED; return IRQ_HANDLED; } /* Userspace->kernel notification, e.g. by means of a device node /dev/uio or some ioctl. */ int uio_write(...) { somestruct->flag &= ~IRQ_ARRIVED; enable interrupts for the device; } > - have an in-kernel irq handler that at a minimum knows how to test > whether the irq came from that device and knows how to shut it up. > >This means NOT A GENERIC DRIVER. That simply isn't an option on the >table, no matter how much people would like it to be. -`J' -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/