diff --git a/kernel/syscall/handler.cc b/kernel/syscall/handler.cc index 609d3d2..e71e46b 100644 --- a/kernel/syscall/handler.cc +++ b/kernel/syscall/handler.cc @@ -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; } diff --git a/kernel/syscall/skeleton.cc b/kernel/syscall/skeleton.cc index 33e0b5c..5f7acf8 100644 --- a/kernel/syscall/skeleton.cc +++ b/kernel/syscall/skeleton.cc @@ -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