From 912d2e3c7eb1baa71dda2c0a28aa5809eaa96f27 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sat, 16 Jul 2022 13:33:00 +0200 Subject: amd64: barely boot into kernel code --- src/kernel/arch/i386/driver/ps2.c | 61 --------------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 src/kernel/arch/i386/driver/ps2.c (limited to 'src/kernel/arch/i386/driver/ps2.c') diff --git a/src/kernel/arch/i386/driver/ps2.c b/src/kernel/arch/i386/driver/ps2.c deleted file mode 100644 index 341a7d3..0000000 --- a/src/kernel/arch/i386/driver/ps2.c +++ /dev/null @@ -1,61 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#define BACKLOG_CAPACITY 64 -static volatile uint8_t backlog_buf[BACKLOG_CAPACITY]; -static volatile ring_t backlog = {(void*)backlog_buf, BACKLOG_CAPACITY, 0, 0}; - -static void accept(struct vfs_request *req); -static bool is_ready(struct vfs_backend *self); - -static struct vfs_request *blocked_on = NULL; -static struct vfs_backend backend = BACKEND_KERN(is_ready, accept); -void ps2_init(void) { vfs_mount_root_register("/ps2", &backend); } - - -void ps2_recv(uint8_t s) { - ring_put1b((void*)&backlog, s); - if (blocked_on) { - accept(blocked_on); - blocked_on = NULL; - vfs_backend_tryaccept(&backend); - } -} - -static void accept(struct vfs_request *req) { - // when you fix something here go also fix it in the COM1 driver - static uint8_t buf[32]; // pretty damn stupid - int ret; - bool valid; - switch (req->type) { - case VFSOP_OPEN: - valid = req->input.len == 0; - vfsreq_finish_short(req, valid ? 0 : -1); - break; - case VFSOP_READ: - if (ring_size((void*)&backlog) == 0) { - // nothing to read - blocked_on = req; - } else if (req->caller) { - ret = clamp(0, req->output.len, sizeof buf); - ret = ring_get((void*)&backlog, buf, ret); - virt_cpy_to(req->caller->pages, req->output.buf, buf, ret); - vfsreq_finish_short(req, ret); - } else { - vfsreq_finish_short(req, -1); - } - break; - default: - vfsreq_finish_short(req, -1); - break; - } -} - -static bool is_ready(struct vfs_backend __attribute__((unused)) *self) { - return blocked_on == NULL; -} -- cgit v1.2.3