/*===========================================================================* * shutdown * *===========================================================================*/ void minix_shutdown(minix_timer_t *tp) { /* This function is called from prepare_shutdown or stop_sequence to bring * down MINIX. */ int how; #ifdef CONFIG_SMP /* * FIXME * * we will need to stop timers on all cpus if SMP is enabled and put them in * such a state that we can perform the whole boot process once restarted from * monitor again */ if (ncpus > 1) smp_shutdown_aps(); #endif hw_intr_disable_all(); stop_local_timer(); how = tp ? tmr_arg(tp)->ta_int : 0; /* Show shutdown message */ direct_cls(); if((how & RB_POWERDOWN) == RB_POWERDOWN) direct_print("MINIX has halted and will now power off.\n"); else if(how & RB_HALT) direct_print("MINIX has halted. " "It is safe to turn off your computer.\n"); else direct_print("MINIX will now reset.\n"); arch_shutdown(how); }
/*===========================================================================* * shutdown * *===========================================================================*/ void minix_shutdown(timer_t *tp) { /* This function is called from prepare_shutdown or stop_sequence to bring * down MINIX. How to shutdown is in the argument: RBT_HALT (return to the * monitor), RBT_RESET (hard reset). */ int how; #ifdef CONFIG_SMP /* * FIXME * * we will need to stop timers on all cpus if SMP is enabled and put them in * such a state that we can perform the whole boot process once restarted from * monitor again */ if (ncpus > 1) smp_shutdown_aps(); #endif hw_intr_disable_all(); stop_local_timer(); how = tp ? tmr_arg(tp)->ta_int : RBT_PANIC; /* Show shutdown message */ direct_cls(); switch(how) { case RBT_HALT: direct_print("MINIX has halted. " "It is safe to turn off your computer.\n"); break; case RBT_POWEROFF: direct_print("MINIX has halted and will now power off.\n"); break; case RBT_DEFAULT: case RBT_REBOOT: case RBT_RESET: default: direct_print("MINIX will now reset.\n"); break; } arch_shutdown(how); }
/*===========================================================================* * shutdown * *===========================================================================*/ void minix_shutdown(timer_t *tp) { /* This function is called from prepare_shutdown or stop_sequence to bring * down MINIX. How to shutdown is in the argument: RBT_HALT (return to the * monitor), RBT_MONITOR (execute given code), RBT_RESET (hard reset). */ #ifdef CONFIG_SMP /* * FIXME * * we will need to stop timers on all cpus if SMP is enabled and put them in * such a state that we can perform the whole boot process once restarted from * monitor again */ if (ncpus > 1) smp_shutdown_aps(); #endif hw_intr_disable_all(); stop_local_timer(); arch_shutdown(tp ? tmr_arg(tp)->ta_int : RBT_PANIC); }