forked from suyu/suyu
Kernel: Remove global system accessor from WaitObject
This commit is contained in:
parent
0cf26cee59
commit
e05a8c2385
4 changed files with 17 additions and 2 deletions
|
@ -229,6 +229,14 @@ const Kernel::GlobalScheduler& KernelCore::GlobalScheduler() const {
|
||||||
return impl->global_scheduler;
|
return impl->global_scheduler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Core::System& KernelCore::System() {
|
||||||
|
return impl->system;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Core::System& KernelCore::System() const {
|
||||||
|
return impl->system;
|
||||||
|
}
|
||||||
|
|
||||||
void KernelCore::AddNamedPort(std::string name, SharedPtr<ClientPort> port) {
|
void KernelCore::AddNamedPort(std::string name, SharedPtr<ClientPort> port) {
|
||||||
impl->named_ports.emplace(std::move(name), std::move(port));
|
impl->named_ports.emplace(std::move(name), std::move(port));
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,6 +82,12 @@ public:
|
||||||
/// Gets the sole instance of the global scheduler
|
/// Gets the sole instance of the global scheduler
|
||||||
const Kernel::GlobalScheduler& GlobalScheduler() const;
|
const Kernel::GlobalScheduler& GlobalScheduler() const;
|
||||||
|
|
||||||
|
/// Gets the sole instance of the system
|
||||||
|
Core::System& System();
|
||||||
|
|
||||||
|
/// Gets the sole instance of the system
|
||||||
|
const Core::System& System() const;
|
||||||
|
|
||||||
/// Adds a port to the named port table
|
/// Adds a port to the named port table
|
||||||
void AddNamedPort(std::string name, SharedPtr<ClientPort> port);
|
void AddNamedPort(std::string name, SharedPtr<ClientPort> port);
|
||||||
|
|
||||||
|
|
|
@ -287,7 +287,7 @@ void GlobalScheduler::PreemptThreads() {
|
||||||
if (current_thread != nullptr && current_thread->GetPriority() > priority) {
|
if (current_thread != nullptr && current_thread->GetPriority() > priority) {
|
||||||
for (auto& thread : suggested_queue[core_id]) {
|
for (auto& thread : suggested_queue[core_id]) {
|
||||||
const s32 source_core = thread->GetProcessorID();
|
const s32 source_core = thread->GetProcessorID();
|
||||||
if (thread->GetPriority() > priority) {
|
if (thread->GetPriority() < priority) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (source_core >= 0) {
|
if (source_core >= 0) {
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "core/core.h"
|
#include "core/core.h"
|
||||||
#include "core/core_cpu.h"
|
#include "core/core_cpu.h"
|
||||||
|
#include "core/hle/kernel/kernel.h"
|
||||||
#include "core/hle/kernel/object.h"
|
#include "core/hle/kernel/object.h"
|
||||||
#include "core/hle/kernel/process.h"
|
#include "core/hle/kernel/process.h"
|
||||||
#include "core/hle/kernel/thread.h"
|
#include "core/hle/kernel/thread.h"
|
||||||
|
@ -97,7 +98,7 @@ void WaitObject::WakeupWaitingThread(SharedPtr<Thread> thread) {
|
||||||
}
|
}
|
||||||
if (resume) {
|
if (resume) {
|
||||||
thread->ResumeFromWait();
|
thread->ResumeFromWait();
|
||||||
Core::System::GetInstance().PrepareReschedule(thread->GetProcessorID());
|
kernel.System().PrepareReschedule(thread->GetProcessorID());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue