ソースを参照

Kernel: Disable big process lock for sys$dbgputch

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 年 前
コミット
b1f4f6ee15
2 ファイル変更2 行追加2 行削除
  1. 1 1
      Kernel/API/Syscall.h
  2. 1 1
      Kernel/Syscalls/debug.cpp

+ 1 - 1
Kernel/API/Syscall.h

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

+ 1 - 1
Kernel/Syscalls/debug.cpp

@@ -20,7 +20,7 @@ KResultOr<FlatPtr> Process::sys$dump_backtrace()
 
 KResultOr<FlatPtr> Process::sys$dbgputch(u8 ch)
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
+    VERIFY_NO_PROCESS_BIG_LOCK(this);
     dbgputch(ch);
     return 0;
 }