Re: [PATCH] add device node locking possibility to dvbcore

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

 



On 8/17/07, Oliver Endriss <o.endriss@xxxxxx> wrote:
> Markus Rechberger wrote:
> > On 8/17/07, Oliver Endriss <o.endriss@xxxxxx> wrote:
> > > Steven Toth wrote:
> > > > The ts_bus_ctrl function pointer / callback is already in the
> mainline,
> > > > check dvb_frontend.c for more details. You shouldn't need a patch from
> me.
> > >
> > > ACK, should be enough to do this kind of locking.
> > >
> > > Furthermore, with this callback, the dvb_frontend_active() routine from
> > > ' [PATCH] function for checking if the dvb framework is idle'
> > > is not required at all. The callback is aware whether the frontend is
> > > running or not...
> > >
> > As far as I've seen the callback will be called as soon as the device
> > gets closed, even though the thread might still be spinning in the
> > background and the subsystem might still access DVB components, this
> > is why dvb_frontend_active is  still needed.
> > Closing the devicenode and that callback doesn't mean that the device is
> idle.
>
> Ok, this should be fixed. What about this patch:
>
> diff -r dd58780b6fb4 linux/drivers/media/dvb/dvb-core/dvb_frontend.c
> --- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c	Thu Aug 09 16:30:39
> 2007 +0200
> +++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c	Fri Aug 17 20:07:28
> 2007 +0200
> @@ -596,6 +596,10 @@ restart:
>  	mb();
>
>  	dvb_frontend_wakeup(fe);
> +
> +	if (fe->ops.ts_bus_ctrl)
> +		fe->ops.ts_bus_ctrl (fe, 0);
> +
>  	return 0;
>  }

as I wrote earlier the thread can be idle/closed even before the node
gets closed (you can test that with kaffeine, and you can test the
other case with the scan utility)

>
> @@ -1101,9 +1105,10 @@ static int dvb_frontend_release(struct i
>
>  	if ((file->f_flags & O_ACCMODE) != O_RDONLY)
>  		fepriv->release_jiffies = jiffies;
> -
> -	if (fe->ops.ts_bus_ctrl)
> -		fe->ops.ts_bus_ctrl (fe, 0);
> +	else {
> +		if (fe->ops.ts_bus_ctrl)
> +			fe->ops.ts_bus_ctrl (fe, 0);
> +	}
>

can you explain this? to me it doesn't look right. Before it always
called ts_bus_ctrl and afterwards it has a dependency to the access
mode bits?

Markus

_______________________________________________
linux-dvb mailing list
linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux