X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fthreads%2Fthread.c;h=6eda28032b397f109cba706769a12a97788e9302;hb=2cfc156c39840ce7f1cda6b473de1322691a8a0b;hp=01ce7d33227a19196762199f3c349bab4890b688;hpb=7d4e3dda080a47db88616f1c0d975f2091be47f1;p=pintos-anon diff --git a/src/threads/thread.c b/src/threads/thread.c index 01ce7d3..6eda280 100644 --- a/src/threads/thread.c +++ b/src/threads/thread.c @@ -118,13 +118,15 @@ thread_print_stats (void) /* Creates a new kernel thread named NAME with the given initial PRIORITY, which executes FUNCTION passing AUX as the argument, - and adds it to the ready queue. If thread_start() has been - called, then the new thread may be scheduled before - thread_create() returns. It could even exit before - thread_create() returns. Use a semaphore or some other form - of synchronization if you need to ensure ordering. Returns - the thread identifier for the new thread, or TID_ERROR if - creation fails. + and adds it to the ready queue. Returns the thread identifier + for the new thread, or TID_ERROR if creation fails. + + If thread_start() has been called, then the new thread may be + scheduled before thread_create() returns. It could even exit + before thread_create() returns. Contrariwise, the original + thread may run for any amount of time before the new thread is + scheduled. Use a semaphore or some other form of + synchronization if you need to ensure ordering. The code provided sets the new thread's `priority' member to PRIORITY, but no actual priority scheduling is implemented. @@ -271,6 +273,20 @@ thread_yield (void) schedule (); intr_set_level (old_level); } + +/* Sets the current thread's priority to NEW_PRIORITY. */ +void +thread_set_priority (int new_priority) +{ + thread_current ()->priority = new_priority; +} + +/* Returns the current thread's priority. */ +int +thread_get_priority (void) +{ + return thread_current ()->priority; +} /* Idle thread. Executes when no other thread is ready to run. */ static void