Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: AW: Re: DVB-S interrupt nesting



On Thu, Jan 02, 2003 at 11:37:07AM +0100, Florian Schirmer wrote:
> Hi,
> 
> >makes no sense because the isr register is cleared by the IRQ handler 
> >before the tasklets get running. sorry,
> 
> What about this:
> 
>  in irq handler:
> 
>  saved_isr |= readreg(isr) & IRQ_BIT;
> 
>  in tasklet handler:
>  
>  do {
>  ... do it ...
>  } while ((saved_isr) || (readreg(isr) & IRQ_BIT));

This is better but not enough. 
irq handler has to make not only saved_isr, but 
saved_many_other_changeable_7146_registers
because in the ... do it ... segment many_other_changeable_7146_registers 
will also be used at undefined later instance of time, after
the 7146 has been allowed to deliver next interrupt.

I don't know is that possible, but I would rather delay clearing
7146 ISR after all tasklets have FINISHED. Anyway we can't nest
interrupts as Michael already told us.

So IMHO it's better to loose complete interrupt (not allow 7146
to deliver it) than to get garbled data from changeable registers when
the next interrupt arrived while the current hasn't been processed 
completely by the tasklets. (faster than CPU can sometimes handle).



-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index