Re: "reboot" detection ...

Peter Hüwe <[email protected]>
Newsgroups org.kernel.vger.linux-newbie,org.kernel.vger.linux-c-programming
Message-ID <[email protected]>
> Is there any way to find that the machine is rebooting.  ?
> 
> Say,  i issued  a "reboot" command in one of the Konsole shell. Is
> there any way to detect this trigger in kernel space or in userspace ?
> Any clue is really appreciated .


Hi ratheesh,

in the kernel it's pretty easy.
Simply use register_reboot_notifier from kernel/sys.c and you'll get notified 
(via a callback you register) when the system gets rebooted.

You can use this stub driver as a reference (not actually tested):
--- 
#include <linux/module.h>
#include <linux/notifier.h>
#include <linux/reboot.h>

static int my_reboot_callback(struct notifier_block *self,
				unsigned long val,
				void *data){
	if (val == SYS_RESTART)
		pr_debug("We're rebooting\n");
	return NOTIFY_DONE;
}

static struct notifier_block my_reboot_notifier = {
	.notifier_call = my_reboot_callback,
};

static int __init my_reboot_init(void)
{
	return register_reboot_notifier(&my_reboot_notifier);
}

static void __exit my_reboot_exit(void)
{
	register_reboot_notifier(&my_reboot_notifier);
}

module_init(my_reboot_init);
module_exit(my_reboot_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Peter Huewe <[email protected]>");

---
regards,
Peter
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.