From: Dmitry Torokhov <dtor_core@ameritech.net>
To: Greg KH <gregkh@suse.de>
Cc: linux-kernel@vger.kernel.org, Kay Sievers <kay.sievers@vrfy.org>,
Vojtech Pavlik <vojtech@suse.cz>, Hannes Reinecke <hare@suse.de>,
Patrick Mochel <mochel@digitalimplant.org>,
airlied@linux.ie
Subject: Re: [RFC] subclasses in sysfs to solve world peace
Date: Thu, 15 Sep 2005 19:58:44 -0500 [thread overview]
Message-ID: <200509151958.45573.dtor_core@ameritech.net> (raw)
In-Reply-To: <20050916002036.GA6149@suse.de>
On Thursday 15 September 2005 19:20, Greg KH wrote:
> Ok, first off, I hate talking about architecture changes without showing
> the code for what I am talking about first, but as this is an issue that
> needs to be agreed upon by a wide range of developers, I'll just write
> up what I am thinking about doing before actually doing it...
>
> The problem: We need a way to show complex class and class device
> structures properly in sysfs. Examples of these "complex" views are the
> input layer's use of different input drivers for devices (usually the
> same device), the video subsystem view of frame buffer devices and
> monitors, and even the block layer with it's disks and partitions.
>
> Proposed solutions in the past have been either add the ability to nest
> classes themselves (as shown in Dmitry's recent proposal for fixing the
> input layer), or add the ability to nest class_device structures (I
> think others have tried to do this in the past, sorry for not
> remembering the specifics.) Both of these proposals don't really solve
> the real problem, that of the fact that we need to come up with a
> solution that all of the different subsystems can use properly.
>
> So, here's my take on it. Feel free to tell me what I messed up :)
>
> I would like to add something called "subclasses" for lack of a better
> term. These subclasses would have both drivers, and devices associated
> with them. This would show up as the following tree of directories:
>
> /sys/class/input/
> |-- input0
> | |-- event0
> | `-- mouse0
> |-- input1
> | |-- event1
> | `-- ts0
> |-- mice
> `-- drivers
> |-- event
> |-- mouse
> `-- ts
>
> Here we have 3 struct class_devices like today, input0, input1, and
> mice. We also have struct subclass_drivers of event, mouse, and ts.
> These will create the struct subclass_devices event0, mouse0, event1,
> and ts0. The "dev" node files will show up in the directories mice,
> event0, mouse0, event1, and ts0, like you would expect them too.
>
This proposed scheme does not answer the question: "what input interfaces
present in my system?". Input interfaces are objects in their own right
and deserve their own spot. Compare your picture with the one below:
[dtor@core ~]$ tree /sys/class/input/
/sys/class/input/
|-- devices
| |-- input0
| | |-- device -> ../../../../devices/platform/i8042/serio1
| | `-- event0 -> ../../../../class/input/interfaces/event0
| |-- input1
| | |-- device -> ../../../../devices/platform/i8042/serio0
| | |-- event1 -> ../../../../class/input/interfaces/event1
| | |-- mouse0 -> ../../../../class/input/interfaces/mouse0
| | `-- ts0 -> ../../../../class/input/interfaces/ts0
| `-- input2
| |-- device -> ../../../../devices/platform/i8042/serio0/serio2
| |-- event2 -> ../../../../class/input/interfaces/event2
| |-- mouse1 -> ../../../../class/input/interfaces/mouse1
| `-- ts1 -> ../../../../class/input/interfaces/ts1
`-- interfaces
|-- event0
| |-- dev
| `-- device -> ../../../../class/input/devices/input0
|-- event1
| |-- dev
| `-- device -> ../../../../class/input/devices/input1
|-- event2
| |-- dev
| `-- device -> ../../../../class/input/devices/input2
|-- mice
| `-- dev
|-- mouse0
| |-- dev
| `-- device -> ../../../../class/input/devices/input1
|-- mouse1
| |-- dev
| `-- device -> ../../../../class/input/devices/input2
|-- ts0
| |-- dev
| `-- device -> ../../../../class/input/devices/input1
`-- ts1
|-- dev
`-- device -> ../../../../class/input/devices/input2
Here you have exactly the same information as in your picture plus you can
see the other class (input interfaces) as well.
The only issue is that links between those class devices are created in
input core but we can solve it. We just need to allow class devices be
children of other class devices.
> So, this lets us create a solution for the input subsystem, but will it
> also work for block and video?
>
> For block, yes, I think so. There is no requirement for a
> subclass_driver to create the subclass devices. Any code can create and
> register with the class core a subclass device, just set up the parent
> pointer and away you go. So, in the following instance:
> /sys/class/block/
> `-- sda
> |-- sda1
> |-- sda2
> `-- sda3
>
Here is a different puzzle. Instead of adding interfaces to a device you
partition it. I don't think we need to mix those 2 tasks together.
--
Dmitry
next prev parent reply other threads:[~2005-09-16 0:58 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-16 0:20 [RFC] subclasses in sysfs to solve world peace Greg KH
2005-09-16 0:58 ` Dmitry Torokhov [this message]
2005-09-16 1:46 ` Kay Sievers
2005-09-16 1:58 ` Dmitry Torokhov
2005-09-16 21:54 ` Greg KH
2005-09-16 1:04 ` Kay Sievers
2005-09-16 1:23 ` Dmitry Torokhov
2005-09-16 1:54 ` Kay Sievers
2005-09-16 2:03 ` Dmitry Torokhov
2005-09-16 2:14 ` Kay Sievers
2005-09-16 2:36 ` Dmitry Torokhov
2005-09-16 2:43 ` Kay Sievers
2005-09-16 3:10 ` Dmitry Torokhov
2005-09-16 7:21 ` Dmitry Torokhov
2005-09-16 21:48 ` Greg KH
2005-09-16 22:55 ` Dmitry Torokhov
2005-09-16 8:02 ` Vojtech Pavlik
2005-09-16 15:44 ` Dmitry Torokhov
2005-09-16 21:50 ` Greg KH
2005-09-16 22:56 ` Dmitry Torokhov
2005-09-17 0:48 ` Dave Airlie
2005-09-16 21:49 ` Greg KH
2005-09-16 7:59 ` Vojtech Pavlik
2005-09-16 21:55 ` Greg KH
2005-09-16 22:45 ` Dmitry Torokhov
2005-09-17 0:20 ` Antonino A. Daplas
-- strict thread matches above, loose matches on Subject: below --
2005-09-16 1:45 David Lang
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=200509151958.45573.dtor_core@ameritech.net \
--to=dtor_core@ameritech.net \
--cc=airlied@linux.ie \
--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