Remove fbdev, add term_getsizes() syscall to get terminal width+height

This commit is contained in:
2025-11-15 00:57:53 +01:00
parent cf4a6b23c7
commit 871c9cf439
8 changed files with 18 additions and 51 deletions

View File

@ -5,7 +5,6 @@
#include "dev/dev.h" #include "dev/dev.h"
#include "dev/ps2kbdev.h" #include "dev/ps2kbdev.h"
#include "dev/serialdev.h" #include "dev/serialdev.h"
#include "dev/fbdev.h"
#include "hshtb.h" #include "hshtb.h"
DevTable DEVTABLE; DevTable DEVTABLE;
@ -16,5 +15,4 @@ void dev_init(void) {
ps2kbdev_init(); ps2kbdev_init();
serialdev_init(); serialdev_init();
fbdev_init();
} }

View File

@ -1,35 +0,0 @@
#include <stdint.h>
#include <stddef.h>
#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;
}

View File

@ -1,6 +0,0 @@
#ifndef DEV_FBDEV_H_
#define DEV_FBDEV_H_
void fbdev_init(void);
#endif // DEV_FBDEV_H_

View File

@ -78,4 +78,5 @@ SyscallFn SYSCALL_TABLE[SYSCALLS_MAX] = {
[SYS_IPC_MBUSDTTCH] = &sys_ipc_mbusdttch, [SYS_IPC_MBUSDTTCH] = &sys_ipc_mbusdttch,
[SYS_TERM_WRITE] = &sys_term_write, [SYS_TERM_WRITE] = &sys_term_write,
[SYS_TERM_GETSIZES] = &sys_term_getsizes,
}; };

View File

@ -1,6 +1,7 @@
#include <stdint.h> #include <stdint.h>
#include <stddef.h> #include <stddef.h>
#include "syscall/syscall.h" #include "syscall/syscall.h"
#include "bootinfo/bootinfo.h"
#include "kprintf.h" #include "kprintf.h"
#include "errors.h" #include "errors.h"
@ -16,3 +17,17 @@ int32_t SYSCALL2(sys_term_write, buffer1, len1) {
return E_OK; 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;
}

View File

@ -6,5 +6,6 @@
#include "syscall/syscall.h" #include "syscall/syscall.h"
int32_t SYSCALL2(sys_term_write, buffer1, len1); int32_t SYSCALL2(sys_term_write, buffer1, len1);
int32_t SYSCALL2(sys_term_getsizes, w1, h1);
#endif // SYSCALL_TERM_H_ #endif // SYSCALL_TERM_H_

View File

@ -9,8 +9,6 @@
#define DEV_SERIALDEV_RECVB 2 #define DEV_SERIALDEV_RECVB 2
#define DEV_SERIALDEV_RECVREADY 3 #define DEV_SERIALDEV_RECVREADY 3
#define DEV_FBDEV_GETINFO 0
#define DEV_STOREDEV_READ 0 #define DEV_STOREDEV_READ 0
#define DEV_STOREDEV_WRITE 1 #define DEV_STOREDEV_WRITE 1
#define DEV_STOREDEV_SECCOUNT 2 #define DEV_STOREDEV_SECCOUNT 2
@ -32,12 +30,6 @@ typedef struct {
typedef uint64_t Dev_t; typedef uint64_t Dev_t;
typedef struct {
uint16_t w, h;
uint16_t margin;
uint8_t fontw, fonth;
} FbDevGetInfo;
typedef struct { typedef struct {
bool present; bool present;
char name[0x100]; char name[0x100];

View File

@ -46,5 +46,6 @@
#define SYS_IPC_MBUSATTCH 44 #define SYS_IPC_MBUSATTCH 44
#define SYS_IPC_MBUSDTTCH 45 #define SYS_IPC_MBUSDTTCH 45
#define SYS_TERM_WRITE 46 #define SYS_TERM_WRITE 46
#define SYS_TERM_GETSIZES 47
#endif // SHARE_HDRS_SYSCALL_H_ #endif // SHARE_HDRS_SYSCALL_H_