kernel/process: Remove use of global system accessors

Now that we pass in a reference to the system instance, we can utilize
it to eliminate the global accessors in Process-related code.
This commit is contained in:
Lioncash 2019-03-12 19:03:26 -04:00
parent 3bfd199497
commit 6eddb60db0
2 changed files with 9 additions and 8 deletions

View File

@ -133,7 +133,7 @@ void Process::PrepareForTermination() {
if (thread->GetOwnerProcess() != this) if (thread->GetOwnerProcess() != this)
continue; continue;
if (thread == GetCurrentThread()) if (thread == system.CurrentScheduler().GetCurrentThread())
continue; continue;
// TODO(Subv): When are the other running/ready threads terminated? // TODO(Subv): When are the other running/ready threads terminated?
@ -145,7 +145,6 @@ void Process::PrepareForTermination() {
} }
}; };
const auto& system = Core::System::GetInstance();
stop_threads(system.Scheduler(0).GetThreadList()); stop_threads(system.Scheduler(0).GetThreadList());
stop_threads(system.Scheduler(1).GetThreadList()); stop_threads(system.Scheduler(1).GetThreadList());
stop_threads(system.Scheduler(2).GetThreadList()); stop_threads(system.Scheduler(2).GetThreadList());
@ -228,13 +227,11 @@ void Process::LoadModule(CodeSet module_, VAddr base_addr) {
MapSegment(module_.DataSegment(), VMAPermission::ReadWrite, MemoryState::CodeMutable); MapSegment(module_.DataSegment(), VMAPermission::ReadWrite, MemoryState::CodeMutable);
// Clear instruction cache in CPU JIT // Clear instruction cache in CPU JIT
Core::System::GetInstance().ArmInterface(0).ClearInstructionCache(); system.InvalidateCpuInstructionCaches();
Core::System::GetInstance().ArmInterface(1).ClearInstructionCache();
Core::System::GetInstance().ArmInterface(2).ClearInstructionCache();
Core::System::GetInstance().ArmInterface(3).ClearInstructionCache();
} }
Process::Process(Core::System& system) : WaitObject{system.Kernel()}, address_arbiter{system} {} Process::Process(Core::System& system)
: WaitObject{system.Kernel()}, address_arbiter{system}, system{system} {}
Process::~Process() = default; Process::~Process() = default;
void Process::Acquire(Thread* thread) { void Process::Acquire(Thread* thread) {

View File

@ -266,7 +266,7 @@ public:
void FreeTLSSlot(VAddr tls_address); void FreeTLSSlot(VAddr tls_address);
private: private:
explicit Process(Core::System& kernel); explicit Process(Core::System& system);
~Process() override; ~Process() override;
/// Checks if the specified thread should wait until this process is available. /// Checks if the specified thread should wait until this process is available.
@ -330,6 +330,10 @@ private:
/// Random values for svcGetInfo RandomEntropy /// Random values for svcGetInfo RandomEntropy
std::array<u64, RANDOM_ENTROPY_SIZE> random_entropy; std::array<u64, RANDOM_ENTROPY_SIZE> random_entropy;
/// System context
Core::System& system;
/// Name of this process
std::string name; std::string name;
}; };