From 901eb0bbf569022fe4c9aad6929fa2199462c5ac Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Tue, 13 May 2025 17:44:58 +0200 Subject: [PATCH] zack fertig --- interrupt/handlers.cc | 8 +++----- sync/ticketlock.cc | 6 +++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/interrupt/handlers.cc b/interrupt/handlers.cc index 05c6aae..7b120b8 100644 --- a/interrupt/handlers.cc +++ b/interrupt/handlers.cc @@ -74,14 +74,12 @@ extern Ticketlock koutlock; void handle_keyboard() { Key key = Key(); if (PS2Controller::fetch(key)) { - - if (key.ctrl() && key.alt() && key.scancode == Key::KEY_DEL) - System::reboot(); - koutlock.lock(); - kout << key.ascii() << flush ; + kout << key.ascii() << endl << flush ; koutlock.unlock(); } + else if (key.ctrl() && key.alt() && key.scancode == Key::KEY_DEL) + System::reboot(); LAPIC::endOfInterrupt(); } diff --git a/sync/ticketlock.cc b/sync/ticketlock.cc index 680932e..4453ea9 100644 --- a/sync/ticketlock.cc +++ b/sync/ticketlock.cc @@ -1,12 +1,12 @@ #include "sync/ticketlock.h" void Ticketlock::lock() { - uint64_t ticket = __atomic_fetch_add(&ticket_count, 1, __ATOMIC_SEQ_CST); - while (ticket != ticket_current) { + uint64_t ticket = __atomic_fetch_add(&ticket_count, 1, __ATOMIC_RELAXED); + while (ticket != __atomic_fetch_add(&ticket_current, 0, __ATOMIC_ACQUIRE))) { Core::pause(); } } void Ticketlock::unlock() { - __atomic_fetch_add(&ticket_current, 1, __ATOMIC_SEQ_CST); + __atomic_fetch_add(&ticket_current, 1, __ATOMIC_RELEASE); }