X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fthreads%2Finit.c;h=d2d3e087de286cb8f5b48fd960d1568ae2d1cab4;hb=94d17ee9287aec1c4c9ee37ca02615e8293a5f3a;hp=01eec1120c923804083b747367b4e1a621ea5e19;hpb=a4e60364ebf69203297ce071914671d2b49d9b6d;p=pintos-anon diff --git a/src/threads/init.c b/src/threads/init.c index 01eec11..d2d3e08 100644 --- a/src/threads/init.c +++ b/src/threads/init.c @@ -38,7 +38,7 @@ #endif /* Amount of physical memory, in 4 kB pages. */ -size_t ram_pages; +size_t init_ram_pages; /* Page directory with kernel mappings only. */ uint32_t *init_page_dir; @@ -48,12 +48,6 @@ uint32_t *init_page_dir; static bool format_filesys; #endif -/* -q: Power off after kernel tasks complete? */ -bool power_off_when_done; - -/* -r: Reboot after kernel tasks complete? */ -static bool reboot_when_done; - /* -ul: Maximum number of pages to put into palloc's user pool. */ static size_t user_page_limit = SIZE_MAX; @@ -86,7 +80,8 @@ main (void) console_init (); /* Greet user. */ - printf ("Pintos booting with %'zu kB RAM...\n", ram_pages * PGSIZE / 1024); + printf ("Pintos booting with %'zu kB RAM...\n", + init_ram_pages * PGSIZE / 1024); /* Initialize memory system. */ palloc_init (user_page_limit); @@ -126,11 +121,7 @@ main (void) run_actions (argv); /* Finish up. */ - if (reboot_when_done) - shutdown_reboot (); - - if (power_off_when_done) - shutdown_power_off (); + shutdown (); thread_exit (); } @@ -148,7 +139,7 @@ ram_init (void) memset (&_start_bss, 0, &_end_bss - &_start_bss); /* Get RAM size from loader. See loader.S. */ - ram_pages = *(uint32_t *) ptov (LOADER_RAM_PGS); + init_ram_pages = *(uint32_t *) ptov (LOADER_RAM_PGS); } /* Populates the base page directory and page table with the @@ -169,7 +160,7 @@ paging_init (void) pd = init_page_dir = palloc_get_page (PAL_ASSERT | PAL_ZERO); pt = NULL; - for (page = 0; page < ram_pages; page++) + for (page = 0; page < init_ram_pages; page++) { uintptr_t paddr = page * PGSIZE; char *vaddr = ptov (paddr); @@ -243,9 +234,9 @@ parse_options (char **argv) if (!strcmp (name, "-h")) usage (); else if (!strcmp (name, "-q")) - power_off_when_done = true; + shutdown_configure (SHUTDOWN_POWER_OFF); else if (!strcmp (name, "-r")) - reboot_when_done = true; + shutdown_configure (SHUTDOWN_REBOOT); #ifdef FILESYS else if (!strcmp (name, "-f")) format_filesys = true;