On Thu, Jan 20, 2011 at 5:48 AM, Mulyadi Santosa <[email protected]>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 <[email protected]> > Date: Wed, Jan 19, 2011 at 20:23 > Subject: How to create "dev" files in sysfs? > To: [email protected] > > > 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/[email protected]/msg08461.html > http://www.mail-archive.com/[email protected]/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 > [email protected] > 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 > [email protected] > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
