Re: UIO device name

Hans J. Koch
2008-09-24T10:22:57Z

On Wed, Sep 24, 2008 at 11:57:59AM +0200, Joakim Tjernlund wrote:
> On Wed, 2008-09-24 at 18:35 +0900, Paul Mundt wrote:
> > On Wed, Sep 24, 2008 at 11:21:33AM +0200, Joakim Tjernlund wrote:
> > > As far as I can see there isn't a way to name the /dev/uio%d device file
> > > to something more useful, is that so?
> > > I would like to name the device file from within the kernel so I can
> > > find the correct device from userspace.
> > > The very least is to control the minor(%d) number.
> > >
> > You have a couple of options for this:
> >
> > - the 'name' sysfs entry for each of the uio devices, which
> > corresponds to the uio device name.
> > - extracting the relevant data from things like 'lsuio'.
> > - hooking in the pretty mame through udev to create an alias.
>
> Right, but I want to do it from within the kernel when I create the
> device because that the only place I truly know what HW the uio maps to.

Set info->name to something that's useful for the userspace part of the
driver. You can create an individual string for each HW so userspace can
easily identify the devices. The string in info->name can be anything
you like, it's only used as info given in the "name" sysfs file.

>
> I found that this works:
> struct uio_info *info,
> struct uio_device *idev;
>
> idev = info->uio_dev;
> device_rename(idev->dev, "irq4");
>
> but then I have to copy the private uio_device struct from uio.c

That's a clear sign that the UIO authors didn't want people to do that
;-)

> Is there a better way to get at idev->dev?

No hackery, please. The "name" attribute is there for this purpose, use
it. Or use one of the other possibilities Paul mentioned.

Thanks,
Hans