X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fthreads%2Finit.c;h=9774493d9e31f8af5687d421d3f0d987e17f389f;hb=746e40c7342362a47f88d06e8147a2d5d5c19fff;hp=26b9345879c1848ce1d7321ea6e68160854e022f;hpb=b4731555b30c891d6b833e6e270e9267458f5f44;p=pintos-anon diff --git a/src/threads/init.c b/src/threads/init.c index 26b9345..9774493 100644 --- a/src/threads/init.c +++ b/src/threads/init.c @@ -55,6 +55,7 @@ static bool do_power_off; static void ram_init (void); static void paging_init (void); static void argv_init (void); +static void print_stats (void); int main (void) NO_RETURN; @@ -112,8 +113,13 @@ main (void) /* Run a user program. */ if (initial_program != NULL) { + tid_t tid; printf ("\nExecuting '%s':\n", initial_program); - process_execute (initial_program); + tid = process_execute (initial_program); +#ifdef THREAD_JOIN_IMPLEMENTED + if (tid != TID_ERROR) + thread_join (tid); +#endif } #else test (); @@ -158,7 +164,7 @@ paging_init (void) uint32_t *pd, *pt; size_t page; - pd = base_page_dir = palloc_get (PAL_ASSERT | PAL_ZERO); + pd = base_page_dir = palloc_get_page (PAL_ASSERT | PAL_ZERO); pt = NULL; for (page = 0; page < ram_pages; page++) { @@ -169,7 +175,7 @@ paging_init (void) if (pd[pde_idx] == 0) { - pt = palloc_get (PAL_ASSERT | PAL_ZERO); + pt = palloc_get_page (PAL_ASSERT | PAL_ZERO); pd[pde_idx] = pde_create (pt); } @@ -277,6 +283,8 @@ power_off (void) filesys_done (); #endif + print_stats (); + printf ("Powering off...\n"); serial_flush (); @@ -284,3 +292,19 @@ power_off (void) outb (0x8900, *p); 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 +}