aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/kernel_helpers.cpp
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-29 03:39:52 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-29 03:39:52 -0400
commite17fd9cef116a088f080ca502951e500864a58b6 (patch)
treee7ff65f614622515d6a2e4263521909eea89a5d8 /src/core/hle/service/kernel_helpers.cpp
parentea6c1193fbfa95e586bb6d129dc684163a12cb3e (diff)
parent80c79333fe6fd28a31b65b997f1cbf2987711c91 (diff)
Merge Switch 2 work from local Eden (nx2 at b0dd3fe)
Diffstat (limited to 'src/core/hle/service/kernel_helpers.cpp')
-rw-r--r--src/core/hle/service/kernel_helpers.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/core/hle/service/kernel_helpers.cpp b/src/core/hle/service/kernel_helpers.cpp
index f7a5cb7049..e4d6925f19 100644
--- a/src/core/hle/service/kernel_helpers.cpp
+++ b/src/core/hle/service/kernel_helpers.cpp
@@ -4,6 +4,9 @@
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
+#include <mutex>
+#include <unordered_map>
+
#include "core/core.h"
#include "core/core_timing.h"
#include "core/hle/kernel/k_event.h"
@@ -16,6 +19,12 @@
namespace Service::KernelHelpers {
+namespace {
+// Event names for the debugger's handle listing.
+std::mutex event_names_mutex;
+std::unordered_map<const Kernel::KEvent*, std::string> event_names;
+} // namespace
+
ServiceContext::ServiceContext(Core::System& system_, std::string name_)
: kernel(system_.Kernel())
{
@@ -64,14 +73,28 @@ Kernel::KEvent* ServiceContext::CreateEvent(std::string&& name) {
// Register the event.
Kernel::KEvent::Register(kernel, event);
+ {
+ std::scoped_lock lk{event_names_mutex};
+ event_names[event] = std::move(name);
+ }
return event;
}
void ServiceContext::CloseEvent(Kernel::KEvent* event) {
if (event) {
+ {
+ std::scoped_lock lk{event_names_mutex};
+ event_names.erase(event);
+ }
event->GetReadableEvent().Close(kernel);
event->Close(kernel);
}
}
+std::string ServiceContext::GetEventName(const Kernel::KEvent* event) {
+ std::scoped_lock lk{event_names_mutex};
+ const auto it = event_names.find(event);
+ return it == event_names.end() ? std::string{} : it->second;
+}
+
} // namespace Service::KernelHelpers