diff options
| author | 2019-03-29 17:02:57 -0400 | |
|---|---|---|
| committer | 2019-10-15 11:55:07 -0400 | |
| commit | 57a71f899a95ccaa2984c1cb35c083221a29fd6e (patch) | |
| tree | 497f639114e7d26b9030600fb58d2474cc2883f0 /src | |
| parent | Addapt thread class to the new Scheduler (diff) | |
| download | yuzu-57a71f899a95ccaa2984c1cb35c083221a29fd6e.tar.gz yuzu-57a71f899a95ccaa2984c1cb35c083221a29fd6e.tar.xz yuzu-57a71f899a95ccaa2984c1cb35c083221a29fd6e.zip | |
Add interfacing to the Global Scheduler
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/core.cpp | 10 | ||||
| -rw-r--r-- | src/core/core.h | 7 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 10 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.h | 7 |
4 files changed, 34 insertions, 0 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp index 4d0ac72a5..5565840fd 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -444,6 +444,16 @@ const Kernel::Scheduler& System::Scheduler(std::size_t core_index) const { | |||
| 444 | return CpuCore(core_index).Scheduler(); | 444 | return CpuCore(core_index).Scheduler(); |
| 445 | } | 445 | } |
| 446 | 446 | ||
| 447 | /// Gets the global scheduler | ||
| 448 | Kernel::GlobalScheduler& System::GlobalScheduler() { | ||
| 449 | return impl->kernel.GlobalScheduler(); | ||
| 450 | } | ||
| 451 | |||
| 452 | /// Gets the global scheduler | ||
| 453 | const Kernel::GlobalScheduler& System::GlobalScheduler() const { | ||
| 454 | return impl->kernel.GlobalScheduler(); | ||
| 455 | } | ||
| 456 | |||
| 447 | Kernel::Process* System::CurrentProcess() { | 457 | Kernel::Process* System::CurrentProcess() { |
| 448 | return impl->kernel.CurrentProcess(); | 458 | return impl->kernel.CurrentProcess(); |
| 449 | } | 459 | } |
diff --git a/src/core/core.h b/src/core/core.h index 90e7ac607..2a002f6d7 100644 --- a/src/core/core.h +++ b/src/core/core.h | |||
| @@ -27,6 +27,7 @@ namespace Kernel { | |||
| 27 | class KernelCore; | 27 | class KernelCore; |
| 28 | class Process; | 28 | class Process; |
| 29 | class Scheduler; | 29 | class Scheduler; |
| 30 | class GlobalScheduler; | ||
| 30 | } // namespace Kernel | 31 | } // namespace Kernel |
| 31 | 32 | ||
| 32 | namespace Loader { | 33 | namespace Loader { |
| @@ -238,6 +239,12 @@ public: | |||
| 238 | /// Gets the scheduler for the CPU core with the specified index | 239 | /// Gets the scheduler for the CPU core with the specified index |
| 239 | const Kernel::Scheduler& Scheduler(std::size_t core_index) const; | 240 | const Kernel::Scheduler& Scheduler(std::size_t core_index) const; |
| 240 | 241 | ||
| 242 | /// Gets the global scheduler | ||
| 243 | Kernel::GlobalScheduler& GlobalScheduler(); | ||
| 244 | |||
| 245 | /// Gets the global scheduler | ||
| 246 | const Kernel::GlobalScheduler& GlobalScheduler() const; | ||
| 247 | |||
| 241 | /// Provides a pointer to the current process | 248 | /// Provides a pointer to the current process |
| 242 | Kernel::Process* CurrentProcess(); | 249 | Kernel::Process* CurrentProcess(); |
| 243 | 250 | ||
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 799e5e0d8..b4fd1d3f3 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include "core/hle/kernel/kernel.h" | 18 | #include "core/hle/kernel/kernel.h" |
| 19 | #include "core/hle/kernel/process.h" | 19 | #include "core/hle/kernel/process.h" |
| 20 | #include "core/hle/kernel/resource_limit.h" | 20 | #include "core/hle/kernel/resource_limit.h" |
| 21 | #include "core/hle/kernel/scheduler.h" | ||
| 21 | #include "core/hle/kernel/thread.h" | 22 | #include "core/hle/kernel/thread.h" |
| 22 | #include "core/hle/lock.h" | 23 | #include "core/hle/lock.h" |
| 23 | #include "core/hle/result.h" | 24 | #include "core/hle/result.h" |
| @@ -140,6 +141,7 @@ struct KernelCore::Impl { | |||
| 140 | // Lists all processes that exist in the current session. | 141 | // Lists all processes that exist in the current session. |
| 141 | std::vector<SharedPtr<Process>> process_list; | 142 | std::vector<SharedPtr<Process>> process_list; |
| 142 | Process* current_process = nullptr; | 143 | Process* current_process = nullptr; |
| 144 | Kernel::GlobalScheduler global_scheduler; | ||
| 143 | 145 | ||
| 144 | SharedPtr<ResourceLimit> system_resource_limit; | 146 | SharedPtr<ResourceLimit> system_resource_limit; |
| 145 | 147 | ||
| @@ -203,6 +205,14 @@ const std::vector<SharedPtr<Process>>& KernelCore::GetProcessList() const { | |||
| 203 | return impl->process_list; | 205 | return impl->process_list; |
| 204 | } | 206 | } |
| 205 | 207 | ||
| 208 | Kernel::GlobalScheduler& KernelCore::GlobalScheduler() { | ||
| 209 | return impl->global_scheduler; | ||
| 210 | } | ||
| 211 | |||
| 212 | const Kernel::GlobalScheduler& KernelCore::GlobalScheduler() const { | ||
| 213 | return impl->global_scheduler; | ||
| 214 | } | ||
| 215 | |||
| 206 | void KernelCore::AddNamedPort(std::string name, SharedPtr<ClientPort> port) { | 216 | void KernelCore::AddNamedPort(std::string name, SharedPtr<ClientPort> port) { |
| 207 | impl->named_ports.emplace(std::move(name), std::move(port)); | 217 | impl->named_ports.emplace(std::move(name), std::move(port)); |
| 208 | } | 218 | } |
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index 0cc44ee76..f9f5bdc88 100644 --- a/src/core/hle/kernel/kernel.h +++ b/src/core/hle/kernel/kernel.h | |||
| @@ -25,6 +25,7 @@ class HandleTable; | |||
| 25 | class Process; | 25 | class Process; |
| 26 | class ResourceLimit; | 26 | class ResourceLimit; |
| 27 | class Thread; | 27 | class Thread; |
| 28 | class GlobalScheduler; | ||
| 28 | 29 | ||
| 29 | /// Represents a single instance of the kernel. | 30 | /// Represents a single instance of the kernel. |
| 30 | class KernelCore { | 31 | class KernelCore { |
| @@ -75,6 +76,12 @@ public: | |||
| 75 | /// Retrieves the list of processes. | 76 | /// Retrieves the list of processes. |
| 76 | const std::vector<SharedPtr<Process>>& GetProcessList() const; | 77 | const std::vector<SharedPtr<Process>>& GetProcessList() const; |
| 77 | 78 | ||
| 79 | /// Gets the sole instance of the global scheduler | ||
| 80 | Kernel::GlobalScheduler& GlobalScheduler(); | ||
| 81 | |||
| 82 | /// Gets the sole instance of the global scheduler | ||
| 83 | const Kernel::GlobalScheduler& GlobalScheduler() const; | ||
| 84 | |||
| 78 | /// Adds a port to the named port table | 85 | /// Adds a port to the named port table |
| 79 | void AddNamedPort(std::string name, SharedPtr<ClientPort> port); | 86 | void AddNamedPort(std::string name, SharedPtr<ClientPort> port); |
| 80 | 87 | ||