Holger Waechtler wrote:
sorry, next time I better should think twice before writing...

Holger Waechtler wrote:

do {
... do it ...
} while (readreg(isr) & IRQ_BIT);

makes no sense because the isr register is cleared by the IRQ handler
before the tasklets get running.
A way out might look like this: keep a copy of the isr register in the av7110 struct. Then in av7110_irq:

av7110->isr |= isr; // before we start the tasklets


in each tasklet:

av7110->isr &= ~ISR_BIT_THIS_TASKLET_HANDLES;
do {
/* ...do tasklet stuff... */
} while (av7110->isr & ISR_BIT_THIS_TASKLET_HANDLES);


Maybe it works, maybe there are still some race conditions.
Needs more thinking, but maybe you want test something like this.

Holger



--
Info:
To unsubscribe send a mail to [EMAIL PROTECTED] with "unsubscribe linux-dvb" as subject.

Reply via email to