From 33cdc1d2f141cf216501465a80c8c3198d005f6a Mon Sep 17 00:00:00 2001 From: Tom Date: Mon, 25 Jan 2021 16:37:36 -0700 Subject: [PATCH] Kernel: Use new Thread::previous_mode to track ticks --- Kernel/Scheduler.cpp | 2 +- Kernel/Thread.cpp | 4 ++-- Kernel/Thread.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Kernel/Scheduler.cpp b/Kernel/Scheduler.cpp index f949f60462..1d29ffb5fc 100644 --- a/Kernel/Scheduler.cpp +++ b/Kernel/Scheduler.cpp @@ -500,7 +500,7 @@ void Scheduler::timer_tick(const RegisterState& regs) [[maybe_unused]] auto rc = perf_events.append_with_eip_and_ebp(regs.eip, regs.ebp, PERF_EVENT_SAMPLE, 0, 0); } - if (current_thread->tick((regs.cs & 3) == 0)) + if (current_thread->tick()) return; ASSERT_INTERRUPTS_DISABLED(); diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index 17f8748b36..7bef932346 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -413,9 +413,9 @@ void Thread::finalize_dying_threads() } } -bool Thread::tick(bool in_kernel) +bool Thread::tick() { - if (in_kernel) { + if (previous_mode() == PreviousMode::KernelMode) { ++m_process->m_ticks_in_kernel; ++m_ticks_in_kernel; } else { diff --git a/Kernel/Thread.h b/Kernel/Thread.h index 94cda9b7c2..52fa204e6d 100644 --- a/Kernel/Thread.h +++ b/Kernel/Thread.h @@ -971,7 +971,7 @@ public: void exit(void* = nullptr); - bool tick(bool in_kernel); + bool tick(); void set_ticks_left(u32 t) { m_ticks_left = t; } u32 ticks_left() const { return m_ticks_left; }