diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/init/main.c | 6 | ||||
-rw-r--r-- | src/kernel/proc.c | 5 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/init/main.c b/src/init/main.c index 200d8bd..b5ef22f 100644 --- a/src/init/main.c +++ b/src/init/main.c @@ -56,10 +56,8 @@ int main(void) { __stdout = _syscall_open(argify("/com1")); if (__stdout < 0) __stdout = _syscall_open(argify("/vga_tty")); - for (;;) { - _syscall_await(); - printf("init: something quit\n"); - } + _syscall_await(); + printf("init: something quit\n"); _syscall_exit(0); } 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) { |