[linux-dvb] problems and workaround when tuning to a channel with
js at linuxtv.org
Tue Jun 7 11:24:36 CEST 2005
Oliver Endriss wrote:
> Johannes Stezenbach wrote:
> > IMHO it's bad to sleep uninterruptibly for longer than,
> > say, one second. But the way OSDSetBlock() is coded
> > one cannot interrupt it without messing up the internal
> > state. Or, maybe one could bail out after a BlitBitmap()
> > and return -ERESTARTSYS, so the whole ioctl will
> > be repeated?
> With firmware 261d you could do that because Werner added a timeout for
> bitmap transfers. 261c and earlier would block until the ARM was
> rebooted... :(
> Unfortunately, DPRAM bandwidth is a bottleneck. According to my test
> results, a short timeout will prevent the bitmap transfer to complete
> successfully under heavy load. So aborting+repeating the ioctl would
> not help.
Misunderstanding: When we sleep interruptibly we can use a long
timeout. But we need to correct the error handling so that
the ioctl is restarted when it got interrrupted, and the
current partial transfer (LoadBitmap/BlitBitmap pair) must
be terminated so the firmware state is not messed up.
> > > Anyway, I've never seen any -ERESTARTSYS errors.
> > Me neither. But this proves nothing.
> Sure, but it should not happen unless vdr was killed.
> I wonder where this signals come from.
vdr sets a watchdog with alarm(). Signals could also come
from the kernel (SIGIO, SIGCHLD etc.). (I thought vdr uses
signals internally, but this doesn't seem to be true anymore).
More information about the linux-dvb