The thread_exit function implements the machine independent prelude to a thread shutdown. It will not return, and will result in a call to mi_switch(9) to schedule some other thread.
thread_exit arranges to free all the resources of the thread, specifically the kernel stack.
To protect the runqueue(9), thread_exit must be called with the sched_lock mutex held.
mi_switch(9), msleep(9), mutex(9), runqueue(9)