diff options
author | Akinobu Mita <akinobu.mita@gmail.com> | 2019-09-29 17:18:49 +0300 |
---|---|---|
committer | Pavel <pavel@ucw.cz> | 2019-11-03 19:38:14 +0300 |
commit | 11f70002213774ed233950f71ea8803fa3700aa3 (patch) | |
tree | ba8c781e79c59e15456b49b1a363a15be74955c7 /drivers/leds/leds.h | |
parent | a2cafdfd8cf5ad8adda6c0ce44a59f46431edf02 (diff) | |
download | linux-11f70002213774ed233950f71ea8803fa3700aa3.tar.xz |
leds: remove PAGE_SIZE limit of /sys/class/leds/<led>/trigger
Reading /sys/class/leds/<led>/trigger returns all available LED triggers.
However, the size of this file is limited to PAGE_SIZE because of the
limitation for sysfs attribute.
Enabling LED CPU trigger on systems with thousands of CPUs easily hits
PAGE_SIZE limit, and makes it impossible to see all available LED triggers
and which trigger is currently activated.
We work around it here by converting /sys/class/leds/<led>/trigger to
binary attribute, which is not limited by length. This is _not_ good
design, do not copy it.
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Dan Murphy <dmurphy@ti.com>A
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
Diffstat (limited to 'drivers/leds/leds.h')
-rw-r--r-- | drivers/leds/leds.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/leds/leds.h b/drivers/leds/leds.h index 0b577cece8f7..2d9eb48bbed9 100644 --- a/drivers/leds/leds.h +++ b/drivers/leds/leds.h @@ -23,6 +23,12 @@ void led_set_brightness_nopm(struct led_classdev *led_cdev, enum led_brightness value); void led_set_brightness_nosleep(struct led_classdev *led_cdev, enum led_brightness value); +ssize_t led_trigger_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t pos, size_t count); +ssize_t led_trigger_write(struct file *filp, struct kobject *kobj, + struct bin_attribute *bin_attr, char *buf, + loff_t pos, size_t count); extern struct rw_semaphore leds_list_lock; extern struct list_head leds_list; |