-/* Creates a new kernel thread named NAME, which executes
- FUNCTION passing AUX as the argument. The thread is added to
- the ready queue. Thus, it may be scheduled even before
- thread_create() returns. If you need to ensure ordering, then
- use synchronization, such as a semaphore. */
-struct thread *
-thread_create (const char *name, void (*function) (void *aux), 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)