The process struct
The skeleton definition of struct process
is copied below for your convenience.
/* The process control block for a given process. Since
there can be multiple threads per process, we need a separate
PCB from the TCB. All TCBs in a process will have a pointer
to the PCB, and the PCB will have a pointer to the main thread
of the process, which is `special`. */
struct process {
/* Owned by process.c. */
uint32_t* pagedir; /* Page directory. */
char process_name[16]; /* Name of the main thread */
struct thread* main_thread; /* Pointer to main thread */
};