diff --git a/src/threads/thread.c b/src/threads/thread.c index 30ca2bd..2d931e2 100644 --- a/src/threads/thread.c +++ b/src/threads/thread.c @@ -70,6 +70,9 @@ static void *alloc_frame (struct thread *, size_t size); static void schedule (void); void thread_schedule_tail (struct thread *prev); static tid_t allocate_tid (void); +static bool priority_more (const struct list_elem *a_, + const struct list_elem *b_, + void *aux UNUSED) /* Initializes the threading system by transforming the code that's currently running into a thread. This can't work in @@ -350,6 +353,19 @@ thread_foreach (thread_action_func *func, void *aux) } } +/* Function that compares the two threads associated with the provided + list_elem structures. Returns true if the thread associated with a_ has + a higher priority than that of b_. */ +static bool +priority_more (const struct list_elem *a_, const struct list_elem *b_, + void *aux UNUSED) +{ + struct thread *a = list_entry (a_, struct thread, elem); + struct thread *b = list_entry (b_, struct thread, elem); + + return a->priority > b->priority; +} + /* Sets the current thread's priority to NEW_PRIORITY. */ void thread_set_priority (int new_priority)