Re: [RFC/PATCH] sysfs'ify video4linux

From: Greg KH (
Date: Wed Jul 16 2003 - 16:08:00 EST

On Wed, Jul 16, 2003 at 10:20:18PM +0200, Gerd Knorr wrote:
> > It looks like the video drivers include a "struct video_device"
> > structure within their own structures, right?
> Yes, it is allocated/freed by the driver, most seem to simply include
> one ore more "struct video_device" somewhere in the per-device struct.

So you CAN NOT just blindly put a kobject (meaning a class_device)
structure inside of there.

> > That will have to be changed to a pointer to that structure in order
> > for the lifetime rules to work properly.
> Hmm. I doubt it will be that simple. struct video_device has a priv
> field which can be used by the drivers to hook in some driver-private
> data. That may point into nowhere if struct video_device has a longer
> live time due to some kobject still being referenced. Wouldn't be a
> issue for videodev.o itself, but might become a problem for drivers
> which want add private properties and rely on video_device->priv
> for finding the per-device data. Problem isn't solved but justed
> moved to the next corner ...

No, just have the video drivers have a release callback to do the
freeing. It's pretty simple, look at usb_host_release() in
drivers/usb/core/hcd.c. That's exactly what that is for. Hm, I
shouldn't have to check for bus->release() there, as release is now

> Maybe let video_unregister sleep on a semaphore which gets woken up
> by the release function? That should make sure the sysfs objects are
> not referenced any more if video_unregister() returns. I use a similar
> method in some places when shutting down kernel threads, to make sure it
> is really stopped before rmmod frees the memory.

Ick, no. Try doing what I did for usb hosts, it's much simpler.

> > Look at the dev file in /sys/class/tty/*, or in /sys/block/hd* or in
> > /sys/class/usb/*, and so on...
> I've found the code in drivers/block/genhd.c in the meantime :)

genhd.c uses "raw" kobjects. It might be easier to look at a
class_device example like the above mentioned usb_host one.

If you have any other questions/problems, feel free to ask.


greg k-h
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Wed Jul 23 2003 - 22:00:26 EST