return 0;
}
-void machine_restart(void)
+void machine_restart(unsigned int delay_millisecs)
{
+ mdelay(delay_millisecs);
console_start_sync();
if (running_on_sim)
printk ("machine_restart called. spinning...\n");
#endif
-void machine_restart(void)
+static void __machine_restart(void *pdelay)
+{
+ machine_restart(*(unsigned int *)pdelay);
+}
+
+void machine_restart(unsigned int delay_millisecs)
{
int i;
if ( get_apic_id() != boot_cpu_physical_apicid )
{
/* Send IPI to the boot CPU (logical cpu 0). */
- on_selected_cpus(cpumask_of_cpu(0), (void *)machine_restart,
- NULL, 1, 0);
+ on_selected_cpus(cpumask_of_cpu(0), __machine_restart,
+ &delay_millisecs, 1, 0);
for ( ; ; )
halt();
}
static void halt_machine(unsigned char key, struct cpu_user_regs *regs)
{
printk("'%c' pressed -> rebooting machine\n", key);
- machine_restart();
+ machine_restart(0);
}
static void cpuset_print(char *set, int size, cpumask_t mask)
{
printk("rebooting machine in 5 seconds.\n");
watchdog_disable();
- mdelay(5000);
- machine_restart();
+ machine_restart(5000);
}
}
case SHUTDOWN_reboot:
{
printk("Domain 0 shutdown: rebooting machine.\n");
- machine_restart();
+ machine_restart(0);
break; /* not reached */
}
else
{
watchdog_disable();
- mdelay(5000);
- machine_restart();
+ machine_restart(5000);
}
}
void dom0_shutdown(u8 reason);
-void machine_restart(void);
+void machine_restart(unsigned int delay_millisecs);
void machine_halt(void);
void machine_power_off(void);