diff --git a/kernel-src/include/kernel/proc.h b/kernel-src/include/kernel/proc.h index eb8fca98..2f38f60f 100644 --- a/kernel-src/include/kernel/proc.h +++ b/kernel-src/include/kernel/proc.h @@ -47,6 +47,7 @@ typedef struct proc_t { struct fd_t *fd; mode_t umask; int flags; + bool console_locked; vnode_t *cwd; vnode_t *root; spinlock_t nodeslock; diff --git a/kernel-src/sys/proc.c b/kernel-src/sys/proc.c index f9c453aa..acaa97ff 100644 --- a/kernel-src/sys/proc.c +++ b/kernel-src/sys/proc.c @@ -9,6 +9,7 @@ #include #include #include +#include static hashtable_t pid_table; static scache_t *processcache; @@ -296,6 +297,10 @@ void proc_exit(void) { itimer_pause(&proc->timer.virtualtime, NULL, NULL); itimer_pause(&proc->timer.profiling, NULL, NULL); + if (__atomic_load_n(&proc->console_locked, __ATOMIC_RELAXED)) { + __assert(console_set_lock(false) == 0); + } + // zombify the proc MUTEX_ACQUIRE(&proc->mutex);