X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fuserprog%2Fprocess.c;h=c0e521553f994dcc2f01004a3b4c28bedc2accb7;hb=594421de07283cdf4cce7226eb2c468c7ea2fedd;hp=675dc254af3db38cfea22ec26d77250aeb9206a9;hpb=49c19e58aa14fba779bfe331b1ebaba62d31dfa5;p=pintos-anon diff --git a/src/userprog/process.c b/src/userprog/process.c index 675dc25..c0e5215 100644 --- a/src/userprog/process.c +++ b/src/userprog/process.c @@ -18,7 +18,7 @@ #include "threads/thread.h" #include "threads/vaddr.h" -static thread_func execute_thread NO_RETURN; +static thread_func start_process NO_RETURN; static bool load (const char *cmdline, void (**eip) (void), void **esp); /* Starts a new thread running a user program loaded from @@ -39,7 +39,7 @@ process_execute (const char *file_name) strlcpy (fn_copy, file_name, PGSIZE); /* Create a new thread to execute FILE_NAME. */ - tid = thread_create (file_name, PRI_DEFAULT, execute_thread, fn_copy); + tid = thread_create (file_name, PRI_DEFAULT, start_process, fn_copy); if (tid == TID_ERROR) palloc_free_page (fn_copy); return tid; @@ -48,7 +48,7 @@ process_execute (const char *file_name) /* A thread function that loads a user process and starts it running. */ static void -execute_thread (void *file_name_) +start_process (void *file_name_) { char *file_name = file_name_; struct intr_frame if_; @@ -117,7 +117,8 @@ process_exit (void) } /* Sets up the CPU for running user code in the current - thread. */ + thread. + This function is called on every context switch. */ void process_activate (void) { @@ -128,7 +129,7 @@ process_activate (void) /* Set thread's kernel stack for use in processing interrupts. */ - tss_set_esp0 ((uint8_t *) t + PGSIZE); + tss_update (); } /* We load ELF binaries. The following definitions are taken