From 6f7d97cf940550b58cb70d035570000cdc9ef6ea Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sun, 30 Jul 2023 14:49:51 +0300 Subject: [PATCH] Kernel: Remove is_in_syscall from Thread --- kernel/arch/x86_64/IDT.cpp | 2 +- kernel/include/kernel/Thread.h | 4 ---- kernel/kernel/Syscall.cpp | 3 --- kernel/kernel/Thread.cpp | 1 - 4 files changed, 1 insertion(+), 9 deletions(-) diff --git a/kernel/arch/x86_64/IDT.cpp b/kernel/arch/x86_64/IDT.cpp index 78acea542d..81bb07d1e9 100644 --- a/kernel/arch/x86_64/IDT.cpp +++ b/kernel/arch/x86_64/IDT.cpp @@ -161,7 +161,7 @@ namespace IDT Kernel::Thread::current().set_return_rip(interrupt_stack.rip); } - if (tid && Kernel::Thread::current().is_userspace() && !Kernel::Thread::current().is_in_syscall()) + if (tid && Kernel::Thread::current().is_userspace()) { // TODO: Confirm and fix the exception to signal mappings diff --git a/kernel/include/kernel/Thread.h b/kernel/include/kernel/Thread.h index 8e23b2d09f..715bd66a28 100644 --- a/kernel/include/kernel/Thread.h +++ b/kernel/include/kernel/Thread.h @@ -80,10 +80,7 @@ namespace Kernel Process& process(); bool has_process() const { return m_process; } - void set_in_syscall(bool b) { m_in_syscall = b; } - bool is_userspace() const { return m_is_userspace; } - bool is_in_syscall() const { return m_in_syscall; } private: Thread(pid_t tid, Process*); @@ -102,7 +99,6 @@ namespace Kernel const pid_t m_tid { 0 }; State m_state { State::NotStarted }; Process* m_process { nullptr }; - bool m_in_syscall { false }; bool m_is_userspace { false }; uintptr_t* m_return_rsp { nullptr }; diff --git a/kernel/kernel/Syscall.cpp b/kernel/kernel/Syscall.cpp index 91260a7000..9b1895cd19 100644 --- a/kernel/kernel/Syscall.cpp +++ b/kernel/kernel/Syscall.cpp @@ -20,7 +20,6 @@ namespace Kernel extern "C" long cpp_syscall_handler(int syscall, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5, InterruptStack& interrupt_stack) { - Thread::current().set_in_syscall(true); Thread::current().set_return_rsp(interrupt_stack.rsp); Thread::current().set_return_rip(interrupt_stack.rip); @@ -173,8 +172,6 @@ namespace Kernel asm volatile("cli"); - Thread::current().set_in_syscall(false); - if (ret.is_error()) return -ret.error().get_error_code(); return ret.value(); diff --git a/kernel/kernel/Thread.cpp b/kernel/kernel/Thread.cpp index 51804c3f33..00d9ffd503 100644 --- a/kernel/kernel/Thread.cpp +++ b/kernel/kernel/Thread.cpp @@ -153,7 +153,6 @@ namespace Kernel thread->m_stack = TRY(m_stack->clone(new_process->page_table())); thread->m_state = State::Executing; - thread->m_in_syscall = true; thread->m_rip = rip; thread->m_rsp = rsp;