Re: [RFC] New kobject/kset/ktype documentation and example code

Cornelia Huck
2007-11-28T15:48:56Z

On Wed, 28 Nov 2007 13:23:02 +0100,
Kay Sievers <kay.sievers@vrfy.org> wrote:

> On Wed, 2007-11-28 at 12:45 +0100, Cornelia Huck wrote:
> > On Tue, 27 Nov 2007 15:02:52 -0800, Greg KH <greg@kroah.com> wrote:
>
> > > A kset serves these functions:
> > >
> > > - It serves as a bag containing a group of objects. A kset can be used by
> > > the kernel to track "all block devices" or "all PCI device drivers."
> > >
> > > - A kset is also a subdirectory in sysfs, where the associated kobjects
> > > with the kset can show up.
> >
> > Perhaps better wording:
> >
> > A kset is also represented via a subdirectory in sysfs, under which the
> > kobjects associated with the kset can show up.
>
> This draws a misleading picture. A member of a kset shows up where the
> "parent" pointer points to. Like /sys/block is a kset, the kset contains
> disks and partitions, but partitions do not live at the kset, and tons
> of other kset directories where this is the case.
>
> "If the kobject belonging to a kset has no parent kobject set, it will
> be added to the kset's directory. Not all members of a kset do
> necessarily live in the kset directory. If an explicit parent kobject is
> assigned before the kobject is added, the kobject is registered with the
> kset, but added below the parent kobject."

Yes, that's better.

> > > The uevent function will be called when the uevent is about to be sent to
> > > userspace to allow more environment variables to be added to the uevent.
> >
> > It may be helpful to mention which uevents are by default created by
> > the kobject core (KOBJ_ADD, KOBJ_DEL, KOBJ_MOVE).
>
> I think, we should remove all these default events from the kobject
> core. We will not be able to manage the timing issues and "raw" kobject
> users should request the events on their own, when they are finished
> adding stuff to the kobject. I see currently no way to solve the
> "attributes created after the event" problem. The new
> *_create_and_register functions do not allow default attributes to be
> created, which will just lead to serious trouble when someone wants to
> use udev to set defaults and such things. We may just want to require an
> explicit call to send the event?

There will always be attributes that will show up later (for example,
after a device is activated). Probably the best approach is to keep the
default uevents, but have the attribute-adder send another uevent when
they are done?