Kernel Scheduler: Make sure the global scheduler shutdowns correctly.
This commit is contained in:
		
				
					committed by
					
						
						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