X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/2804ceee4ce65d49e9d52d0ed817317c0ac9efdc..f8bd95b7a13dfe54d800e2d7ecdb0329f0798289:/lunaix-os/kernel/tty/lxconsole.c diff --git a/lunaix-os/kernel/tty/lxconsole.c b/lunaix-os/kernel/tty/lxconsole.c index 31afa64..0d7439b 100644 --- a/lunaix-os/kernel/tty/lxconsole.c +++ b/lunaix-os/kernel/tty/lxconsole.c @@ -1,3 +1,14 @@ +/** + * @file lxconsole.c + * @author Lunaixsky (lunaxisky@qq.com) + * @brief Provides simple terminal support + * @version 0.1 + * @date 2023-06-18 + * + * @copyright Copyright (c) 2023 + * + */ + #include #include #include @@ -8,11 +19,10 @@ #include #include #include +#include #include #include -#include - static struct console lx_console; int @@ -39,8 +49,8 @@ print_control_code(const char cntrl) int __lxconsole_listener(struct input_device* dev) { - uint32_t key = dev->current_pkt.sys_code; - uint32_t type = dev->current_pkt.pkt_type; + u32_t key = dev->current_pkt.sys_code; + u32_t type = dev->current_pkt.pkt_type; kbd_kstate_t state = key >> 16; ttychr = key & 0xff; key = key & 0xffff; @@ -86,7 +96,7 @@ done: } int -__tty_exec_cmd(struct device* dev, uint32_t req, va_list args) +__tty_exec_cmd(struct device* dev, u32_t req, va_list args) { switch (req) { case TIOCGPGRP: @@ -119,10 +129,28 @@ lxconsole_init() fifo_init(&lx_console.input, valloc(4096), 4096, 0); lx_console.flush_timer = NULL; +} + +int +__tty_write_pg(struct device* dev, void* buf, size_t offset) +{ + return __tty_write(dev, buf, offset, PG_SIZE); +} +int +__tty_read_pg(struct device* dev, void* buf, size_t offset) +{ + return __tty_read(dev, buf, offset, PG_SIZE); +} + +void +lxconsole_spawn_ttydev() +{ struct device* tty_dev = device_addseq(NULL, &lx_console, "tty"); tty_dev->write = __tty_write; + tty_dev->write_page = __tty_write_pg; tty_dev->read = __tty_read; + tty_dev->read_page = __tty_read_pg; tty_dev->exec_cmd = __tty_exec_cmd; waitq_init(&lx_reader);