X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/b0c2a4be2d1f4f93ab01d0858979a12ef0735ec1..a0655e5d30f3cdc73b1aaaa4825d8fae9f92ce4a:/lunaix-os/kernel/k_main.c diff --git a/lunaix-os/kernel/k_main.c b/lunaix-os/kernel/k_main.c index 9468db3..c3819d9 100644 --- a/lunaix-os/kernel/k_main.c +++ b/lunaix-os/kernel/k_main.c @@ -1,38 +1,44 @@ -#include -#include -#include #include -#include +#include +#include +#include #include +#include +#include +#include +#include +#include extern uint8_t __kernel_start; +LOG_MODULE("LX") + +void +test_timer(void* payload); + void _kernel_main() { char buf[64]; - - printf("Hello higher half kernel world!\nWe are now running in virtual " + + kprintf(KINFO "Hello higher half kernel world!\nWe are now running in virtual " "address space!\n\n"); - + cpu_get_brand(buf); - printf("CPU: %s\n\n", buf); + kprintf("CPU: %s\n\n", buf); void* k_start = vmm_v2p(&__kernel_start); - printf("The kernel's base address mapping: %p->%p\n", &__kernel_start, k_start); + kprintf(KINFO "The kernel's base address mapping: %p->%p\n", &__kernel_start, k_start); // test malloc & free - - uint8_t** arr = (uint8_t**) lxmalloc(10 * sizeof(uint8_t*)); - - for (size_t i = 0; i < 10; i++) - { - arr[i] = (uint8_t*) lxmalloc((i + 1) * 2); - } + uint8_t** arr = (uint8_t**)lxmalloc(10 * sizeof(uint8_t*)); - for (size_t i = 0; i < 10; i++) - { + for (size_t i = 0; i < 10; i++) { + arr[i] = (uint8_t*)lxmalloc((i + 1) * 2); + } + + for (size_t i = 0; i < 10; i++) { lxfree(arr[i]); } @@ -41,18 +47,39 @@ _kernel_main() big_[1] = 23; big_[2] = 3; - printf("%u, %u, %u", big_[0], big_[1], big_[2]); - + kprintf(KINFO "%u, %u, %u\n", big_[0], big_[1], big_[2]); + // good free lxfree(arr); lxfree(big_); - // uint8_t* bad1 = lxmalloc(123); - // void* bad2 = lxmalloc(1); + // timer_run_second(1, test_timer, NULL, TIMER_MODE_PERIODIC); + + struct kdb_keyinfo_pkt keyevent; + while (1) + { + if (!kbd_recv_key(&keyevent)) { + continue; + } + if ((keyevent.state & KBD_KEY_FPRESSED) && (keyevent.keycode & 0xff00) <= KEYPAD) { + tty_put_char((char)(keyevent.keycode & 0x00ff)); + tty_sync_cursor(); + } + } + + spin(); +} + +static datetime_t datetime; - // *((uint32_t*)(bad1 - 4)) = 0xc2343312UL; +void test_timer(void* payload) { + clock_walltime(&datetime); - // // bad free - // lxfree(bad1); - // lxfree(bad2 - 2); + kprintf(KWARN "%u/%02u/%02u %02u:%02u:%02u\r", + datetime.year, + datetime.month, + datetime.day, + datetime.hour, + datetime.minute, + datetime.second); } \ No newline at end of file