X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/728194869c3dc89b0e1c625480d486ada309ae40..4f966b9a6710d138d6e921bf2a1e40f2abc76f9a:/lunaix-os/kernel/lxinit.c diff --git a/lunaix-os/kernel/lxinit.c b/lunaix-os/kernel/lxinit.c index 19e7eff..4744cc1 100644 --- a/lunaix-os/kernel/lxinit.c +++ b/lunaix-os/kernel/lxinit.c @@ -1,14 +1,13 @@ #include #include -#include #include +#include #include #include #include #include #include #include -#include extern uint8_t __kernel_start; @@ -16,8 +15,9 @@ LOG_MODULE("INIT") // #define FORK_BOMB_DEMO #define WAIT_DEMO +#define IN_USER_MODE -void +void __USER__ _lxinit_main() { #ifdef FORK_BOMB_DEMO @@ -40,6 +40,7 @@ _lxinit_main() kprintf("I am child, I am about to terminated\n"); _exit(1); } + wait(&status); pid_t child = wait(&status); kprintf("I am parent, my child (%d) terminated normally with code: %d.\n", child, @@ -63,8 +64,7 @@ _lxinit_main() 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); @@ -86,22 +86,5 @@ _lxinit_main() cpu_get_brand(buf); kprintf("CPU: %s\n\n", buf); - // no lxmalloc here! This can only be used within kernel, but here, we are - // in a dedicated process! any access to kernel method must be done via - // syscall - - struct kdb_keyinfo_pkt keyevent; - while (1) { - if (!kbd_recv_key(&keyevent)) { - // yield(); - continue; - } - if ((keyevent.state & KBD_KEY_FPRESSED) && - (keyevent.keycode & 0xff00) <= KEYPAD) { - tty_put_char((char)(keyevent.keycode & 0x00ff)); - tty_sync_cursor(); - } - } - - spin(); + _exit(0); } \ No newline at end of file