summaryrefslogtreecommitdiff
path: root/src/kernel/proc.c
diff options
context:
space:
mode:
authordzwdz2022-04-11 23:00:21 +0200
committerdzwdz2022-04-11 23:00:21 +0200
commit4ebebf6d842e919db5c7499ee3b7cc738980cf25 (patch)
treeadf25148781b089a003e51250c81413fe921cff1 /src/kernel/proc.c
parent5947b9c89b753b32d2e56b6c9ab2f62bbe09310b (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.c5
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) {