summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-09-07 02:34:51 +0200
committerLioncash <mathew1800@gmail.com>2018-09-07 02:52:58 +0200
commit3f17fe71334a27a60bf54adc55eabe2356ed31f5 (patch)
tree11fd2e48608908feb95c9024e3bd8e1267ec538a /src/core/hle/kernel
parentMerge pull request #1250 from lioncash/file-sys (diff)
downloadyuzu-3f17fe71334a27a60bf54adc55eabe2356ed31f5.tar
yuzu-3f17fe71334a27a60bf54adc55eabe2356ed31f5.tar.gz
yuzu-3f17fe71334a27a60bf54adc55eabe2356ed31f5.tar.bz2
yuzu-3f17fe71334a27a60bf54adc55eabe2356ed31f5.tar.lz
yuzu-3f17fe71334a27a60bf54adc55eabe2356ed31f5.tar.xz
yuzu-3f17fe71334a27a60bf54adc55eabe2356ed31f5.tar.zst
yuzu-3f17fe71334a27a60bf54adc55eabe2356ed31f5.zip
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/kernel.cpp14
-rw-r--r--src/core/hle/kernel/kernel.h9
2 files changed, 23 insertions, 0 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 7902c2882..3e0800a71 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -116,6 +116,7 @@ struct KernelCore::Impl {
next_thread_id = 1;
process_list.clear();
+ current_process.reset();
handle_table.Clear();
resource_limits.fill(nullptr);
@@ -206,6 +207,7 @@ struct KernelCore::Impl {
// Lists all processes that exist in the current session.
std::vector<SharedPtr<Process>> process_list;
+ SharedPtr<Process> current_process;
Kernel::HandleTable handle_table;
std::array<SharedPtr<ResourceLimit>, 4> resource_limits;
@@ -264,6 +266,18 @@ void KernelCore::AppendNewProcess(SharedPtr<Process> process) {
impl->process_list.push_back(std::move(process));
}
+void KernelCore::MakeCurrentProcess(SharedPtr<Process> process) {
+ impl->current_process = std::move(process);
+}
+
+SharedPtr<Process>& KernelCore::CurrentProcess() {
+ return impl->current_process;
+}
+
+const SharedPtr<Process>& KernelCore::CurrentProcess() const {
+ return impl->current_process;
+}
+
void KernelCore::AddNamedPort(std::string name, SharedPtr<ClientPort> port) {
impl->named_ports.emplace(std::move(name), std::move(port));
}
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index ab2e9bffa..c0771ecf0 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -65,6 +65,15 @@ public:
/// Adds the given shared pointer to an internal list of active processes.
void AppendNewProcess(SharedPtr<Process> process);
+ /// Makes the given process the new current process.
+ void MakeCurrentProcess(SharedPtr<Process> process);
+
+ /// Retrieves a reference to the current process.
+ SharedPtr<Process>& CurrentProcess();
+
+ /// Retrieves a const reference to the current process.
+ const SharedPtr<Process>& CurrentProcess() const;
+
/// Adds a port to the named port table
void AddNamedPort(std::string name, SharedPtr<ClientPort> port);