Dynamic Sysfs Attribute Files
Tobias Boege
tobias at gambas-buch.de
Wed Apr 24 09:39:42 EDT 2013
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
More information about the Kernelnewbies
mailing list