From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Kay Sievers <kay.sievers@vrfy.org>
Cc: Greg KH <gregkh@suse.de>, Vojtech Pavlik <vojtech@suse.cz>,
Hannes Reinecke <hare@suse.de>,
Patrick Mochel <mochel@digitalimplant.org>,
airlied@linux.ie, linux-kernel@vger.kernel.org,
Adam Belay <ambx1@neo.rr.com>
Subject: Re: [patch 0/8] Nesting class_device patches that actually work
Date: Fri, 14 Oct 2005 12:02:30 -0500 [thread overview]
Message-ID: <d120d5000510141002v67a06900m219b47246c1d92c1@mail.gmail.com> (raw)
In-Reply-To: <20051014084554.GA19445@vrfy.org>
On 10/14/05, Kay Sievers <kay.sievers@vrfy.org> wrote:
> On Thu, Oct 13, 2005 at 04:35:25PM -0500, Dmitry Torokhov wrote:
> > On 10/13/05, Kay Sievers <kay.sievers@vrfy.org> wrote:
> > >
> > > The nesting classes implement a fraction of a device hierarchy in
> > > /sys/class. It moves arbitrary relation information into the class
> > > directory, where nothing else than device classification belongs.
> > > What is the rationale behind sticking device trees into class?
> > >
> > > Instead of that, I propose a unification of "/sys/devices-devices"
> > > and "class-devices". The differentiation of both does not make sense
> > > in a wold where we can't really tell if a device is hardware or virtual.
> > >
> > > We should model _all_ devices with its actual realationship in
> > > /sys/devices and /sys/class should only be a pinter to the actual
> > > devices in that place. Device like "mice", which have no parent, would
> > > sit at the top level of /sys/devices. All devices in /sys/class are
> > > only symlinks and never devices by itself.
> > > That way userspace can read all device relation at _one_ place in a sane
> > > way, and we keep the clean class interface to have easy access to all
> > > devices of a specific group.
> > > It gives us the right abstraction and is future proof, cause
> > > the class interface will not change when the relation between devices
> > > changes. The destinction between classes and buses would no longer be
> > > needed, and as we see in the "input" case never made sense anyway.
> > >
> > > /sys/class/block would look exactly like /sys/block today. The only
> > > difference is that there are symlinks to follow instead of class devices
> > > on its own. With every device creation we will get the whole dependency
> > > path of the device in the DEVPATH and a "classsification symlink" in
> > > /sys/class. The input devices are all clearly modeled in its hierarchy,
> > > in /sys/devices but we also get clean class interfaces:
> > >
> >
> > Kay eased my task by enumerating all issues I have with Greg's
> > approach. Not all the world is udev and not all class devices have
> > "/dev" represetation so haveing one program being able to understand
> > new sysfs hierarchy is not enough IHMO.
> >
> > However I do not think that "moving" class devices into /sys/devices
> > hierarchy is the right solution either because one physical device
> > could easily end up belonging to several classes.
>
> Sure, than that physical (while that distinction is silly by itself)
> will just have several child devices. Look at the mouse0 and event0 in
> the ascii drawing.
>
> > I recenty got an
> > e-mail from Adam Belay (whom I am pulling into the discussion)
> > regarding his desire to rearrange net/wireless representation. I think
> > it would be quite natural to have /sys/class/net/interfaces and
> > /sys/class/net/wireless /sys/class/net/irda, and /sys/class/net/wired
> > subclasses where "interfaces" would enumerate _all_ network interfaces
> > in the system, and the rest would show only devices of their class.
>
> That solution would keep a better device separation, sure. But it
> is completely incompatible with everything we ever had in sysfs and
> nobody wants to rewrite _all_ userspace programs.
>
Does anyone know how many of these we have? We are moving /sys/block
to /sys/class so many of these will require upgrades anyway. Could
libsysfs hide some of the changes? I have not looked at libsysfs at
all though...
Btw, is your proposal with moving it all into /sys/device less drastic?
> It invents artificial subclass names below a "master" class, which
> is absolutely not needed.
>
I really do not see why you think that "ieee1394_node" and
"ieee1394_transport" are natural names while "ieee1394/node" and
"ieee1394/transport" are "artificial".
> It creates the magic "interfaces" directory, which is confusing, cause
> it classifies devices by itself.
>
Why is "interfaces" is more magic than "wireless"? Is it just the name
that is confusing? We could call it "netifs", "netdevs", "devices" -
just pick a name you like better.
> It doesn't represent any relationship and hierarchy of devices and
> adding a forest of magic symlinks and "device" pointers is a very
> bad design. The proposed "inter-class" symlinks make it even harder
> to understand sysfs as it already is.
>
> The biggest problem with current sysfs is that the driver hacker has to
> decide if the device is "hardware" or "virtual" which in a lot of
> cases just can't tell and this distiction doesn't make any sense today.
>
Well, it is rather simple I think - if it works with hardware and
needs power management then it's a physical device. If it just a
kernel abstraction/API for group of similar objects then it is a class
device. Physical device can only have one driver, class device can
have several interfaces/views. So far we have input interfaces and
SCSI generic interface.
> All the more complex subsystems use "virtual buses" and an unconnected
> bunch of class-devices to model its sysfs represention, which is just
> to work around a major design flaw in sysfs!
Could you tell me which ones you consider virtual buses?
> We really should get _one_ device tree with its natural hierarchy, get
> rid of the stupid "device"-link, the PHYSDEVPATH and the unconnected
> class devices. Every device should just carry its dependency tree in
> it _own_ devpath!
>
> I'm very sure, we want a unified tree in /sys/devices, regardless of the type
> of device, to represent the global hierarchy wich is exactly what you want to
> know from a device tree!
> That way we stack "virtual" _and_ "physical" in a sane manner and at the same
> time get very clean class interfaces. We would stop to mix up "hierarchy" and
> "classes" all over the tree.
>
Having hierarchy in the /sys/devices is nice and I think I agree with it.
I don't think it will reslve any confusion for the coder WRT
physical/virtual devices - after all I think you just need to change
class_device kset from class's to devices and that will "move" the
object into the new spot in /sys tree.
However having class hierarchy spelled out is also nice because it
_does exist_. Right now we just encode it with common prefixes in the
class names.
--
Dmitry
next prev parent reply other threads:[~2005-10-14 17:02 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20051013014147.235668000@echidna.kroah.org>
2005-10-13 2:08 ` Greg KH
2005-10-13 2:10 ` Greg KH
2005-10-13 23:38 ` Kay Sievers
2005-10-13 2:10 ` [patch 1/8] Driver Core: add the ability for class_device structures to be nested Greg KH
2005-10-13 2:10 ` [patch 2/8] Driver Core: fix up all callers of class_device_create() Greg KH
2005-10-13 2:10 ` [patch 3/8] Driver Core: document struct class_device properly Greg KH
2005-10-13 2:10 ` [patch 4/8] input: register the input class device sooner Greg KH
2005-10-13 2:10 ` [patch 5/8] input: export input_dev_class so that input drivers can use it Greg KH
2005-10-13 2:10 ` [patch 6/8] input: move the input class devices under their new input_dev devices Greg KH
2005-10-13 2:11 ` [patch 7/8] input: remove the input_class structure, as it is unused Greg KH
2005-10-13 2:11 ` [patch 8/8] input: rename input_dev_class to input_class to be correct Greg KH
2005-10-13 6:38 ` [patch 0/8] Nesting class_device patches that actually work Vojtech Pavlik
2005-10-13 21:21 ` Dmitry Torokhov
2005-10-13 10:58 ` Kay Sievers
2005-10-13 21:35 ` Dmitry Torokhov
2005-10-13 23:37 ` Hannes Reinecke
2005-10-14 8:45 ` Kay Sievers
2005-10-14 12:14 ` Kay Sievers
2005-10-14 12:49 ` linux-os (Dick Johnson)
2005-10-14 13:49 ` Kay Sievers
2005-10-17 10:02 ` Vojtech Pavlik
2005-10-18 5:13 ` Dmitry Torokhov
2005-10-14 17:02 ` Dmitry Torokhov [this message]
2005-10-15 15:08 ` Kay Sievers
2005-10-17 5:41 ` Dmitry Torokhov
2005-10-17 21:44 ` Greg KH
2005-10-17 21:54 ` Dmitry Torokhov
2005-10-17 23:26 ` Adam Belay
2005-10-18 0:03 ` Kay Sievers
2005-10-17 23:24 ` Adam Belay
2005-10-17 23:44 ` Kay Sievers
2005-10-18 5:26 ` Greg KH
2005-10-18 7:18 ` Adam Belay
2005-10-18 7:54 ` Greg KH
2005-10-18 8:34 ` Vojtech Pavlik
2005-10-18 15:08 ` Kay Sievers
2005-10-18 15:41 ` Dmitry Torokhov
2005-10-18 6:04 ` Greg KH
2005-10-18 7:05 ` Greg KH
2005-10-18 7:35 ` Greg KH
2005-10-17 9:26 ` Vojtech Pavlik
2005-12-01 18:59 ` Patrick Mochel
2005-10-14 9:52 ` Christoph Hellwig
2005-10-14 16:36 ` Dmitry Torokhov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d120d5000510141002v67a06900m219b47246c1d92c1@mail.gmail.com \
--to=dmitry.torokhov@gmail.com \
--cc=airlied@linux.ie \
--cc=ambx1@neo.rr.com \
--cc=dtor_core@ameritech.net \
--cc=gregkh@suse.de \
--cc=hare@suse.de \
--cc=kay.sievers@vrfy.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mochel@digitalimplant.org \
--cc=vojtech@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®