From f229b2e8a6ca840af8f3ac26cc2f412891a99a5e Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sun, 5 Sep 2021 15:32:00 +0200 Subject: root vfs: implement writing to /tty --- src/kernel/vfs/root.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'src/kernel/vfs/root.c') diff --git a/src/kernel/vfs/root.c b/src/kernel/vfs/root.c index c90557b..0f11a5b 100644 --- a/src/kernel/vfs/root.c +++ b/src/kernel/vfs/root.c @@ -1,6 +1,9 @@ -#include -#include +#include #include +#include +#include +#include +#include int vfs_root_handler(struct vfs_op_request *req) { switch (req->op.type) { @@ -10,7 +13,20 @@ int vfs_root_handler(struct vfs_op_request *req) { return 0; } return -1; - default: - panic(); + case VFSOP_WRITE: + switch (req->op.rw.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->op.rw.buf, req->op.rw.buf_len, + req->caller->pages, true, false); + while (virt_iter_next(&iter)) + tty_write(iter.frag, iter.frag_len); + return iter.prior; + } + default: panic(); + } + default: panic(); } } -- cgit v1.2.3