On Tue, 2003-06-03 at 10:15, Tim Wiffen wrote: > I am not convinced that the poll method is better. When I switched from > GCC 2.95 to GCC 3.2 I found that dvbtune stopped being able to read PSI > tables.
I had some discussion with Dave Chapman the author of dvbtune about this. Basically, the code misuses the poll system call (Johannes alludes to this in his reply). I've got a half-baked patch to the code if anyone wants it. I probably out to give it do Dave to put back into the master source code. In a nutshell I found two related problems. Firstly, the timeout is too short. The 2 seconds given isn't long enough for my local transmitter which sends the information every 10 seconds. Allowing for a little error I replaced the 2000 with 12000 to allow 12 seconds which should give it two attempts with a little space for overlap. More serious is the use of the return code. To summarise the manual page Johannes referred to, poll returns -1 on an ERROR, 0 on a TIMEOUT and a positive value for the number of file descriptors that actually worked. So the correct test should be something like poll (&ufd, 1, 12000) <= 0. Even that isn't perfect as it assumes that all the data is available at once (which, I admit, it does seem to be). It would appear to me that what we need is a nice user-mode interface to the DVB API. There seems to be a serious attempt at this with dvbsak's libdvbsak. However, I can't seem to find any documentation on it which is a pity as it seems an excellent starting point. Comments anyone? Jim. -- Info: To unsubscribe send a mail to [EMAIL PROTECTED] with "unsubscribe linux-dvb" as subject.
