X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/69777bdcab284335651a8002e2896f3862fa423d..e0cd8f9c44808642b2f4ebb17202e1ec477db78a:/lunaix-os/hal/char/lxconsole.c diff --git a/lunaix-os/hal/char/lxconsole.c b/lunaix-os/hal/char/lxconsole.c index 6387670..aa4136a 100644 --- a/lunaix-os/hal/char/lxconsole.c +++ b/lunaix-os/hal/char/lxconsole.c @@ -27,6 +27,7 @@ struct console { + struct potens_meta* tp_cap; struct lx_timer* flush_timer; struct fifo_buf output; struct fifo_buf input; @@ -90,8 +91,12 @@ __lxconsole_listener(struct input_device* dev) } fifo_putone(&lx_console.input, ttychr); - pwake_all(&lx_reader); + struct termport_potens* tpcap; + tpcap = get_potens(lx_console.tp_cap, typeof(*tpcap)); + term_notify_data_avaliable(tpcap); + + pwake_all(&lx_reader); done: return INPUT_EVT_NEXT; } @@ -132,6 +137,14 @@ __tty_read(struct device* dev, void* buf, size_t offset, size_t len) return count + fifo_read(&console->input, buf + count, len - count); } +int +__tty_read_async(struct device* dev, void* buf, size_t offset, size_t len) +{ + struct console* console = (struct console*)dev->underlay; + + return fifo_read(&console->input, buf, len); +} + size_t __find_next_line(size_t start) { @@ -279,21 +292,22 @@ lxconsole_spawn_ttydev(struct device_def* devdef) tty_dev->ops.write_page = __tty_write_pg; tty_dev->ops.read = __tty_read; tty_dev->ops.read_page = __tty_read_pg; + tty_dev->ops.write_async = __tty_write; + tty_dev->ops.read_async = __tty_read_async; waitq_init(&lx_reader); input_add_listener(__lxconsole_listener); register_device(tty_dev, &devdef->class, "vcon"); - term_create(tty_dev, "FB"); + term_attach_potens(tty_dev, NULL, "VCON"); return 0; } static struct device_def lxconsole_def = { - .name = "Lunaix Virtual Console", - .class = DEVCLASS(DEVIF_NON, DEVFN_TTY, DEV_BUILTIN), - .init = lxconsole_spawn_ttydev + def_device_name("Lunaix Virtual Console"), + def_device_class(LUNAIX, TTY, VTERM), + def_on_load(lxconsole_spawn_ttydev) }; -// FIXME EXPORT_DEVICE(lxconsole, &lxconsole_def, load_onboot); \ No newline at end of file