X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/191c47396747e54457510c7e126b6ba098fefbbd..db4d7d52fa00cc2fd3f25d971f57b73406d816ba:/lunaix-os/kernel/lxinit.c diff --git a/lunaix-os/kernel/lxinit.c b/lunaix-os/kernel/lxinit.c index 2de87c5..a767ec7 100644 --- a/lunaix-os/kernel/lxinit.c +++ b/lunaix-os/kernel/lxinit.c @@ -2,14 +2,13 @@ #include #include #include +#include #include #include #include -#include #include #include #include -#include extern uint8_t __kernel_start; @@ -19,12 +18,6 @@ LOG_MODULE("INIT") #define WAIT_DEMO #define IN_USER_MODE -void __USER__ -sigchild_handler(int signum) -{ - kprintf(KINFO "SIGCHLD received\n"); -} - void __USER__ _lxinit_main() { @@ -38,8 +31,6 @@ _lxinit_main() } #endif - signal(_SIGCHLD, sigchild_handler); - int status; #ifdef WAIT_DEMO // 测试wait @@ -50,7 +41,7 @@ _lxinit_main() kprintf("I am child, I am about to terminated\n"); _exit(1); } - pause(); + wait(&status); pid_t child = wait(&status); kprintf("I am parent, my child (%d) terminated normally with code: %d.\n", child, @@ -67,15 +58,14 @@ _lxinit_main() waitpid(-1, &status, WNOHANG); - for (size_t i = 0; i < 10; i++) { + for (size_t i = 0; i < 5; i++) { pid_t pid = 0; if (!(pid = fork())) { sleep(i); if (i == 3) { i = *(int*)0xdeadc0de; // seg fault! } - tty_put_char('0' + i); - tty_put_char('\n'); + kprintf(KINFO "%d\n", i); _exit(0); } kprintf(KINFO "Forked %d\n", pid); @@ -109,7 +99,7 @@ _lxinit_main() } if ((keyevent.state & KBD_KEY_FPRESSED) && (keyevent.keycode & 0xff00) <= KEYPAD) { - tty_put_char((char)(keyevent.keycode & 0x00ff)); + console_write_char((char)(keyevent.keycode & 0x00ff)); // FIXME: io to vga port is privileged and cause #GP in user mode // tty_sync_cursor(); }