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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux