From 468ef8f1d57527af3fe8b67bbc73813e951a0ec5 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sat, 17 Aug 2024 01:57:04 +0200 Subject: kernel: split the kernel/user inputs in VfsReq I think I've done this refactor in the opposite direction a few years ago. This is mostly meant to prepare me for setxattr, which requires two inputs - coincidentally, one is already going to be a kernel input, and the other will be an user input, so it works out. I also just didn't like the previous way it worked, this feels cleaner. --- src/kernel/arch/amd64/driver/video.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/kernel/arch/amd64/driver/video.c') diff --git a/src/kernel/arch/amd64/driver/video.c b/src/kernel/arch/amd64/driver/video.c index 5ce9a30..4ce1657 100644 --- a/src/kernel/arch/amd64/driver/video.c +++ b/src/kernel/arch/amd64/driver/video.c @@ -20,10 +20,10 @@ enum { static int handle(VfsReq *req) { switch (req->type) { case VFSOP_OPEN: - if (!req->input.kern) panic_invalid_state(); - if (req->input.len == 0) { + assert(req->kin != NULL); + if (req->kinlen == 0) { return H_ROOT; - } else if (req->input.len == namelen && !memcmp(req->input.buf_kern, namebuf, namelen)) { + } else if (req->kinlen == namelen && !memcmp(req->kin, namebuf, namelen)) { return H_FB; } else { return -1; @@ -40,10 +40,10 @@ static int handle(VfsReq *req) { if ((long __force)req->id != H_FB) { return -1; } - fs_normslice(&req->offset, &req->input.len, fb.size, false); - /* parial writes ignored */ - pcpy_from(req->caller, fb.b + req->offset, req->input.buf, req->input.len); - return req->input.len; + fs_normslice(&req->offset, &req->uinlen, fb.size, false); + /* partial writes ignored */ + pcpy_from(req->caller, fb.b + req->offset, req->uin, req->uinlen); + return req->uinlen; case VFSOP_GETSIZE: return fb.size; -- cgit v1.2.3