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