From da0b7d17379db0b32d7ea4d816296312178a62b5 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Fri, 6 Aug 2021 14:22:21 +0300 Subject: [PATCH] Kernel: Disable big process lock for sys$beep() The PCSpeaker is global and not locked anyways, so there's no need for mutual exclusion between threads in the same process. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/beep.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index 7c0ee3b9f1..034e18122d 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -133,7 +133,7 @@ enum class NeedsBigProcessLock { S(exit_thread, NeedsBigProcessLock::Yes) \ S(mknod, NeedsBigProcessLock::Yes) \ S(writev, NeedsBigProcessLock::Yes) \ - S(beep, NeedsBigProcessLock::Yes) \ + S(beep, NeedsBigProcessLock::No) \ S(getsockname, NeedsBigProcessLock::Yes) \ S(getpeername, NeedsBigProcessLock::Yes) \ S(socketpair, NeedsBigProcessLock::Yes) \ diff --git a/Kernel/Syscalls/beep.cpp b/Kernel/Syscalls/beep.cpp index 0f0a21a640..0fc0ea7cb7 100644 --- a/Kernel/Syscalls/beep.cpp +++ b/Kernel/Syscalls/beep.cpp @@ -11,7 +11,7 @@ namespace Kernel { KResultOr Process::sys$beep() { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); + VERIFY_NO_PROCESS_BIG_LOCK(this); PCSpeaker::tone_on(440); auto result = Thread::current()->sleep(Time::from_nanoseconds(200'000'000)); PCSpeaker::tone_off();