X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fparisc%2Fled.c;h=3627a2d7f79feb3b701dceba05312e8079cbe002;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=bf00fa2537bbb6f8774611eb55481751bede4965;hpb=3944158a6d33f94668dbd6bdc32ff5c67bb53ec2;p=linux-2.6.git diff --git a/drivers/parisc/led.c b/drivers/parisc/led.c index bf00fa253..3627a2d7f 100644 --- a/drivers/parisc/led.c +++ b/drivers/parisc/led.c @@ -23,6 +23,7 @@ * David Pye */ +#include #include #include /* for offsetof() */ #include @@ -410,17 +411,16 @@ static __inline__ int led_get_net_activity(void) static __inline__ int led_get_diskio_activity(void) { static unsigned long last_pgpgin, last_pgpgout; - unsigned long events[NR_VM_EVENT_ITEMS]; + struct page_state pgstat; int changed; - all_vm_events(events); + get_full_page_state(&pgstat); /* get no of sectors in & out */ /* Just use a very simple calculation here. Do not care about overflow, since we only want to know if there was activity or not. */ - changed = (events[PGPGIN] != last_pgpgin) || - (events[PGPGOUT] != last_pgpgout); - last_pgpgin = events[PGPGIN]; - last_pgpgout = events[PGPGOUT]; + changed = (pgstat.pgpgin != last_pgpgin) || (pgstat.pgpgout != last_pgpgout); + last_pgpgin = pgstat.pgpgin; + last_pgpgout = pgstat.pgpgout; return (changed ? LED_DISK_IO : 0); } @@ -499,16 +499,11 @@ static int led_halt(struct notifier_block *, unsigned long, void *); static struct notifier_block led_notifier = { .notifier_call = led_halt, }; -static int notifier_disabled = 0; static int led_halt(struct notifier_block *nb, unsigned long event, void *buf) { char *txt; - - if (notifier_disabled) - return NOTIFY_OK; - - notifier_disabled = 1; + switch (event) { case SYS_RESTART: txt = "SYSTEM RESTART"; break; @@ -532,6 +527,7 @@ static int led_halt(struct notifier_block *nb, unsigned long event, void *buf) if (led_func_ptr) led_func_ptr(0xff); /* turn all LEDs ON */ + unregister_reboot_notifier(&led_notifier); return NOTIFY_OK; } @@ -762,12 +758,6 @@ not_found: return 1; } -static void __exit led_exit(void) -{ - unregister_reboot_notifier(&led_notifier); - return; -} - #ifdef CONFIG_PROC_FS module_init(led_create_procfs) #endif