Re: [RFC] bind/unbind uevent

From: Greg KH
Date: Mon Dec 13 2010 - 14:40:07 EST


On Mon, Dec 13, 2010 at 08:27:45PM +0100, Sebastian Ott wrote:
> On Wed, 8 Dec 2010, Greg KH wrote:
> > On Wed, Dec 08, 2010 at 11:18:27AM +0100, Sebastian Ott wrote:
> > > On Tue, 7 Dec 2010, Kay Sievers wrote:
> > > > On Tue, Dec 7, 2010 at 19:33, Greg KH <gregkh@xxxxxxx> wrote:
> > > > > On Tue, Dec 07, 2010 at 06:29:37PM +0100, Sebastian Ott wrote:
> > > >
> > > > >> So I'm searching for a trigger when these attributes are created, or
> > > > >> in other words when the device is useable, which I think translates to
> > > > >> when a driver is bound to this device.
> > > > >
> > > > > Again, KOBJ_ADD is the correct one.
> > > > >
> > > > > If your driver is creating sysfs attributes on its own, that's a bug and
> > > > > should be fixed.
> > > >
> > > > Sounds a bit like the driver should create its own child device with
> > > > its own properties, instead of mangling around with attributes at a
> > > > device it binds to.
> > >
> > > Yes, I get that feeling too. But I'm talking about existing drivers
> > > and I don't think I can change their whole structure.
> >
> > It's just a matter of putting the attributes in a table and passing that
> > to the bus code the driver registers with. Only a minor change in the
> > driver is needed to resolve this.
>
> I don't get it. The current situation is, that our drivers
> add attributes to the device they are about to bind with, in
> the probe function.

Don't do that, have your _driver_ register the attributes with the bus
it is on, then when the binding happens, the attributes will
automatically get created for the device before the notification is sent
to userspace. That is the proper proceedure here.

> I think we agree that it would be better
> if those drivers would register a child device and add attributes
> to this one. But my concern is that this would break userspace
> which walks the sysfs tree and changes attributes, since it changed
> from:
> /sys/devices/$DEV/$ATTR
> to:
> /sys/devices/$DEV/$CHILD/$ATTR

Ick, no, you don't have to do that, just use the functionality the
driver core provides for you already.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/