Преглед на файлове

Kernel: Disable big process lock for sys$yield()

Brian Gianforcaro преди 4 години
родител
ревизия
8f01a8b741
променени са 2 файла, в които са добавени 3 реда и са изтрити 3 реда
  1. 1 1
      Kernel/API/Syscall.h
  2. 2 2
      Kernel/Syscalls/sched.cpp

+ 1 - 1
Kernel/API/Syscall.h

@@ -43,7 +43,7 @@ enum class NeedsBigProcessLock {
 //   - VERIFY_NO_PROCESS_BIG_LOCK(this)
 //
 #define ENUMERATE_SYSCALLS(S)                               \
-    S(yield, NeedsBigProcessLock::Yes)                      \
+    S(yield, NeedsBigProcessLock::No)                       \
     S(open, NeedsBigProcessLock::Yes)                       \
     S(close, NeedsBigProcessLock::Yes)                      \
     S(read, NeedsBigProcessLock::Yes)                       \

+ 2 - 2
Kernel/Syscalls/sched.cpp

@@ -10,9 +10,9 @@ namespace Kernel {
 
 KResultOr<FlatPtr> Process::sys$yield()
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
+    VERIFY_NO_PROCESS_BIG_LOCK(this);
     REQUIRE_PROMISE(stdio);
-    Thread::current()->yield_and_release_relock_big_lock();
+    Thread::current()->yield_assuming_not_holding_big_lock();
     return 0;
 }