> You shouldn't be able to break the driver from userspace 
> though; I'll take a 
> look if the snapshot I just sent you doesn't help.

Nope, exactly the same behaviour: first iteration works as a charm, second iteration 
timeouts waiting for data. I've put the logs given by dvb_debug_frontend=1 at the end 
of this email. The only difference I've seen is a faster time for the first data 
acquisition. Before, I was waiting around 2 seconds before receiving the first 
packets. Good improvement!

I even discovered another weird behaviour. I run my test and let it finish the first 
iteration, then kill it while it sleeps. If I restart it before dvb_shutdown_timeout, 
then I get an "operation not permitted" when I call "select" on the demux. I think 
it's a problem introduced in the new version Andrew gave me (fresh CVS).

Regarding my first problem (in my full application, I cannot re-open the frontend at 
all, even right after the close), I found the source of my problem: I fork a few child 
process and the increases the "writers" counter on the frontend file descriptor. 
Therefore, when a close the frontend from the parent, it's not really closed because 
the child processes still have a reference on that file. Stupid me.

So I remain with three problems:

  1) frontend lost (cannot tune) if I re-open it from the same process after 
dvb_shutdown_timeout.
  2) frontend lost (operation not permitter on "select") if I re-open it from a 
another process before dvb_shutdown_timeout.
  3) frontend lost (cannot tune) after around 1000 tune-read cycles ().

Doesn't anybody sees the same problems? At least for #3 I know I'm not alone...

Thanks.


----------------------  logs for a usual run of my test program
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_open                            <-- where 
I open the frontend
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_start
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_thread
Apr  7 13:39:54 pc0125 kernel: dvb_call_frontend_notifiers
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_ioctl
Apr  7 13:39:54 pc0125 kernel: DVB: initialising frontend 0:0 (STV0299/TSA5059/SL1935 
based)...
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_ioctl
<...>
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_add_event
Apr  7 13:39:54 pc0125 kernel: dvb_call_frontend_notifiers
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_add_event
Apr  7 13:39:54 pc0125 kernel: dvb_call_frontend_notifiers
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_autotune: drift:0 bending:0 inversion:0 
auto_step:0 auto_sub_step:0 started_auto_step:0
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_add_event
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_call_frontend_notifiers
Apr  7 13:39:54 pc0125 kernel: update_delay
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_release                         <-- where 
I close the frontend
Apr  7 13:39:55 pc0125 kernel: dvb_frontend_internal_ioctl                  
<...>                                                                       <-- it 
goes like that for 6 seconds
Apr  7 13:39:59 pc0125 kernel: update_delay
Apr  7 13:40:00 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_open                            <-- end of 
sleep and re-open
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_start
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_thread
Apr  7 13:40:04 pc0125 kernel: dvb_call_frontend_notifiers
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_ioctl
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:04 pc0125 kernel: DVB: initialising frontend 0:0 (STV0299/TSA5059/SL1935 
based)...
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_ioctl
<...>
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_add_event
Apr  7 13:40:04 pc0125 kernel: dvb_call_frontend_notifiers                 <-- where 
the FE looses its mind
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_autotune: drift:0 bending:0 inversion:0 
auto_step:0 auto_sub_step:0 started_auto_step:0
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_autotune: drift:0 bending:0 inversion:1 
auto_step:0 auto_sub_step:1 started_auto_step:0
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_autotune: drift:1718 bending:0 inversion:1 
auto_step:1 auto_sub_step:0 started_auto_step:0
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_autotune: drift:1718 bending:0 inversion:0 
auto_step:1 auto_sub_step:1 started_auto_step:0
<... keep on going like that until kill+dvb_shutdown_timeout ...>


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

Reply via email to