Я нашел способ доступа / управления светодиодами из пространства ядра - путем создания собственного триггера светодиодов. Он не дает возможности перечислять доступные устройства, и требует, чтобы пользовательский триггер был назначен для светодиода из пространства пользователя путем записи в / sys / class / leds / foo / trigger. Но это позволяет вам манипулировать светодиодами из кода ядра после назначения триггера.
struct led_trigger *trigger;
...
led_trigger_register_simple("myled", &trigger); //create and register the trigger
...
//assign the trigger "myled" to the desired LED(s) from user-space
//by writing to the corresponding trigger files in /sys/class/leds/foo/
...
led_trigger_event(trigger, LED_FULL); //turn-on the LED(s) connected to the trigger
led_trigger_event(trigger, LED_OFF); //turn-off
Создание и регистрация триггера могут быть выполнены, например, в модуле init. Также, если нужно независимо управлять несколькими светодиодами, то, насколько я вижу, нужно создавать отдельные триггеры для каждого светодиода.