From 16a5b4c9ed410daba848a781f8b8978846c6b836 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sat, 2 Oct 2021 19:48:17 +0000 Subject: implement serial/tty input --- src/kernel/vfs/root.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/kernel/vfs') diff --git a/src/kernel/vfs/root.c b/src/kernel/vfs/root.c index dca81d2..7e957ef 100644 --- a/src/kernel/vfs/root.c +++ b/src/kernel/vfs/root.c @@ -13,10 +13,24 @@ int vfs_root_handler(struct vfs_request *req) { return 0; } return -1; - case VFSOP_WRITE: + + case VFSOP_READ: switch (req->id) { // every id corresponds to a special file type // this is a shit way to do this but :shrug: + case 0: { // tty + struct virt_iter iter; + virt_iter_new(&iter, req->output.buf, req->output.len, + req->caller->pages, true, false); + while (virt_iter_next(&iter)) + tty_read(iter.frag, iter.frag_len); + return iter.prior; + } + default: panic_invalid_state(); + } + + case VFSOP_WRITE: + switch (req->id) { case 0: { // tty struct virt_iter iter; virt_iter_new(&iter, req->input.buf, req->input.len, -- cgit v1.2.3