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)
main()to initialize the thread system. Its main purpose is to create a
struct threadfor 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.
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