Parcourir la source

Kernel: Disable big process lock for sys$sync

This syscall doesn't touch any intra-process shared resources and only
calls VirtualFileSystem::sync, which is self-locking.
Idan Horowitz il y a 3 ans
Parent
commit
9d21c79671
2 fichiers modifiés avec 2 ajouts et 2 suppressions
  1. 1 1
      Kernel/API/Syscall.h
  2. 1 1
      Kernel/Syscalls/sync.cpp

+ 1 - 1
Kernel/API/Syscall.h

@@ -106,7 +106,7 @@ enum class NeedsBigProcessLock {
     S(mkdir, NeedsBigProcessLock::Yes)                      \
     S(times, NeedsBigProcessLock::Yes)                      \
     S(utime, NeedsBigProcessLock::Yes)                      \
-    S(sync, NeedsBigProcessLock::Yes)                       \
+    S(sync, NeedsBigProcessLock::No)                        \
     S(ptsname, NeedsBigProcessLock::Yes)                    \
     S(select, NeedsBigProcessLock::Yes)                     \
     S(unlink, NeedsBigProcessLock::Yes)                     \

+ 1 - 1
Kernel/Syscalls/sync.cpp

@@ -11,7 +11,7 @@ namespace Kernel {
 
 KResultOr<FlatPtr> Process::sys$sync()
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
+    VERIFY_NO_PROCESS_BIG_LOCK(this)
     REQUIRE_PROMISE(stdio);
     VirtualFileSystem::sync();
     return 0;