On Fri, 2017-01-06 at 07:07 +0100, Michał Kępień wrote:
Add a new "global" (i.e. not per-rfkill device) LED trigger, rfkill-
any,
which may be useful on laptops with a single "radio LED" and multiple
radio transmitters. The trigger is meant to turn a LED on whenever
there is at least one radio transmitter active and turn it off
otherwise.
Signed-off-by: Michał Kępień <redacted>
---
Changes from v3:
- Revert introducing a new bitfield and instead defer LED event
firing
to a work queue to prevent conditional locking and ensure the
trigger can really be used from any context. This also voids the
need to take rfkill_global_mutex before calling
rfkill_set_block()
in rfkill_resume().
Looks better, but
+static struct work_struct rfkill_any_work;
At least on module exit you need to cancel this work.
johannes
On Fri, 2017-01-06 at 07:07 +0100, Michał Kępień wrote:
quoted
Add a new "global" (i.e. not per-rfkill device) LED trigger, rfkill-
any,
which may be useful on laptops with a single "radio LED" and multiple
radio transmitters. The trigger is meant to turn a LED on whenever
there is at least one radio transmitter active and turn it off
otherwise.
Signed-off-by: Michał Kępień <redacted>
---
Changes from v3:
- Revert introducing a new bitfield and instead defer LED event
firing
to a work queue to prevent conditional locking and ensure the
trigger can really be used from any context. This also voids the
need to take rfkill_global_mutex before calling
rfkill_set_block()
in rfkill_resume().
Looks better, but
quoted
+static struct work_struct rfkill_any_work;
At least on module exit you need to cancel this work.
It is cancelled in rfkill_any_led_trigger_unregister(). It seemed
fitting to do it this way as rfkill_any_work is initialized in
rfkill_any_led_trigger_register(). And if CONFIG_RFKILL_LEDS=n,
rfkill_any_work is neither initialized nor scheduled, so we should be
good as well. Am I missing something?
--
Best regards,
Michał Kępień