X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/f69a7227ff3ad84af3651fe36162e131d4f2b323..8c6f505faaa66e18cdca108dca549d4ad806a077:/lunaix-os/kernel/tty/lxconsole.c diff --git a/lunaix-os/kernel/tty/lxconsole.c b/lunaix-os/kernel/tty/lxconsole.c index ae5701b..adf577a 100644 --- a/lunaix-os/kernel/tty/lxconsole.c +++ b/lunaix-os/kernel/tty/lxconsole.c @@ -8,11 +8,10 @@ #include #include #include +#include #include #include -#include - static struct console lx_console; int @@ -39,8 +38,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 +85,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 +118,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); @@ -294,6 +311,10 @@ console_write(struct console* console, uint8_t* data, size_t size) console->wnd_start = rd_ptr; fbuf->flags |= FIFO_DIRTY; mutex_unlock(&fbuf->lock); + + if (!lx_console.flush_timer) { + console_flush(); + } } void