Sample of quite well structured question (Fwd: How to create "dev" files in sysfs?)

Anuz Pratap Singh Tomar chambilkethakur at gmail.com
Thu Jan 20 00:57:42 EST 2011


On Thu, Jan 20, 2011 at 5:48 AM, Mulyadi Santosa
<mulyadi.santosa at gmail.com>wrote:

> Guys...
>
> I believe it's one of the sample of a question that is well structured.
>
> Thanks Mulyadi,
I guess this can be put on newbies page, it its not already there.


>
> ---------- Forwarded message ----------
> From: Arvid Brodin <arvid.brodin at enea.com>
> Date: Wed, Jan 19, 2011 at 20:23
> Subject: How to create "dev" files in sysfs?
> To: kernelnewbies at kernelnewbies.org
>
>
> Hello,
>
> How do I make my platform device a character device that
> can be handled by udev?
>
> Background:
>
> I've written a driver for a very simple platform device (a jumper
> connected to an input pin on the processor). Today I can read the status
> of the pin through a driver attribute file in sysfs at:
>
> /sys/devices/platform/msel/
>
> As a learning experience I want to get udev to detect this device and
> create a character device file under /dev for it, that I could read to
> get the pin status. If I understand correctly, udev looks for files
> named "dev" in sysfs, which contains the major and minor device numbers
> which udev use to create the device node.
>
>  From the kernel code it seems that ((struct platform_device *)
> my_platform_device)->dev->devt would have to be set to contain the major
> & minor device numbers when the device is created for a "dev" file to
> appear, which is not possible in this case since the device is
> registered in board setup code where it seems wrong to get device
> numbers by calling call alloc_chrdev_region() (right?).
>
> I found a few previous questions about this same problem in these
> kernelnewbies threads:
>
> http://www.mail-archive.com/kernelnewbies@nl.linux.org/msg08461.html
> http://www.mail-archive.com/kernelnewbies@nl.linux.org/msg06807.html
>
> Using that info, and looking at the hpet driver code, I initialised a
> struct miscdevice and called misc_register(). This gives me a
> /sys/class/misc/msel_chrdev/ folder with the required dev and
> uevent files. udev also picks up this and creates the corresponding file
> in /dev.
>
>
> Is this the correct way to do this? One "device" for the hardware and
> one or more "devices" for the userland interface(s)? Also, looking at my
> desktop system, there's one device under /sys/devices/platform that also
> has "dev" files:
>
> /sys/devices/platform/serial8250/tty/ttyS1/dev
> /sys/devices/platform/serial8250/tty/ttyS2/dev
> /sys/devices/platform/serial8250/tty/ttyS3/dev
>
> I notice that these "dev" files appear as subfolders under the platform
> device's own folder, and not under /sys/class/. Perhaps this is more
> correct? The source for 8250 is ~223K in 14 different files so I have
> not been able to decode how they do this.
>
> (Please CC me directly if you respond!)
>
> Thanks for reading all this,
> Arvid Brodin
> Enea Services Stockholm AB
>
>
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
>
>
> --
> regards,
>
> Mulyadi Santosa
> Freelance Linux trainer and consultant
>
> blog: the-hydra.blogspot.com
> training: mulyaditraining.blogspot.com
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110120/d775c776/attachment.html 


More information about the Kernelnewbies mailing list