mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Replace g_kernel with Core::Global etc.
This commit is contained in:
		
							parent
							
								
									e707685c2a
								
							
						
					
					
						commit
						3e752002c4
					
				
					 15 changed files with 43 additions and 17 deletions
				
			
		
							
								
								
									
										2
									
								
								TODO
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								TODO
									
										
									
									
									
								
							|  | @ -26,7 +26,7 @@ | ||||||
|     ✔ Shader @done(19-08-13 16:03) |     ✔ Shader @done(19-08-13 16:03) | ||||||
| ☐ HLE @started(19-08-13 16:43) | ☐ HLE @started(19-08-13 16:43) | ||||||
|     ☐ Kernel @started(19-08-13 16:43) |     ☐ Kernel @started(19-08-13 16:43) | ||||||
|         Most of these require adding g_kernel |         Most of these require adding Core::Global | ||||||
|         ✔ Address arbiter @done(19-08-13 16:40) |         ✔ Address arbiter @done(19-08-13 16:40) | ||||||
|         ✔ Client port @done(19-08-13 16:40) |         ✔ Client port @done(19-08-13 16:40) | ||||||
|         ✔ Client session @done(19-08-13 16:40) |         ✔ Client session @done(19-08-13 16:40) | ||||||
|  |  | ||||||
|  | @ -25,6 +25,7 @@ | ||||||
| #endif | #endif | ||||||
| #include "core/custom_tex_cache.h" | #include "core/custom_tex_cache.h" | ||||||
| #include "core/gdbstub/gdbstub.h" | #include "core/gdbstub/gdbstub.h" | ||||||
|  | #include "core/global.h" | ||||||
| #include "core/hle/kernel/client_port.h" | #include "core/hle/kernel/client_port.h" | ||||||
| #include "core/hle/kernel/kernel.h" | #include "core/hle/kernel/kernel.h" | ||||||
| #include "core/hle/kernel/process.h" | #include "core/hle/kernel/process.h" | ||||||
|  | @ -46,6 +47,12 @@ namespace Core { | ||||||
| 
 | 
 | ||||||
| /*static*/ System System::s_instance; | /*static*/ System System::s_instance; | ||||||
| 
 | 
 | ||||||
|  | template <> | ||||||
|  | Core::System& Global() { return System::GetInstance(); } | ||||||
|  | 
 | ||||||
|  | template <> | ||||||
|  | Kernel::KernelSystem& Global() { return System::GetInstance().Kernel(); } | ||||||
|  | 
 | ||||||
| System::ResultStatus System::RunLoop(bool tight_loop) { | System::ResultStatus System::RunLoop(bool tight_loop) { | ||||||
|     status = ResultStatus::Success; |     status = ResultStatus::Success; | ||||||
|     if (!cpu_core) { |     if (!cpu_core) { | ||||||
|  | @ -204,7 +211,6 @@ System::ResultStatus System::Init(Frontend::EmuWindow& emu_window, u32 system_mo | ||||||
| 
 | 
 | ||||||
|     kernel = std::make_unique<Kernel::KernelSystem>(*memory, *timing, |     kernel = std::make_unique<Kernel::KernelSystem>(*memory, *timing, | ||||||
|                                                     [this] { PrepareReschedule(); }, system_mode); |                                                     [this] { PrepareReschedule(); }, system_mode); | ||||||
|     Kernel::g_kernel = kernel.get(); |  | ||||||
| 
 | 
 | ||||||
|     if (Settings::values.use_cpu_jit) { |     if (Settings::values.use_cpu_jit) { | ||||||
| #ifdef ARCHITECTURE_x86_64 | #ifdef ARCHITECTURE_x86_64 | ||||||
|  | @ -368,7 +374,6 @@ void System::Shutdown() { | ||||||
|     service_manager.reset(); |     service_manager.reset(); | ||||||
|     dsp_core.reset(); |     dsp_core.reset(); | ||||||
|     cpu_core.reset(); |     cpu_core.reset(); | ||||||
|     Kernel::g_kernel = nullptr; |  | ||||||
|     kernel.reset(); |     kernel.reset(); | ||||||
|     timing.reset(); |     timing.reset(); | ||||||
|     app_loader.reset(); |     app_loader.reset(); | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								src/core/global.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/core/global.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | namespace Core { | ||||||
|  | 
 | ||||||
|  | template <class T> | ||||||
|  | T& Global(); | ||||||
|  | 
 | ||||||
|  | } // namespace Core
 | ||||||
|  | @ -11,6 +11,7 @@ | ||||||
| #include "core/hle/kernel/kernel.h" | #include "core/hle/kernel/kernel.h" | ||||||
| #include "core/hle/kernel/thread.h" | #include "core/hle/kernel/thread.h" | ||||||
| #include "core/memory.h" | #include "core/memory.h" | ||||||
|  | #include "core/global.h" | ||||||
| 
 | 
 | ||||||
| ////////////////////////////////////////////////////////////////////////////////////////////////////
 | ////////////////////////////////////////////////////////////////////////////////////////////////////
 | ||||||
| // Kernel namespace
 | // Kernel namespace
 | ||||||
|  | @ -68,7 +69,7 @@ std::shared_ptr<Thread> AddressArbiter::ResumeHighestPriorityThread(VAddr addres | ||||||
|     return thread; |     return thread; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| AddressArbiter::AddressArbiter() : kernel(*g_kernel) {} | AddressArbiter::AddressArbiter() : kernel(Core::Global<KernelSystem>()) {} | ||||||
| AddressArbiter::~AddressArbiter() {} | AddressArbiter::~AddressArbiter() {} | ||||||
| 
 | 
 | ||||||
| std::shared_ptr<AddressArbiter> KernelSystem::CreateAddressArbiter(std::string name) { | std::shared_ptr<AddressArbiter> KernelSystem::CreateAddressArbiter(std::string name) { | ||||||
|  |  | ||||||
|  | @ -11,6 +11,7 @@ | ||||||
| #include "core/hle/kernel/object.h" | #include "core/hle/kernel/object.h" | ||||||
| #include "core/hle/kernel/server_port.h" | #include "core/hle/kernel/server_port.h" | ||||||
| #include "core/hle/kernel/server_session.h" | #include "core/hle/kernel/server_session.h" | ||||||
|  | #include "core/global.h" | ||||||
| 
 | 
 | ||||||
| SERIALIZE_EXPORT_IMPL(Kernel::ClientPort) | SERIALIZE_EXPORT_IMPL(Kernel::ClientPort) | ||||||
| 
 | 
 | ||||||
|  | @ -26,7 +27,7 @@ ResultVal<std::shared_ptr<ClientSession>> ClientPort::Connect() { | ||||||
|     active_sessions++; |     active_sessions++; | ||||||
| 
 | 
 | ||||||
|     // Create a new session pair, let the created sessions inherit the parent port's HLE handler.
 |     // Create a new session pair, let the created sessions inherit the parent port's HLE handler.
 | ||||||
|     auto [server, client] = g_kernel->CreateSessionPair(server_port->GetName(), SharedFrom(this)); |     auto [server, client] = Core::Global<KernelSystem>().CreateSessionPair(server_port->GetName(), SharedFrom(this)); | ||||||
| 
 | 
 | ||||||
|     if (server_port->hle_handler) |     if (server_port->hle_handler) | ||||||
|         server_port->hle_handler->ClientConnected(server); |         server_port->hle_handler->ClientConnected(server); | ||||||
|  |  | ||||||
|  | @ -18,8 +18,6 @@ | ||||||
| 
 | 
 | ||||||
| namespace Kernel { | namespace Kernel { | ||||||
| 
 | 
 | ||||||
| KernelSystem* g_kernel; |  | ||||||
| 
 |  | ||||||
| /// Initialize the kernel
 | /// Initialize the kernel
 | ||||||
| KernelSystem::KernelSystem(Memory::MemorySystem& memory, Core::Timing& timing, | KernelSystem::KernelSystem(Memory::MemorySystem& memory, Core::Timing& timing, | ||||||
|                            std::function<void()> prepare_reschedule_callback, u32 system_mode) |                            std::function<void()> prepare_reschedule_callback, u32 system_mode) | ||||||
|  |  | ||||||
|  | @ -292,6 +292,4 @@ private: | ||||||
|     void serialize(Archive& ar, const unsigned int file_version); |     void serialize(Archive& ar, const unsigned int file_version); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| extern KernelSystem* g_kernel; |  | ||||||
| 
 |  | ||||||
| } // namespace Kernel
 | } // namespace Kernel
 | ||||||
|  |  | ||||||
|  | @ -12,6 +12,7 @@ | ||||||
| #include "core/hle/kernel/mutex.h" | #include "core/hle/kernel/mutex.h" | ||||||
| #include "core/hle/kernel/object.h" | #include "core/hle/kernel/object.h" | ||||||
| #include "core/hle/kernel/thread.h" | #include "core/hle/kernel/thread.h" | ||||||
|  | #include "core/global.h" | ||||||
| 
 | 
 | ||||||
| SERIALIZE_EXPORT_IMPL(Kernel::Mutex) | SERIALIZE_EXPORT_IMPL(Kernel::Mutex) | ||||||
| 
 | 
 | ||||||
|  | @ -26,7 +27,7 @@ void ReleaseThreadMutexes(Thread* thread) { | ||||||
|     thread->held_mutexes.clear(); |     thread->held_mutexes.clear(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Mutex::Mutex() : kernel(*g_kernel) {} | Mutex::Mutex() : kernel(Core::Global<KernelSystem>()) {} | ||||||
| Mutex::~Mutex() {} | Mutex::~Mutex() {} | ||||||
| 
 | 
 | ||||||
| std::shared_ptr<Mutex> KernelSystem::CreateMutex(bool initial_locked, std::string name) { | std::shared_ptr<Mutex> KernelSystem::CreateMutex(bool initial_locked, std::string name) { | ||||||
|  |  | ||||||
|  | @ -18,6 +18,7 @@ | ||||||
| #include "core/hle/kernel/thread.h" | #include "core/hle/kernel/thread.h" | ||||||
| #include "core/hle/kernel/vm_manager.h" | #include "core/hle/kernel/vm_manager.h" | ||||||
| #include "core/memory.h" | #include "core/memory.h" | ||||||
|  | #include "core/global.h" | ||||||
| 
 | 
 | ||||||
| namespace Kernel { | namespace Kernel { | ||||||
| 
 | 
 | ||||||
|  | @ -427,7 +428,11 @@ ResultCode Process::Unmap(VAddr target, VAddr source, u32 size, VMAPermission pe | ||||||
|     return RESULT_SUCCESS; |     return RESULT_SUCCESS; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Kernel::Process::Process() : kernel(*g_kernel), handle_table(*g_kernel), vm_manager(g_kernel->memory) | Kernel::Process::Process() : Kernel::Process::Process(Core::Global<KernelSystem>()) | ||||||
|  | { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Kernel::Process::Process(KernelSystem& kernel) : kernel(kernel), handle_table(kernel), vm_manager(kernel.memory) | ||||||
| { | { | ||||||
|     kernel.memory.RegisterPageTable(&vm_manager.page_table); |     kernel.memory.RegisterPageTable(&vm_manager.page_table); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -143,7 +143,8 @@ private: | ||||||
| 
 | 
 | ||||||
| class Process final : public Object { | class Process final : public Object { | ||||||
| public: | public: | ||||||
|     explicit Process(); |     Process(); | ||||||
|  |     explicit Process(KernelSystem& kernel); | ||||||
|     ~Process() override; |     ~Process() override; | ||||||
| 
 | 
 | ||||||
|     std::string GetTypeName() const override { |     std::string GetTypeName() const override { | ||||||
|  |  | ||||||
|  | @ -10,12 +10,13 @@ | ||||||
| #include "core/hle/kernel/server_session.h" | #include "core/hle/kernel/server_session.h" | ||||||
| #include "core/hle/kernel/session.h" | #include "core/hle/kernel/session.h" | ||||||
| #include "core/hle/kernel/thread.h" | #include "core/hle/kernel/thread.h" | ||||||
|  | #include "core/global.h" | ||||||
| 
 | 
 | ||||||
| SERIALIZE_EXPORT_IMPL(Kernel::ServerSession) | SERIALIZE_EXPORT_IMPL(Kernel::ServerSession) | ||||||
| 
 | 
 | ||||||
| namespace Kernel { | namespace Kernel { | ||||||
| 
 | 
 | ||||||
| ServerSession::ServerSession() : kernel(*g_kernel) {} | ServerSession::ServerSession() : kernel(Core::Global<KernelSystem>()) {} | ||||||
| ServerSession::~ServerSession() { | ServerSession::~ServerSession() { | ||||||
|     // This destructor will be called automatically when the last ServerSession handle is closed by
 |     // This destructor will be called automatically when the last ServerSession handle is closed by
 | ||||||
|     // the emulated application.
 |     // the emulated application.
 | ||||||
|  |  | ||||||
|  | @ -24,6 +24,7 @@ | ||||||
| #include "core/hle/kernel/thread.h" | #include "core/hle/kernel/thread.h" | ||||||
| #include "core/hle/result.h" | #include "core/hle/result.h" | ||||||
| #include "core/memory.h" | #include "core/memory.h" | ||||||
|  | #include "core/global.h" | ||||||
| 
 | 
 | ||||||
| SERIALIZE_EXPORT_IMPL(Kernel::Thread) | SERIALIZE_EXPORT_IMPL(Kernel::Thread) | ||||||
| 
 | 
 | ||||||
|  | @ -66,8 +67,8 @@ u32 ThreadManager::NewThreadId() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Thread::Thread() | Thread::Thread() | ||||||
|     : context(g_kernel->GetThreadManager().NewContext()), |     : context(Core::Global<KernelSystem>().GetThreadManager().NewContext()), | ||||||
|       thread_manager(g_kernel->GetThreadManager()) {} |       thread_manager(Core::Global<KernelSystem>().GetThreadManager()) {} | ||||||
| Thread::~Thread() {} | Thread::~Thread() {} | ||||||
| 
 | 
 | ||||||
| Thread* ThreadManager::GetCurrentThread() const { | Thread* ThreadManager::GetCurrentThread() const { | ||||||
|  |  | ||||||
|  | @ -11,10 +11,11 @@ | ||||||
| #include "core/hle/kernel/object.h" | #include "core/hle/kernel/object.h" | ||||||
| #include "core/hle/kernel/thread.h" | #include "core/hle/kernel/thread.h" | ||||||
| #include "core/hle/kernel/timer.h" | #include "core/hle/kernel/timer.h" | ||||||
|  | #include "core/global.h" | ||||||
| 
 | 
 | ||||||
| namespace Kernel { | namespace Kernel { | ||||||
| 
 | 
 | ||||||
| Timer::Timer() : kernel(*g_kernel), timer_manager(g_kernel->GetTimerManager()) {} | Timer::Timer() : kernel(Core::Global<KernelSystem>()), timer_manager(Core::Global<KernelSystem>().GetTimerManager()) {} | ||||||
| Timer::~Timer() { | Timer::~Timer() { | ||||||
|     Cancel(); |     Cancel(); | ||||||
|     timer_manager.timer_callback_table.erase(callback_id); |     timer_manager.timer_callback_table.erase(callback_id); | ||||||
|  |  | ||||||
|  | @ -18,6 +18,7 @@ | ||||||
| #include "core/hle/kernel/mutex.h" | #include "core/hle/kernel/mutex.h" | ||||||
| #include "core/hle/result.h" | #include "core/hle/result.h" | ||||||
| #include "core/hle/service/service.h" | #include "core/hle/service/service.h" | ||||||
|  | #include "core/global.h" | ||||||
| 
 | 
 | ||||||
| namespace Core { | namespace Core { | ||||||
| class System; | class System; | ||||||
|  | @ -601,6 +602,6 @@ namespace boost::serialization { | ||||||
|     template <class Archive> |     template <class Archive> | ||||||
|     inline void load_construct_data(Archive& ar, Service::AM::Module* t, const unsigned int) |     inline void load_construct_data(Archive& ar, Service::AM::Module* t, const unsigned int) | ||||||
|     { |     { | ||||||
|         ::new(t)Service::AM::Module(*Kernel::g_kernel); |         ::new(t)Service::AM::Module(Core::Global<Kernel::KernelSystem>()); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -8,6 +8,12 @@ | ||||||
| #include "video_core/pica_state.h" | #include "video_core/pica_state.h" | ||||||
| #include "video_core/renderer_base.h" | #include "video_core/renderer_base.h" | ||||||
| #include "video_core/video_core.h" | #include "video_core/video_core.h" | ||||||
|  | #include "core/global.h" | ||||||
|  | 
 | ||||||
|  | namespace Core { | ||||||
|  |     template <> | ||||||
|  |     Pica::State& Global() { return Pica::g_state; } | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| namespace Pica { | namespace Pica { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue