From 8ec8ec8b1c1fab6d48277b80fd187059b4a45be4 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 18 Jul 2020 00:12:34 +0200 Subject: [PATCH] Kernel: Remove special-casing of sys$gettid() in syscall entry We had a fast-path for the gettid syscall that was useful before we started caching the thread ID in LibC. Just get rid of it. :^) --- Kernel/Syscall.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Kernel/Syscall.cpp b/Kernel/Syscall.cpp index ae0bf894cf..563fb53ad6 100644 --- a/Kernel/Syscall.cpp +++ b/Kernel/Syscall.cpp @@ -125,15 +125,7 @@ int handle(RegisterState& regs, u32 function, u32 arg1, u32 arg2, u32 arg3) void syscall_handler(TrapFrame* trap) { auto& regs = *trap->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. auto current_thread = Thread::current(); - auto& process = current_thread->process(); - if (regs.eax == SC_gettid) { - regs.eax = process.sys$gettid(); - current_thread->did_syscall(); - return; - } if (current_thread->tracer() && current_thread->tracer()->is_tracing_syscalls()) { current_thread->tracer()->set_trace_syscalls(false); @@ -149,6 +141,7 @@ void syscall_handler(TrapFrame* trap) asm volatile("" : "=m"(*ptr)); + auto& process = current_thread->process(); if (!MM.validate_user_stack(process, VirtualAddress(regs.userspace_esp))) { dbg() << "Invalid stack pointer: " << String::format("%p", regs.userspace_esp); handle_crash(regs, "Bad stack on syscall entry", SIGSTKFLT);