Guys... I believe it's one of the sample of a question that is well structured. ---------- Forwarded message ---------- From: Arvid Brodin <arvid.brodin@xxxxxxxx> Date: Wed, Jan 19, 2011 at 20:23 Subject: How to create "dev" files in sysfs? To: kernelnewbies@xxxxxxxxxxxxxxxxx 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@xxxxxxxxxxxx/msg08461.html http://www.mail-archive.com/kernelnewbies@xxxxxxxxxxxx/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@xxxxxxxxxxxxxxxxx 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@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies