mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-31 16:09:03 -05:00 
			
		
		
		
	Kernel Scheduler: Make sure the global scheduler shutdowns correctly.
This commit is contained in:
		 Fernando Sahmkow
					Fernando Sahmkow
				
			
				
					committed by
					
						 FernandoS27
						FernandoS27
					
				
			
			
				
	
			
			
			 FernandoS27
						FernandoS27
					
				
			
						parent
						
							b3c1deba49
						
					
				
				
					commit
					25f8606a6d
				
			| @@ -116,6 +116,8 @@ struct KernelCore::Impl { | ||||
|         thread_wakeup_event_type = nullptr; | ||||
|         preemption_event = nullptr; | ||||
|  | ||||
|         global_scheduler.Shutdown(); | ||||
|  | ||||
|         named_ports.clear(); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -342,6 +342,14 @@ bool GlobalScheduler::AskForReselectionOrMarkRedundant(Thread* current_thread, T | ||||
|     } | ||||
| } | ||||
|  | ||||
| void GlobalScheduler::Shutdown() { | ||||
|     for (std::size_t core = 0; core < NUM_CPU_CORES; core++) { | ||||
|         scheduled_queue[core].clear(); | ||||
|         suggested_queue[core].clear(); | ||||
|     } | ||||
|     thread_list.clear(); | ||||
| } | ||||
|  | ||||
| GlobalScheduler::~GlobalScheduler() = default; | ||||
|  | ||||
| Scheduler::Scheduler(Core::System& system, Core::ARM_Interface& cpu_core, u32 core_id) | ||||
|   | ||||
| @@ -147,6 +147,8 @@ public: | ||||
|         return reselection_pending.load(); | ||||
|     } | ||||
|  | ||||
|     void Shutdown(); | ||||
|  | ||||
| private: | ||||
|     bool AskForReselectionOrMarkRedundant(Thread* current_thread, Thread* winner); | ||||
|  | ||||
| @@ -189,6 +191,11 @@ public: | ||||
|         return context_switch_pending; | ||||
|     } | ||||
|  | ||||
|     void Shutdown() { | ||||
|         current_thread = nullptr; | ||||
|         selected_thread = nullptr; | ||||
|     } | ||||
|  | ||||
| private: | ||||
|     friend class GlobalScheduler; | ||||
|     /** | ||||
|   | ||||
		Reference in New Issue
	
	Block a user