mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-30 23:49:01 -05:00 
			
		
		
		
	Merge pull request #1502 from lioncash/unique
core: Convert shared_ptr instances into unique_ptr instances where applicable for System and Cpu
This commit is contained in:
		| @@ -39,7 +39,7 @@ static std::vector<SharedPtr<Thread>> GetThreadsWaitingOnAddress(VAddr address) | ||||
|                                            std::vector<SharedPtr<Thread>>& waiting_threads, | ||||
|                                            VAddr arb_addr) { | ||||
|         const auto& scheduler = Core::System::GetInstance().Scheduler(core_index); | ||||
|         const auto& thread_list = scheduler->GetThreadList(); | ||||
|         const auto& thread_list = scheduler.GetThreadList(); | ||||
|  | ||||
|         for (const auto& thread : thread_list) { | ||||
|             if (thread->GetArbiterWaitAddress() == arb_addr) | ||||
|   | ||||
| @@ -153,11 +153,11 @@ void Process::PrepareForTermination() { | ||||
|         } | ||||
|     }; | ||||
|  | ||||
|     auto& system = Core::System::GetInstance(); | ||||
|     stop_threads(system.Scheduler(0)->GetThreadList()); | ||||
|     stop_threads(system.Scheduler(1)->GetThreadList()); | ||||
|     stop_threads(system.Scheduler(2)->GetThreadList()); | ||||
|     stop_threads(system.Scheduler(3)->GetThreadList()); | ||||
|     const auto& system = Core::System::GetInstance(); | ||||
|     stop_threads(system.Scheduler(0).GetThreadList()); | ||||
|     stop_threads(system.Scheduler(1).GetThreadList()); | ||||
|     stop_threads(system.Scheduler(2).GetThreadList()); | ||||
|     stop_threads(system.Scheduler(3).GetThreadList()); | ||||
| } | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -809,7 +809,7 @@ static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target | ||||
|                                            std::vector<SharedPtr<Thread>>& waiting_threads, | ||||
|                                            VAddr condvar_addr) { | ||||
|         const auto& scheduler = Core::System::GetInstance().Scheduler(core_index); | ||||
|         const auto& thread_list = scheduler->GetThreadList(); | ||||
|         const auto& thread_list = scheduler.GetThreadList(); | ||||
|  | ||||
|         for (const auto& thread : thread_list) { | ||||
|             if (thread->GetCondVarWaitAddress() == condvar_addr) | ||||
|   | ||||
| @@ -97,7 +97,7 @@ void Thread::CancelWakeupTimer() { | ||||
| static boost::optional<s32> GetNextProcessorId(u64 mask) { | ||||
|     for (s32 index = 0; index < Core::NUM_CPU_CORES; ++index) { | ||||
|         if (mask & (1ULL << index)) { | ||||
|             if (!Core::System::GetInstance().Scheduler(index)->GetCurrentThread()) { | ||||
|             if (!Core::System::GetInstance().Scheduler(index).GetCurrentThread()) { | ||||
|                 // Core is enabled and not running any threads, use this one | ||||
|                 return index; | ||||
|             } | ||||
| @@ -147,14 +147,14 @@ void Thread::ResumeFromWait() { | ||||
|         new_processor_id = processor_id; | ||||
|     } | ||||
|     if (ideal_core != -1 && | ||||
|         Core::System::GetInstance().Scheduler(ideal_core)->GetCurrentThread() == nullptr) { | ||||
|         Core::System::GetInstance().Scheduler(ideal_core).GetCurrentThread() == nullptr) { | ||||
|         new_processor_id = ideal_core; | ||||
|     } | ||||
|  | ||||
|     ASSERT(*new_processor_id < 4); | ||||
|  | ||||
|     // Add thread to new core's scheduler | ||||
|     auto& next_scheduler = Core::System::GetInstance().Scheduler(*new_processor_id); | ||||
|     auto* next_scheduler = &Core::System::GetInstance().Scheduler(*new_processor_id); | ||||
|  | ||||
|     if (*new_processor_id != processor_id) { | ||||
|         // Remove thread from previous core's scheduler | ||||
| @@ -169,7 +169,7 @@ void Thread::ResumeFromWait() { | ||||
|     next_scheduler->ScheduleThread(this, current_priority); | ||||
|  | ||||
|     // Change thread's scheduler | ||||
|     scheduler = next_scheduler.get(); | ||||
|     scheduler = next_scheduler; | ||||
|  | ||||
|     Core::System::GetInstance().CpuCore(processor_id).PrepareReschedule(); | ||||
| } | ||||
| @@ -230,7 +230,7 @@ ResultVal<SharedPtr<Thread>> Thread::Create(KernelCore& kernel, std::string name | ||||
|     thread->name = std::move(name); | ||||
|     thread->callback_handle = kernel.ThreadWakeupCallbackHandleTable().Create(thread).Unwrap(); | ||||
|     thread->owner_process = &owner_process; | ||||
|     thread->scheduler = Core::System::GetInstance().Scheduler(processor_id).get(); | ||||
|     thread->scheduler = &Core::System::GetInstance().Scheduler(processor_id); | ||||
|     thread->scheduler->AddThread(thread, priority); | ||||
|     thread->tls_address = thread->owner_process->MarkNextAvailableTLSSlotAsUsed(*thread); | ||||
|  | ||||
| @@ -375,14 +375,14 @@ void Thread::ChangeCore(u32 core, u64 mask) { | ||||
|         new_processor_id = processor_id; | ||||
|     } | ||||
|     if (ideal_core != -1 && | ||||
|         Core::System::GetInstance().Scheduler(ideal_core)->GetCurrentThread() == nullptr) { | ||||
|         Core::System::GetInstance().Scheduler(ideal_core).GetCurrentThread() == nullptr) { | ||||
|         new_processor_id = ideal_core; | ||||
|     } | ||||
|  | ||||
|     ASSERT(*new_processor_id < 4); | ||||
|  | ||||
|     // Add thread to new core's scheduler | ||||
|     auto& next_scheduler = Core::System::GetInstance().Scheduler(*new_processor_id); | ||||
|     auto* next_scheduler = &Core::System::GetInstance().Scheduler(*new_processor_id); | ||||
|  | ||||
|     if (*new_processor_id != processor_id) { | ||||
|         // Remove thread from previous core's scheduler | ||||
| @@ -397,7 +397,7 @@ void Thread::ChangeCore(u32 core, u64 mask) { | ||||
|     next_scheduler->ScheduleThread(this, current_priority); | ||||
|  | ||||
|     // Change thread's scheduler | ||||
|     scheduler = next_scheduler.get(); | ||||
|     scheduler = next_scheduler; | ||||
|  | ||||
|     Core::System::GetInstance().CpuCore(processor_id).PrepareReschedule(); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bunnei
					bunnei