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:
parent
3bfd199497
commit
6eddb60db0
|
@ -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) {
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Reference in New Issue