summaryrefslogtreecommitdiff
path: root/Kernel/Syscall.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/Syscall.cpp')
-rw-r--r--Kernel/Syscall.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/Kernel/Syscall.cpp b/Kernel/Syscall.cpp
index a0e73b9620..a0d297e96e 100644
--- a/Kernel/Syscall.cpp
+++ b/Kernel/Syscall.cpp
@@ -119,6 +119,14 @@ int handle(RegisterDump& regs, u32 function, u32 arg1, u32 arg2, u32 arg3)
void syscall_handler(RegisterDump regs)
{
+ // Special handling of the "gettid" syscall since it's extremely hot.
+ // FIXME: Remove this hack once userspace locks stop calling it so damn much.
+ if (regs.eax == SC_gettid) {
+ regs.eax = current->process().sys$gettid();
+ current->did_syscall();
+ return;
+ }
+
// Make sure SMAP protection is enabled on syscall entry.
clac();