This commit is contained in:
2025-11-26 09:28:41 +01:00
parent da3f961edb
commit beb1abc33c
4 changed files with 23 additions and 21 deletions

View File

@@ -39,19 +39,14 @@ namespace Syscall {
extern "C" size_t syscall_handler(size_t sysnum, size_t p1, size_t p2,
size_t p3, size_t p4, size_t p5,
InterruptContext *user) {
(void)p1;
(void)p2;
(void)p3;
(void)p4;
(void)p5;
(void)sysnum;
(void)user;
switch ((Syscall::ID)sysnum) {
case Syscall::ID::TEST:
Syscall::Skeleton::test(Guard::enter().vault(), p1, p2, p3, p4, p5);
break;
case Syscall::ID::WRITE:
Guarded g = Guard::enter();
g.vault().kout.setPos((int)p4, (int)p5);
Syscall::Skeleton::write(g.vault(), p1, (char*)p2, p3);
break;
}

View File

@@ -1,11 +1,11 @@
#include "syscall/skeleton.h"
#include "../syscall/skeleton.h"
#include "debug/kernelpanic.h"
#include "debug/output.h"
#include "device/textstream.h"
#include "interrupt/guard.h"
#include "sync/semaphore.h"
#include "thread/scheduler.h"
#include "../debug/kernelpanic.h"
#include "../debug/output.h"
#include "../device/textstream.h"
#include "../interrupt/guard.h"
#include "../sync/semaphore.h"
#include "../thread/scheduler.h"
void *operator new(size_t, void *);
@@ -25,11 +25,13 @@ int getpid(Vault &vault) {
}
size_t write(Vault &vault, uint32_t id, const void *buffer, size_t size) {
(void)vault;
(void)id;
(void)buffer;
(void)size;
return 0;
(void)id;
for(size_t i = 0; i<size; i++)
vault.kout << ((char*)buffer)[i];
vault.kout.flush();
return 0;
}
size_t read(Vault &vault, uint32_t id) {

View File

@@ -23,3 +23,7 @@ extern "C" ssize_t sys_safe_call(Syscall::ID id, size_t p1, size_t p2,
size_t p5) {
return sys_call(Syscall::ID::TEST, p1, p2, p3, p4, p5);
}
[[gnu::always_inline]] static inline int write(int fd, const void *buf, size_t len, int x = -1, int y = -1) {
return sys_call(Syscall::ID::WRITE, fd, (size_t)buf, len, x, y);
}