leds: heartbeat: stop on shutdown
A halted kernel should not show a heartbeat. [akpm@linux-foundation.org: checkpatch fixes] Signed-off-by: Alexander Holler <holler@ahsoftware.de> Cc: Shuah Khan <shuahkhan@gmail.com> Cc: Richard Purdie <rpurdie@rpsys.net> Cc: Bryan Wu <bryan.wu@canonical.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>hifive-unleashed-5.1
parent
6335f8fa97
commit
49dca5aebf
|
@ -18,6 +18,7 @@
|
||||||
#include <linux/timer.h>
|
#include <linux/timer.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/leds.h>
|
#include <linux/leds.h>
|
||||||
|
#include <linux/reboot.h>
|
||||||
#include "leds.h"
|
#include "leds.h"
|
||||||
|
|
||||||
struct heartbeat_trig_data {
|
struct heartbeat_trig_data {
|
||||||
|
@ -103,13 +104,38 @@ static struct led_trigger heartbeat_led_trigger = {
|
||||||
.deactivate = heartbeat_trig_deactivate,
|
.deactivate = heartbeat_trig_deactivate,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int heartbeat_reboot_notifier(struct notifier_block *nb,
|
||||||
|
unsigned long code, void *unused)
|
||||||
|
{
|
||||||
|
led_trigger_unregister(&heartbeat_led_trigger);
|
||||||
|
return NOTIFY_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct notifier_block heartbeat_reboot_nb = {
|
||||||
|
.notifier_call = heartbeat_reboot_notifier,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct notifier_block heartbeat_panic_nb = {
|
||||||
|
.notifier_call = heartbeat_reboot_notifier,
|
||||||
|
};
|
||||||
|
|
||||||
static int __init heartbeat_trig_init(void)
|
static int __init heartbeat_trig_init(void)
|
||||||
{
|
{
|
||||||
return led_trigger_register(&heartbeat_led_trigger);
|
int rc = led_trigger_register(&heartbeat_led_trigger);
|
||||||
|
|
||||||
|
if (!rc) {
|
||||||
|
atomic_notifier_chain_register(&panic_notifier_list,
|
||||||
|
&heartbeat_panic_nb);
|
||||||
|
register_reboot_notifier(&heartbeat_reboot_nb);
|
||||||
|
}
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit heartbeat_trig_exit(void)
|
static void __exit heartbeat_trig_exit(void)
|
||||||
{
|
{
|
||||||
|
unregister_reboot_notifier(&heartbeat_reboot_nb);
|
||||||
|
atomic_notifier_chain_unregister(&panic_notifier_list,
|
||||||
|
&heartbeat_panic_nb);
|
||||||
led_trigger_unregister(&heartbeat_led_trigger);
|
led_trigger_unregister(&heartbeat_led_trigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue