extern asmlinkage long (*original_reboot)(int magic1, int magic2, unsigned int cmd, void __user *arg);
+static struct notifier_block dummy_notifier_reboot = {
+ .notifier_call = NULL,
+ .next = NULL,
+ .priority = INT_MAX
+};
+
+BLOCKING_NOTIFIER_HEAD(notifier_head);
+
+
void kernel_restart_prepare(char *cmd)
{
-#warning assuming kernel_restart_prepare is at 0xc00779cc
- void (*original_kernel_restart_prepare)(char *) = (void (*)(char *))0xc00779cc;
- return original_kernel_restart_prepare(cmd);
+ register_reboot_notifier(&dummy_notifier_reboot);
+ notifier_head.head=dummy_notifier_reboot.next;
+ unregister_reboot_notifier(&dummy_notifier_reboot);
+
+ blocking_notifier_call_chain(¬ifier_head, SYS_RESTART, cmd);
+ system_state = SYSTEM_RESTART;
+// device_shutdown();
+// sysdev_shutdown();
}
/*