-/* Creates a new kernel thread named NAME, 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. Use a
- semaphore or some other form of synchronization if you need to
- ensure ordering. */
-struct thread *
-thread_create (const char *name, thread_func *function, void *aux)
+/* 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.
+
+ The code provided sets the new thread's `priority' member to
+ PRIORITY, but no actual priority scheduling is implemented.
+ Priority scheduling is the goal of Problem 1-3. */
+tid_t
+thread_create (const char *name, int priority,
+ thread_func *function, void *aux)