[linux-dvb] [patch] dvb_net hotplugging support
Markus Rechberger
mrechberger at gmail.com
Tue Aug 14 13:54:00 CEST 2007
On 8/9/07, Markus Rechberger <markus.rechberger at amd.com> wrote:
> This patch addresses the discussion between Trent and me back then [1]
> in april.
> It improves dvb_net hotplugging support, even though it might still
> require some more improvements.
> This patch hasn't been tested yet, it would be nice if someone could
> test it and give some more feedback on it.
>
> [1] http://lkml.org/lkml/2007/4/27/507
>
> http://mcentral.de/~mrec/patches/dvb_net_fixes.diff
>
> Signed-off-by: Markus Rechberger <markus.rechberger at amd.com>
>
> diff -r cae47793b091 linux/drivers/media/dvb/dvb-core/dvb_net.c
> --- a/linux/drivers/media/dvb/dvb-core/dvb_net.c Tue Aug 07
> 10:52:55 2007 -0300
> +++ b/linux/drivers/media/dvb/dvb-core/dvb_net.c Thu Aug 09
> 16:00:40 2007 +0200
> @@ -1501,10 +1501,12 @@ static int dvb_net_close(struct inode *i
> static int dvb_net_close(struct inode *inode, struct file *file)
> {
> struct dvb_device *dvbdev = file->private_data;
> - struct dvb_net *dvbnet = dvbdev->priv;
> + struct dvb_net *dvbnet;
>
> if (!dvbdev)
> return -ENODEV;
> +
> + dvbnet = dvbdev->priv;
>
> if ((file->f_flags & O_ACCMODE) == O_RDONLY) {
> dvbdev->readers++;
> @@ -1522,11 +1524,40 @@ static int dvb_net_close(struct inode *i
> return 0;
> }
>
> +static int dvb_net_open_node(struct inode *inode, struct file *file)
> +{
> + struct dvb_device *dvbdev = file->private_data;
> + struct dvb_net *dvbnet;
> +
> + if (!dvbdev)
> + return -ENODEV;
> +
> + dvbnet = dvbdev->priv;
> +
> + if (dvbnet->exit)
> + return -ENODEV;
> +
> + if (!dvbdev->users)
> + return -EBUSY;
> +
> + if ((file->f_flags & O_ACCMODE) == O_RDONLY) {
> + if (!dvbdev->readers)
> + return -EBUSY;
> + dvbdev->readers--;
> + } else {
> + if (!dvbdev->writers)
> + return -EBUSY;
> + dvbdev->writers--;
> + }
> +
> + dvbdev->users--;
> + return 0;
> +}
>
> static struct file_operations dvb_net_fops = {
> .owner = THIS_MODULE,
> .ioctl = dvb_net_ioctl,
> - .open = dvb_generic_open,
> + .open = dvb_net_open_node,
> .release = dvb_net_close,
> };
>
>
Since this didn't get commented here, Trent did that patch already 2
months ago but it's not included yet. So I recommend to include his
patch.
http://article.gmane.org/gmane.linux.kernel/543689
Acked-by: Markus Rechberger <mrechberger at gmail.com>
Markus
More information about the linux-dvb
mailing list