Re: V4L2: switch to register_chrdev_region: needs testing/review of release() handling

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Hans Verkuil
Date: Sunday, August 17, 2008 - 12:46 pm

Hi Hans,

On Sunday 17 August 2008 20:30:19 Hans de Goede wrote:

Thanks! :-)


I thought so as well, but without a release function the low-level class 
code in the kernel starts complaining about the missing release.


You might have gotten confused here: video_release() didn't call the 
main release callback: there was a return in front. I'd forgotten to 
remove that test code.

I've also tested what happens when you keep a sysfs file open: it seems 
to work OK in that video_release is called even though the sysfs file 
is still open. That said, I've moved the cdev_del call from 
video_unregister_device() to the video_release() function. It makes 
sense not to delete the char device until that callback is called.

This patch is here: 
http://linuxtv.org/hg/~hverkuil/v4l-dvb-cdev2/rev/575997018499


There is no need to do an additional get: cdev_init does that already, 
so the char dev stays alive at least until the cdev_del (longer if apps 
still keep it open).


Thanks, I've been wanting to do this for some time now and I finally had 
the time today to go in and dig through all the refcounting and how 
chardev handles things so that I could come up with a proper solution. 
What's nice is that this approach works also fine in older kernels 
(well, it compiles, I guess I need to do a real test on an older kernel 
before I can commit it in v4l-dvb). And that is very nice since the 
v4l-dvb repository is supposed to support any kernel >= 2.6.16.

I would be very curious to hear how well it works with the gspca driver. 
In particular if you can indeed reconnect while an application still 
has a char device open from before the disconnect. Currently the gspca 
own locking seems to disallow that (the new device doesn't appear until 
all applications stopped using the old one).

Regards,

	Hans
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: V4L2: switch to register_chrdev_region: needs testing/ ..., Hans Verkuil, (Sun Aug 17, 12:46 pm)
Re: V4L2: switch to register_chrdev_region: needs testing/ ..., David Ellingsworth, (Sun Aug 17, 3:27 pm)