From mboxrd@z Thu Jan 1 00:00:00 1970 From: tobias@gambas-buch.de (Tobias Boege) Date: Wed, 24 Apr 2013 15:39:42 +0200 Subject: Dynamic Sysfs Attribute Files In-Reply-To: References: Message-ID: <20130424133942.GD510@aurora> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org On Wed, 24 Apr 2013, Matt Davis wrote: > Hello, > I want my kernel module to dynamically add sysfs files for its > corresponding device. Without going into detail, the attribute file > will be named something like: /sys/class/myclass/mydev0/fileX where > 'X' is an integer ranging from 1-256. I did not see anything in the > api to allow this. I suppose I could just dynamically allocate an > attribute, give it the unique name by tacking on my own integer, and > pass that off to device_create_file(). However, I have not seen > anywhere in the codebase where another module does this; I assume it > is not allowed (or there is a better solution). > > The other solution (instead of sysfs) would be to add an ioctl, but > this means the userland application must know the specific 'file' id > to query. In the sysfs version above, the userland application can > just grab the directory listing of /sys/class/myclaass/mydev0/ and see > how many 'file' instances exist. > > -Matt Hmm, the following led some places on my system: $ shopt -s extglob $ find /sys/!(module|kernel) -name "*[0-9]" ... /sys/firmware/acpi/interrupts/gpe00 /sys/firmware/acpi/interrupts/gpe01 /sys/firmware/acpi/interrupts/gpe02 /sys/firmware/acpi/interrupts/gpe03 /sys/firmware/acpi/interrupts/gpe04 /sys/firmware/acpi/interrupts/gpe05 ... >>From a quick grep, the source _may_ be somewhere around drivers/acpi/sysfs.c: 658 sprintf(buffer, "gpe%02X", i); Hope this helps you further. Regards, Tobi