cpu_manager: properly check idle on return from preemption
This commit is contained in:
		| @@ -194,7 +194,9 @@ void CpuManager::PreemptSingleCore(bool from_running_enviroment) { | |||||||
|     { |     { | ||||||
|         auto& scheduler = system.Kernel().Scheduler(current_core); |         auto& scheduler = system.Kernel().Scheduler(current_core); | ||||||
|         scheduler.Reload(scheduler.GetSchedulerCurrentThread()); |         scheduler.Reload(scheduler.GetSchedulerCurrentThread()); | ||||||
|         idle_count = 0; |         if (!scheduler.IsIdle()) { | ||||||
|  |             idle_count = 0; | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -55,6 +55,11 @@ public: | |||||||
|         return idle_thread; |         return idle_thread; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /// Returns true if the scheduler is idle | ||||||
|  |     [[nodiscard]] bool IsIdle() const { | ||||||
|  |         return GetSchedulerCurrentThread() == idle_thread; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /// Gets the timestamp for the last context switch in ticks. |     /// Gets the timestamp for the last context switch in ticks. | ||||||
|     [[nodiscard]] u64 GetLastContextSwitchTicks() const; |     [[nodiscard]] u64 GetLastContextSwitchTicks() const; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user