From 3ba2449058b08bcf93a58143d1166b6b1e453859 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Fri, 6 Aug 2021 14:54:34 +0300 Subject: [PATCH] Kernel: Disable big process lock for sys$clock_nanosleep This syscall doesn't touch any intra-process shared resources and only accesses the time via the atomic TimeManagement::current_time so there's no need to hold the big lock. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/clock.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index f9d6fd6401..73c1fbeeee 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -159,7 +159,7 @@ enum class NeedsBigProcessLock { S(setkeymap, NeedsBigProcessLock::Yes) \ S(clock_gettime, NeedsBigProcessLock::No) \ S(clock_settime, NeedsBigProcessLock::Yes) \ - S(clock_nanosleep, NeedsBigProcessLock::Yes) \ + S(clock_nanosleep, NeedsBigProcessLock::No) \ S(join_thread, NeedsBigProcessLock::Yes) \ S(module_load, NeedsBigProcessLock::Yes) \ S(module_unload, NeedsBigProcessLock::Yes) \ diff --git a/Kernel/Syscalls/clock.cpp b/Kernel/Syscalls/clock.cpp index adb3e89f06..82e6779bcd 100644 --- a/Kernel/Syscalls/clock.cpp +++ b/Kernel/Syscalls/clock.cpp @@ -49,7 +49,7 @@ KResultOr Process::sys$clock_settime(clockid_t clock_id, Userspace Process::sys$clock_nanosleep(Userspace user_params) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); + VERIFY_NO_PROCESS_BIG_LOCK(this); REQUIRE_PROMISE(stdio); Syscall::SC_clock_nanosleep_params params;