#include #include #include #include #include #include __attribute__((noreturn)) void syscall_exit(context_t *context, int status) { thread_t *thread = _cpu()->thread; proc_t *proc = thread->proc; __assert(proc != sched_initproc); __assert(spinlock_try(&proc->exiting)); // only one thread can exit at the same time sched_stopotherthreads(); proc->status = status; sched_threadexit(); }