struct console
{
+ struct potens_meta* tp_cap;
struct lx_timer* flush_timer;
struct fifo_buf output;
struct fifo_buf input;
}
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;
}
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)
{
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