git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update readme introduction part, add demo screen-shot
[lunaix-os.git]
/
lunaix-os
/
hal
/
char
/
lxconsole.c
diff --git
a/lunaix-os/hal/char/lxconsole.c
b/lunaix-os/hal/char/lxconsole.c
index 63876707cfe4ff87dc9523dbc133b71b082ce493..1ac2d577aa4f8115c06b1d1b00a7d9f7a6981c6e 100644
(file)
--- a/
lunaix-os/hal/char/lxconsole.c
+++ b/
lunaix-os/hal/char/lxconsole.c
@@
-27,6
+27,7
@@
struct console
{
struct console
{
+ struct termport_potens* tp_cap;
struct lx_timer* flush_timer;
struct fifo_buf output;
struct fifo_buf input;
struct lx_timer* flush_timer;
struct fifo_buf output;
struct fifo_buf input;
@@
-90,8
+91,10
@@
__lxconsole_listener(struct input_device* dev)
}
fifo_putone(&lx_console.input, ttychr);
}
fifo_putone(&lx_console.input, ttychr);
- pwake_all(&lx_reader);
+ term_notify_data_avaliable(lx_console.tp_cap);
+
+ pwake_all(&lx_reader);
done:
return INPUT_EVT_NEXT;
}
done:
return INPUT_EVT_NEXT;
}
@@
-132,6
+135,14
@@
__tty_read(struct device* dev, void* buf, size_t offset, size_t len)
return count + fifo_read(&console->input, buf + count, len - count);
}
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)
{
size_t
__find_next_line(size_t start)
{
@@
-279,21
+290,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_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");
waitq_init(&lx_reader);
input_add_listener(__lxconsole_listener);
register_device(tty_dev, &devdef->class, "vcon");
-
term_create(tty_dev, "FB
");
+
lx_console.tp_cap = term_attach_potens(tty_dev, NULL, "VCON
");
return 0;
}
static struct device_def lxconsole_def = {
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
EXPORT_DEVICE(lxconsole, &lxconsole_def, load_onboot);
\ No newline at end of file