- power_off ();
-}
-
-
-/* Powers down the machine we're running on,
- as long as we're running on Bochs or QEMU. */
-void
-power_off (void)
-{
- const char s[] = "Shutdown";
- const char *p;
-
-#ifdef FILESYS
- filesys_done ();
-#endif
-
- print_stats ();
-
- printf ("Powering off...\n");
- serial_flush ();
-
- for (p = s; *p != '\0'; p++)
- outb (0x8900, *p);
- asm volatile ("cli; hlt" : : : "memory");
- printf ("still running...\n");
- for (;;);
-}
-
-/* Print statistics about Pintos execution. */
-static void
-print_stats (void)
-{
- timer_print_stats ();
- thread_print_stats ();
-#ifdef FILESYS
- disk_print_stats ();
-#endif
- console_print_stats ();
- kbd_print_stats ();
-#ifdef USERPROG
- exception_print_stats ();
-#endif