From 871c9cf4395bb10c918877b58fcb1393d2233f92 Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Sat, 15 Nov 2025 00:57:53 +0100 Subject: [PATCH] Remove fbdev, add term_getsizes() syscall to get terminal width+height --- kernel/dev/dev.c | 2 -- kernel/dev/fbdev.c | 35 ----------------------------------- kernel/dev/fbdev.h | 6 ------ kernel/syscall/syscall.c | 1 + kernel/syscall/term.c | 15 +++++++++++++++ kernel/syscall/term.h | 1 + share/sysdefs/dev.h | 8 -------- share/sysdefs/syscall.h | 1 + 8 files changed, 18 insertions(+), 51 deletions(-) delete mode 100644 kernel/dev/fbdev.c delete mode 100644 kernel/dev/fbdev.h diff --git a/kernel/dev/dev.c b/kernel/dev/dev.c index 9cead81..0dfa6ae 100644 --- a/kernel/dev/dev.c +++ b/kernel/dev/dev.c @@ -5,7 +5,6 @@ #include "dev/dev.h" #include "dev/ps2kbdev.h" #include "dev/serialdev.h" -#include "dev/fbdev.h" #include "hshtb.h" DevTable DEVTABLE; @@ -16,5 +15,4 @@ void dev_init(void) { ps2kbdev_init(); serialdev_init(); - fbdev_init(); } diff --git a/kernel/dev/fbdev.c b/kernel/dev/fbdev.c deleted file mode 100644 index 71bc9ac..0000000 --- a/kernel/dev/fbdev.c +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include -#include "dev/fbdev.h" -#include "dev/dev.h" -#include "sysdefs/dev.h" -#include "spinlock/spinlock.h" -#include "util/util.h" -#include "bootinfo/bootinfo.h" -#include "std/string.h" -#include "errors.h" -#include "hshtb.h" - -int32_t fbdev_getinfo(struct Dev *dev, uint8_t *buffer, size_t len, uint64_t pid) { - (void)dev; (void)pid; - - if (len != sizeof(FbDevGetInfo)) { - return E_INVALIDARGUMENT; - } - - FbDevGetInfo info = { - .w = BOOT_INFO.fb->width, - .h = BOOT_INFO.fb->height, - .margin = 20, - .fontw = 8, - .fonth = 16, - }; - memcpy(buffer, &info, sizeof(info)); - return E_OK; -} - -void fbdev_init(void) { - Dev *fbdev; - HSHTB_ALLOC(DEVTABLE.devs, ident, "fbdev", fbdev); - fbdev->fns[DEV_FBDEV_GETINFO] = &fbdev_getinfo; -} diff --git a/kernel/dev/fbdev.h b/kernel/dev/fbdev.h deleted file mode 100644 index ca47708..0000000 --- a/kernel/dev/fbdev.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef DEV_FBDEV_H_ -#define DEV_FBDEV_H_ - -void fbdev_init(void); - -#endif // DEV_FBDEV_H_ diff --git a/kernel/syscall/syscall.c b/kernel/syscall/syscall.c index 47c4d2e..23f04f5 100644 --- a/kernel/syscall/syscall.c +++ b/kernel/syscall/syscall.c @@ -78,4 +78,5 @@ SyscallFn SYSCALL_TABLE[SYSCALLS_MAX] = { [SYS_IPC_MBUSDTTCH] = &sys_ipc_mbusdttch, [SYS_TERM_WRITE] = &sys_term_write, + [SYS_TERM_GETSIZES] = &sys_term_getsizes, }; diff --git a/kernel/syscall/term.c b/kernel/syscall/term.c index bf4e050..047941d 100644 --- a/kernel/syscall/term.c +++ b/kernel/syscall/term.c @@ -1,6 +1,7 @@ #include #include #include "syscall/syscall.h" +#include "bootinfo/bootinfo.h" #include "kprintf.h" #include "errors.h" @@ -16,3 +17,17 @@ int32_t SYSCALL2(sys_term_write, buffer1, len1) { return E_OK; } + +int32_t SYSCALL2(sys_term_getsizes, w1, h1) { + uint16_t *w = (uint16_t *)w1; + uint16_t *h = (uint16_t *)h1; + + if (w == NULL || h == NULL) { + return E_INVALIDARGUMENT; + } + + *w = (uint16_t)(BOOT_INFO.fb->width / 16); + *h = (uint16_t)(BOOT_INFO.fb->height / 16); + + return E_OK; +} diff --git a/kernel/syscall/term.h b/kernel/syscall/term.h index 1f6db9c..5961db4 100644 --- a/kernel/syscall/term.h +++ b/kernel/syscall/term.h @@ -6,5 +6,6 @@ #include "syscall/syscall.h" int32_t SYSCALL2(sys_term_write, buffer1, len1); +int32_t SYSCALL2(sys_term_getsizes, w1, h1); #endif // SYSCALL_TERM_H_ diff --git a/share/sysdefs/dev.h b/share/sysdefs/dev.h index 551f2c3..f94031d 100644 --- a/share/sysdefs/dev.h +++ b/share/sysdefs/dev.h @@ -9,8 +9,6 @@ #define DEV_SERIALDEV_RECVB 2 #define DEV_SERIALDEV_RECVREADY 3 -#define DEV_FBDEV_GETINFO 0 - #define DEV_STOREDEV_READ 0 #define DEV_STOREDEV_WRITE 1 #define DEV_STOREDEV_SECCOUNT 2 @@ -32,12 +30,6 @@ typedef struct { typedef uint64_t Dev_t; -typedef struct { - uint16_t w, h; - uint16_t margin; - uint8_t fontw, fonth; -} FbDevGetInfo; - typedef struct { bool present; char name[0x100]; diff --git a/share/sysdefs/syscall.h b/share/sysdefs/syscall.h index c3deb8e..eb87fcb 100644 --- a/share/sysdefs/syscall.h +++ b/share/sysdefs/syscall.h @@ -46,5 +46,6 @@ #define SYS_IPC_MBUSATTCH 44 #define SYS_IPC_MBUSDTTCH 45 #define SYS_TERM_WRITE 46 +#define SYS_TERM_GETSIZES 47 #endif // SHARE_HDRS_SYSCALL_H_