lkml.org 
[lkml]   [2009]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: Class device namespaces
    From
    On Sun, Mar 29, 2009 at 17:48, Jean Delvare <khali@linux-fr.org> wrote:
    > I am a little confused by the directories created when one registers a
    > class device. When a class device is registered as the children of a
    > real device, a subdirectory by the class name is created, and the class
    > device is created there, effectively granting each class a separate
    > namespace. Example:
    >
    > /sys/devices/pci0000:00/0000:00:1f.3/i2c-adapter/i2c-0
    >
    > where 0000:00:1f.3 is the physical device, i2c-adapter the class name
    > and i2c-0 the class device.
    >
    > OTOH, if I create a class device as the children of another class
    > device, the class device is created directly, without a directory
    > between the parent and the child. Example:
    >
    > /sys/class/i2c-adapter/i2c-0/i2c-0
    >
    > where the first i2c-0 is an i2c-adapter class device, and the second
    > i2c-0 is an i2c-dev class device. I would have expected:
    >
    > /sys/class/i2c-adapter/i2c-0/i2c-dev/i2c-0
    >
    > The current behavior seems inconsistent to me. Is it done so on purpose,
    > or is this accidental? If on purpose, what's the reason?

    It's on purpose. The "glue" directory exists only between class
    devices and bus devices. There is no need for class devices to have
    such a "glue". When we moved the class devs as childs of the bus devs,
    people complained, that they could no longer rename their netif to
    "irq", because the name was already taken by a pci dev atrribute. :)

    > I am asking because this is causing trouble in practice. We have both
    > i2c-dev and firmware_class which try to create class devices by the
    > same name and this of course collides. While I would blame
    > firmware_class for coming up with an horrible naming scheme (or
    > actually, for not coming up with any naming scheme) it might still be a
    > good idea to prevent such collisions at the driver core level.

    You have multiple instances, which request a firmware file for the
    same parent device at the same time? Can't they request the firmware
    for the actual child instead of using the same parent?

    If the same parent needs to work, the firmware class needs to be fixed
    to allow that. Maybe it should use the requested firmware filename
    with the '/' translated to '!' as the name in sysfs, instead of the
    easy-to-have-a-clash device name of the parent?

    Thanks,
    Kay


    \
     
     \ /
      Last update: 2009-03-29 18:47    [W:2.443 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site