zack fertig

main
Eggert Jung 6 months ago
parent f1e5f17d1f
commit 901eb0bbf5

@ -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();
}

@ -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);
}

Loading…
Cancel
Save