public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: Dmitry Torokhov <dtor_core@ameritech.net>,
	Kay Sievers <kay.sievers@vrfy.org>,
	Vojtech Pavlik <vojtech@suse.cz>, Hannes Reinecke <hare@suse.de>,
	Patrick Mochel <mochel@digitalimplant.org>,
	airlied@linux.ie
Cc: linux-kernel@vger.kernel.org
Subject: [patch 0/8] Nesting class_device patches that actually work
Date: Wed, 12 Oct 2005 19:08:44 -0700	[thread overview]
Message-ID: <20051013020844.GA31732@kroah.com> (raw)

Ok, finally.  Here's a set of _working_ patches that properly implement
nesting class_device structures, and the follow-on patches to move the
input subsystem to use them.  Hotplug and release functions work
properly now, and this will let us move /sys/block/ to use class and
class_device structures soon.

The input patches are on top of almost all of Dmitry's input patches.
All of them are together in one series in my public patches at:
	kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
and should show up in the next -mm release.

The sysfs tree looks the same as it did last time, but now hotplug works
properly for addition and removal, and we actually free the memory used
:)

For those that don't remember, here's the sysfs tree on my desktop:
$ tree /sys/class/input/ -d
/sys/class/input/
|-- input0
|   |-- capabilities
|   |-- event0
|   `-- id
|-- input1
|   |-- capabilities
|   |-- device -> ../../../devices/platform/i8042/serio1
|   |-- event1
|   |   `-- device -> ../../../../devices/platform/i8042/serio1
|   `-- id
|-- input3
|   |-- capabilities
|   |-- device -> ../../../devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0
|   |-- event2
|   |   `-- device -> ../../../../devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0
|   |-- id
|   |-- mouse0
|   |   `-- device -> ../../../../devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0
|   `-- ts0
|       `-- device -> ../../../../devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0
`-- mice

To answer the remaining questions from the last thread:

Q: how are you going to determine what is really a class_dev and what
   isn't, as there's no way to tell.
A: Who cares?  Seriously, tools like udev will watch for the "dev" file
   to be able create the required device node, and it will be the one
   getting the hotplug event.  attribute groups do not generate hotplug
   events, and you should not be having a file called "dev" in your
   attribute group anyway.

Q: why does event2, mouse0, and input3 in the above tree all have the
   same "device" symlink?
A: userspace tools expect that symlink there.  They do not know that if
   you traverse up a directory, and look at the symlink there, that's
   what the subdirectory points to too.  That would be a mess.  And, as
   those different class_device structures really are all bound to that
   same struct device, that is the proper representation of this.

Q: How can you determine between input interfaces and input devices?
A: input devices have a "dev" file.  And what really does userspace need
   to know here?

Q: Wait, what about nesting struct class instead?  That would work,
   right?
A: No, nesting classes is not going to happen.  Classes are "major"
   things, and aren't related to each other (well, some are by their
   name only, like the different "scsi*" classes, but to the user, they
   are separate.)
   Also, we can't emulate /sys/block with nested classes.  And no, we
   can't change this to be /sys/class/block/partitions and
   /sys/class/block/devices without almost every sysfs user complaining
   loudly.  That's not the real representation of the devices, and we
   need to really try to keep backward compatibility where we possibly
   can.

Ok, I think that covers everything.

Oh, one final thing.  I really don't think that input should be a class.
It looks like a "bus" and acts like a "bus" (you have different devices
that have different drivers bind to them, and you want to load those
drivers with the hotplug mechanism.)  The only thing keeping this from
being a bus is the fact that we can't bind multiple drivers to a single
device these days, and I can't see a way to move this code to that
model, so oh well...

thanks,

greg k-h

             reply	other threads:[~2005-10-13  2:11 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 [this message]
2005-10-13  2:10   ` [patch 0/8] Nesting class_device patches that actually work 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
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=20051013020844.GA31732@kroah.com \
    --to=gregkh@suse.de \
    --cc=airlied@linux.ie \
    --cc=dtor_core@ameritech.net \
    --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