Thread Functions

threads/thread.c implements several public functions for thread support. Let’s take a look at the most useful ones for this project:

void thread_init (void)

Called by main() to initialize the thread system. Its main purpose is to create a struct thread for PintOS’s initial thread. This is possible because the PintOS loader puts the initial thread’s stack at the top of a page, in the same position as any other PintOS thread.

Before thread_init() runs, thread_current() will fail because the running thread’s magic value is incorrect. Lots of functions call thread_current() directly or indirectly, including lock_acquire() for locking a lock, so thread_init() is called early in PintOS initialization.

struct thread *thread_current (void)

Returns the running thread.

void thread_exit (void) `NO_RETURN`

Causes the current thread to exit. Never returns, hence NO_RETURN.