diff options
author | dzwdz | 2022-04-11 23:00:21 +0200 |
---|---|---|
committer | dzwdz | 2022-04-11 23:00:21 +0200 |
commit | 4ebebf6d842e919db5c7499ee3b7cc738980cf25 (patch) | |
tree | adf25148781b089a003e51250c81413fe921cff1 /src/kernel/proc.c | |
parent | 5947b9c89b753b32d2e56b6c9ab2f62bbe09310b (diff) |
kernel: shutdown when init quits
thanks to this it's easier to power off - instead of waiting for all
processses to quit (which now involves writing `quit` both on serial and
ps/2), one of those can just somehow kill init.
currently this is just done by exiting from any shell - init will return
from await and exit too
Diffstat (limited to 'src/kernel/proc.c')
-rw-r--r-- | src/kernel/proc.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/kernel/proc.c b/src/kernel/proc.c index cf5bb1e..74660fa 100644 --- a/src/kernel/proc.c +++ b/src/kernel/proc.c @@ -137,6 +137,11 @@ void process_kill(struct process *proc, int ret) { proc->state = PS_DEAD; proc->death_msg = ret; process_try2collect(proc); + if (proc == process_first) { + tty_const("init killed, quitting..."); + mem_debugprint(); + cpu_shutdown(); + } } int process_try2collect(struct process *dead) { |