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)
{
- 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();
+#warning assuming kernel_restart_prepare is at 0xc00779cc
+ void (*original_kernel_restart_prepare)(char *) = (void (*)(char *))0xc00779cc;
+ return original_kernel_restart_prepare(cmd);
}
/*