From a013855e73ef9245669716b145042e98fc970b75 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Tue, 9 Mar 2021 11:50:16 +0100 Subject: [PATCH] Syscalls : print & flush --- kaleid/kernel/ke/syscall.c | 48 ++++++++++++++------------------------ 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/kaleid/kernel/ke/syscall.c b/kaleid/kernel/ke/syscall.c index 5dc2c1f..6aaf3be 100644 --- a/kaleid/kernel/ke/syscall.c +++ b/kaleid/kernel/ke/syscall.c @@ -60,36 +60,24 @@ static error_t syscallStub(void *rdi, void *rsi, void *rdx, void *rcx, ISRFrame_ return ENOSYS; } -static error_t syscallRead(void *descriptor, void *address, void *flags, void *rcx, ISRFrame_t *regs) +static error_t syscallPrint(void *id, void *string, void *rdx, void *rcx, ISRFrame_t *regs) { - return ENOSYS; + Buffer_t *buf = NULL; + if (*(ulong*)id == 0) { + buf = BStdOut; + } + + return BPrintOnBuf(buf, (char*)string); } -static error_t syscallWrite(void *descriptor, void *address, void *flags, void *rcx, ISRFrame_t *regs) +static error_t syscallFlush(void *id, void *rdi, void *rdx, void *rcx, ISRFrame_t *regs) { - return ENOSYS; -} - -static error_t syscallOpen(void *descriptor, void *address, void *size, void *rcx, ISRFrame_t *regs) -{ - /* TODO - - lock the zone - - check if permitted - - modify descriptor according to what has been done - - return */ - - return ENOSYS; -} - -static error_t syscallClose(void *descriptor, void *address, void *flags, void *rcx, ISRFrame_t *regs) -{ - /* TODO - - lock the zone - - check if permitted using descriptor - - use flags to know what to do - - return */ - - return ENOSYS; + Buffer_t *buf = NULL; + if (*(ulong*)id == 0) { + buf = BStdOut; + } + + return BFlushBuf(buf); } static error_t syscallKernelShell(void *rdi, void *rsi, void *rdx, void *rcx, ISRFrame_t *regs) @@ -105,10 +93,10 @@ static error_t syscallKernelShell(void *rdi, void *rsi, void *rdx, void *rcx, IS // void KeEnableSyscalls() { - syscallTable[0] = syscallRead; - syscallTable[1] = syscallWrite; - syscallTable[2] = syscallOpen; - syscallTable[3] = syscallClose; + syscallTable[0] = syscallPrint; + syscallTable[1] = syscallFlush; + syscallTable[2] = syscallStub; + syscallTable[3] = syscallStub; syscallTable[4] = syscallKernelShell; syscallTable[5] = syscallStub; }