From 246a5bc3e6c0c1664d535dc257679b2a8c8b478b Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Wed, 3 Dec 2025 05:37:50 +0100 Subject: [PATCH] sleep; appl + kappl do smth more or less usefull --- kernel/interrupt/epilogues.cc | 4 ++-- kernel/syscall/handler.cc | 11 +++++------ kernel/syscall/skeleton.cc | 15 ++++++++++++--- kernel/syscall/skeleton.h | 2 +- kernel/syscall/stub.h | 26 +++++++++++++++----------- kernel/user/app1/appl.cc | 24 +++++------------------- kernel/user/app2/kappl.cc | 6 ++++-- 7 files changed, 44 insertions(+), 44 deletions(-) diff --git a/kernel/interrupt/epilogues.cc b/kernel/interrupt/epilogues.cc index 21dd0f1..1d63d6e 100644 --- a/kernel/interrupt/epilogues.cc +++ b/kernel/interrupt/epilogues.cc @@ -6,8 +6,8 @@ Key Epilogues::key; void Epilogues::keyboard(Vault& v) { - if (v.keys.produce(key)) { - v.keys_sem.v(v); + if(v.keys.produce(key)) { + v.keys_sem.v(v); } key.invalidate(); } diff --git a/kernel/syscall/handler.cc b/kernel/syscall/handler.cc index bf8fc41..434585f 100644 --- a/kernel/syscall/handler.cc +++ b/kernel/syscall/handler.cc @@ -41,15 +41,14 @@ extern "C" size_t syscall_handler(size_t sysnum, size_t p1, size_t p2, InterruptContext *user) { switch ((Syscall::ID)sysnum) { case Syscall::ID::TEST: - Syscall::Skeleton::test(Guard::enter().vault(), p1, p2, p3, p4, p5); - break; + return Syscall::Skeleton::test(Guard::enter().vault(), p1, p2, p3, p4, p5); case Syscall::ID::WRITE: - Guard::enter().vault().kout.setPos((int)p4, (int)p5); - Syscall::Skeleton::write(Guard::enter().vault(), p1, (char*)p2, p3); - break; + return Syscall::Skeleton::write(Guard::enter().vault(), p1, (char*)p2, p3, (int)p4, (int)p5); case Syscall::ID::READ: return Syscall::Skeleton::read(Guard::enter().vault(), 0, (void*) p2, p3); - break; + case Syscall::ID::SLEEP: + Syscall::Skeleton::sleep(Guard::enter().vault(), p1); + return 0; case Syscall::ID::SEM_INIT: Syscall::Skeleton::sem_init(Guard::enter().vault(), p1, p2); break; diff --git a/kernel/syscall/skeleton.cc b/kernel/syscall/skeleton.cc index bf38c53..175a515 100644 --- a/kernel/syscall/skeleton.cc +++ b/kernel/syscall/skeleton.cc @@ -24,9 +24,19 @@ int getpid(Vault &vault) { return -1; } -size_t write(Vault &vault, uint32_t id, const void *buffer, size_t size) { +size_t write(Vault &vault, uint32_t id, const void *buffer, size_t size, int x, int y) { (void)id; + int dummy; + if(x == -1 && y != -1) + vault.kout.getPos(x, dummy); + if(x != -1 && y == -1) + vault.kout.getPos(dummy, y); + if(x == -1 && y == -1) + vault.kout.getPos(x, y); + + vault.kout.setPos(x, y); + for(size_t i = 0; i 1) { - // Guarded g = Guard::enter(); - // g.vault().bellringer.sleep(g.vault(), id * id * 10); - //} + write(0, text, sizeof(text)); + sleep(1000); } } diff --git a/kernel/user/app2/kappl.cc b/kernel/user/app2/kappl.cc index b583a41..dab69a2 100644 --- a/kernel/user/app2/kappl.cc +++ b/kernel/user/app2/kappl.cc @@ -11,8 +11,10 @@ extern Semaphore koutsem; void KeyboardApplication::action() { // NOLINT while(1){ char msg[11]; - if(read(0, msg, 10)) - write(0, msg, 10); + int len; + len = read(0, msg, 10); + if(len) + write(0, msg, len); } //const unsigned line = 10 + 2;