Ver código fonte

Kernel: Disable big process lock for sys$dbgputstr

This syscall doesn't touch any intra-process shared resources and
already holds the global logging lock so there's no reason to hold
the big lock.
Idan Horowitz 4 anos atrás
pai
commit
c7ad4c6c32
2 arquivos alterados com 2 adições e 2 exclusões
  1. 1 1
      Kernel/API/Syscall.h
  2. 1 1
      Kernel/Syscalls/debug.cpp

+ 1 - 1
Kernel/API/Syscall.h

@@ -146,7 +146,7 @@ enum class NeedsBigProcessLock {
     S(umount, NeedsBigProcessLock::Yes)                     \
     S(dump_backtrace, NeedsBigProcessLock::No)              \
     S(dbgputch, NeedsBigProcessLock::Yes)                   \
-    S(dbgputstr, NeedsBigProcessLock::Yes)                  \
+    S(dbgputstr, NeedsBigProcessLock::No)                   \
     S(create_inode_watcher, NeedsBigProcessLock::Yes)       \
     S(inode_watcher_add_watch, NeedsBigProcessLock::Yes)    \
     S(inode_watcher_remove_watch, NeedsBigProcessLock::Yes) \

+ 1 - 1
Kernel/Syscalls/debug.cpp

@@ -27,7 +27,7 @@ KResultOr<FlatPtr> Process::sys$dbgputch(u8 ch)
 
 KResultOr<FlatPtr> Process::sys$dbgputstr(Userspace<const u8*> characters, size_t size)
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
+    VERIFY_NO_PROCESS_BIG_LOCK(this);
     if (size == 0)
         return 0;