summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/hle/kernel/k_affinity_mask.h20
-rw-r--r--src/core/hle/kernel/k_auto_object.h9
-rw-r--r--src/core/hle/kernel/k_capabilities.cpp2
-rw-r--r--src/core/hle/kernel/k_capabilities.h2
-rw-r--r--src/core/hle/kernel/k_client_port.cpp73
-rw-r--r--src/core/hle/kernel/k_client_port.h23
-rw-r--r--src/core/hle/kernel/k_client_session.cpp6
-rw-r--r--src/core/hle/kernel/k_client_session.h11
-rw-r--r--src/core/hle/kernel/k_port.cpp37
-rw-r--r--src/core/hle/kernel/k_port.h26
-rw-r--r--src/core/hle/kernel/k_process.h6
-rw-r--r--src/core/hle/kernel/k_server_port.cpp27
-rw-r--r--src/core/hle/kernel/k_server_port.h10
-rw-r--r--src/core/hle/kernel/k_server_session.cpp18
-rw-r--r--src/core/hle/kernel/k_server_session.h12
-rw-r--r--src/core/hle/kernel/k_session.cpp54
-rw-r--r--src/core/hle/kernel/k_session.h39
-rw-r--r--src/core/hle/kernel/k_shared_memory.cpp12
-rw-r--r--src/core/hle/kernel/k_shared_memory.h2
-rw-r--r--src/core/hle/kernel/k_thread.h1
-rw-r--r--src/core/hle/kernel/kernel.cpp11
-rw-r--r--src/core/hle/kernel/svc/svc_port.cpp2
-rw-r--r--src/core/hle/kernel/svc/svc_session.cpp4
-rw-r--r--src/core/hle/service/ipc_helpers.h2
-rw-r--r--src/core/hle/service/server_manager.cpp2
-rw-r--r--src/core/hle/service/sm/sm.cpp4
-rw-r--r--src/core/hle/service/sm/sm_controller.cpp2
-rw-r--r--src/yuzu/debugger/wait_tree.cpp5
28 files changed, 196 insertions, 226 deletions
diff --git a/src/core/hle/kernel/k_affinity_mask.h b/src/core/hle/kernel/k_affinity_mask.h
index b58716e90..07a5a822c 100644
--- a/src/core/hle/kernel/k_affinity_mask.h
+++ b/src/core/hle/kernel/k_affinity_mask.h
@@ -13,40 +13,40 @@ class KAffinityMask {
13public: 13public:
14 constexpr KAffinityMask() = default; 14 constexpr KAffinityMask() = default;
15 15
16 [[nodiscard]] constexpr u64 GetAffinityMask() const { 16 constexpr u64 GetAffinityMask() const {
17 return this->mask; 17 return m_mask;
18 } 18 }
19 19
20 constexpr void SetAffinityMask(u64 new_mask) { 20 constexpr void SetAffinityMask(u64 new_mask) {
21 ASSERT((new_mask & ~AllowedAffinityMask) == 0); 21 ASSERT((new_mask & ~AllowedAffinityMask) == 0);
22 this->mask = new_mask; 22 m_mask = new_mask;
23 } 23 }
24 24
25 [[nodiscard]] constexpr bool GetAffinity(s32 core) const { 25 constexpr bool GetAffinity(s32 core) const {
26 return (this->mask & GetCoreBit(core)) != 0; 26 return (m_mask & GetCoreBit(core)) != 0;
27 } 27 }
28 28
29 constexpr void SetAffinity(s32 core, bool set) { 29 constexpr void SetAffinity(s32 core, bool set) {
30 if (set) { 30 if (set) {
31 this->mask |= GetCoreBit(core); 31 m_mask |= GetCoreBit(core);
32 } else { 32 } else {
33 this->mask &= ~GetCoreBit(core); 33 m_mask &= ~GetCoreBit(core);
34 } 34 }
35 } 35 }
36 36
37 constexpr void SetAll() { 37 constexpr void SetAll() {
38 this->mask = AllowedAffinityMask; 38 m_mask = AllowedAffinityMask;
39 } 39 }
40 40
41private: 41private:
42 [[nodiscard]] static constexpr u64 GetCoreBit(s32 core) { 42 static constexpr u64 GetCoreBit(s32 core) {
43 ASSERT(0 <= core && core < static_cast<s32>(Core::Hardware::NUM_CPU_CORES)); 43 ASSERT(0 <= core && core < static_cast<s32>(Core::Hardware::NUM_CPU_CORES));
44 return (1ULL << core); 44 return (1ULL << core);
45 } 45 }
46 46
47 static constexpr u64 AllowedAffinityMask = (1ULL << Core::Hardware::NUM_CPU_CORES) - 1; 47 static constexpr u64 AllowedAffinityMask = (1ULL << Core::Hardware::NUM_CPU_CORES) - 1;
48 48
49 u64 mask{}; 49 u64 m_mask{};
50}; 50};
51 51
52} // namespace Kernel 52} // namespace Kernel
diff --git a/src/core/hle/kernel/k_auto_object.h b/src/core/hle/kernel/k_auto_object.h
index e8118c2b8..2443ab2a5 100644
--- a/src/core/hle/kernel/k_auto_object.h
+++ b/src/core/hle/kernel/k_auto_object.h
@@ -164,17 +164,12 @@ public:
164 } 164 }
165 } 165 }
166 166
167 const std::string& GetName() const {
168 return name;
169 }
170
171private: 167private:
172 void RegisterWithKernel(); 168 void RegisterWithKernel();
173 void UnregisterWithKernel(); 169 void UnregisterWithKernel();
174 170
175protected: 171protected:
176 KernelCore& kernel; 172 KernelCore& kernel;
177 std::string name;
178 173
179private: 174private:
180 std::atomic<u32> m_ref_count{}; 175 std::atomic<u32> m_ref_count{};
@@ -208,10 +203,6 @@ public:
208 return reinterpret_cast<u64>(this); 203 return reinterpret_cast<u64>(this);
209 } 204 }
210 205
211 virtual const std::string& GetName() const {
212 return name;
213 }
214
215private: 206private:
216 friend class KAutoObjectWithListContainer; 207 friend class KAutoObjectWithListContainer;
217}; 208};
diff --git a/src/core/hle/kernel/k_capabilities.cpp b/src/core/hle/kernel/k_capabilities.cpp
index 2907cc6e3..90e4e8fb0 100644
--- a/src/core/hle/kernel/k_capabilities.cpp
+++ b/src/core/hle/kernel/k_capabilities.cpp
@@ -11,7 +11,7 @@
11 11
12namespace Kernel { 12namespace Kernel {
13 13
14Result KCapabilities::InitializeForKIP(std::span<const u32> kern_caps, KPageTable* page_table) { 14Result KCapabilities::InitializeForKip(std::span<const u32> kern_caps, KPageTable* page_table) {
15 // We're initializing an initial process. 15 // We're initializing an initial process.
16 m_svc_access_flags.reset(); 16 m_svc_access_flags.reset();
17 m_irq_access_flags.reset(); 17 m_irq_access_flags.reset();
diff --git a/src/core/hle/kernel/k_capabilities.h b/src/core/hle/kernel/k_capabilities.h
index cd96f8d23..de766c811 100644
--- a/src/core/hle/kernel/k_capabilities.h
+++ b/src/core/hle/kernel/k_capabilities.h
@@ -22,7 +22,7 @@ class KCapabilities {
22public: 22public:
23 constexpr explicit KCapabilities() = default; 23 constexpr explicit KCapabilities() = default;
24 24
25 Result InitializeForKIP(std::span<const u32> kern_caps, KPageTable* page_table); 25 Result InitializeForKip(std::span<const u32> kern_caps, KPageTable* page_table);
26 Result InitializeForUser(std::span<const u32> user_caps, KPageTable* page_table); 26 Result InitializeForUser(std::span<const u32> user_caps, KPageTable* page_table);
27 27
28 static Result CheckCapabilities(KernelCore& kernel, std::span<const u32> user_caps); 28 static Result CheckCapabilities(KernelCore& kernel, std::span<const u32> user_caps);
diff --git a/src/core/hle/kernel/k_client_port.cpp b/src/core/hle/kernel/k_client_port.cpp
index 700ae71e3..7a3d650fd 100644
--- a/src/core/hle/kernel/k_client_port.cpp
+++ b/src/core/hle/kernel/k_client_port.cpp
@@ -14,23 +14,18 @@ namespace Kernel {
14KClientPort::KClientPort(KernelCore& kernel_) : KSynchronizationObject{kernel_} {} 14KClientPort::KClientPort(KernelCore& kernel_) : KSynchronizationObject{kernel_} {}
15KClientPort::~KClientPort() = default; 15KClientPort::~KClientPort() = default;
16 16
17void KClientPort::Initialize(KPort* parent_port_, s32 max_sessions_, std::string&& name_) { 17void KClientPort::Initialize(KPort* parent, s32 max_sessions) {
18 // Set member variables. 18 // Set member variables.
19 num_sessions = 0; 19 m_num_sessions = 0;
20 peak_sessions = 0; 20 m_peak_sessions = 0;
21 parent = parent_port_; 21 m_parent = parent;
22 max_sessions = max_sessions_; 22 m_max_sessions = max_sessions;
23 name = std::move(name_);
24} 23}
25 24
26void KClientPort::OnSessionFinalized() { 25void KClientPort::OnSessionFinalized() {
27 KScopedSchedulerLock sl{kernel}; 26 KScopedSchedulerLock sl{kernel};
28 27
29 // This might happen if a session was improperly used with this port. 28 if (const auto prev = m_num_sessions--; prev == m_max_sessions) {
30 ASSERT_MSG(num_sessions > 0, "num_sessions is invalid");
31
32 const auto prev = num_sessions--;
33 if (prev == max_sessions) {
34 this->NotifyAvailable(); 29 this->NotifyAvailable();
35 } 30 }
36} 31}
@@ -47,81 +42,81 @@ bool KClientPort::IsServerClosed() const {
47 42
48void KClientPort::Destroy() { 43void KClientPort::Destroy() {
49 // Note with our parent that we're closed. 44 // Note with our parent that we're closed.
50 parent->OnClientClosed(); 45 m_parent->OnClientClosed();
51 46
52 // Close our reference to our parent. 47 // Close our reference to our parent.
53 parent->Close(); 48 m_parent->Close();
54} 49}
55 50
56bool KClientPort::IsSignaled() const { 51bool KClientPort::IsSignaled() const {
57 return num_sessions < max_sessions; 52 return m_num_sessions.load() < m_max_sessions;
58} 53}
59 54
60Result KClientPort::CreateSession(KClientSession** out) { 55Result KClientPort::CreateSession(KClientSession** out) {
56 // Declare the session we're going to allocate.
57 KSession* session{};
58
61 // Reserve a new session from the resource limit. 59 // Reserve a new session from the resource limit.
62 //! FIXME: we are reserving this from the wrong resource limit! 60 //! FIXME: we are reserving this from the wrong resource limit!
63 KScopedResourceReservation session_reservation(kernel.ApplicationProcess()->GetResourceLimit(), 61 KScopedResourceReservation session_reservation(kernel.ApplicationProcess()->GetResourceLimit(),
64 LimitableResource::SessionCountMax); 62 LimitableResource::SessionCountMax);
65 R_UNLESS(session_reservation.Succeeded(), ResultLimitReached); 63 R_UNLESS(session_reservation.Succeeded(), ResultLimitReached);
66 64
65 // Allocate a session normally.
66 session = KSession::Create(kernel);
67
68 // Check that we successfully created a session.
69 R_UNLESS(session != nullptr, ResultOutOfResource);
70
67 // Update the session counts. 71 // Update the session counts.
68 { 72 {
73 ON_RESULT_FAILURE {
74 session->Close();
75 };
76
69 // Atomically increment the number of sessions. 77 // Atomically increment the number of sessions.
70 s32 new_sessions{}; 78 s32 new_sessions{};
71 { 79 {
72 const auto max = max_sessions; 80 const auto max = m_max_sessions;
73 auto cur_sessions = num_sessions.load(std::memory_order_acquire); 81 auto cur_sessions = m_num_sessions.load(std::memory_order_acquire);
74 do { 82 do {
75 R_UNLESS(cur_sessions < max, ResultOutOfSessions); 83 R_UNLESS(cur_sessions < max, ResultOutOfSessions);
76 new_sessions = cur_sessions + 1; 84 new_sessions = cur_sessions + 1;
77 } while (!num_sessions.compare_exchange_weak(cur_sessions, new_sessions, 85 } while (!m_num_sessions.compare_exchange_weak(cur_sessions, new_sessions,
78 std::memory_order_relaxed)); 86 std::memory_order_relaxed));
79 } 87 }
80 88
81 // Atomically update the peak session tracking. 89 // Atomically update the peak session tracking.
82 { 90 {
83 auto peak = peak_sessions.load(std::memory_order_acquire); 91 auto peak = m_peak_sessions.load(std::memory_order_acquire);
84 do { 92 do {
85 if (peak >= new_sessions) { 93 if (peak >= new_sessions) {
86 break; 94 break;
87 } 95 }
88 } while (!peak_sessions.compare_exchange_weak(peak, new_sessions, 96 } while (!m_peak_sessions.compare_exchange_weak(peak, new_sessions,
89 std::memory_order_relaxed)); 97 std::memory_order_relaxed));
90 } 98 }
91 } 99 }
92 100
93 // Create a new session.
94 KSession* session = KSession::Create(kernel);
95 if (session == nullptr) {
96 // Decrement the session count.
97 const auto prev = num_sessions--;
98 if (prev == max_sessions) {
99 this->NotifyAvailable();
100 }
101
102 return ResultOutOfResource;
103 }
104
105 // Initialize the session. 101 // Initialize the session.
106 session->Initialize(this, parent->GetName()); 102 session->Initialize(this, m_parent->GetName());
107 103
108 // Commit the session reservation. 104 // Commit the session reservation.
109 session_reservation.Commit(); 105 session_reservation.Commit();
110 106
111 // Register the session. 107 // Register the session.
112 KSession::Register(kernel, session); 108 KSession::Register(kernel, session);
113 auto session_guard = SCOPE_GUARD({ 109 ON_RESULT_FAILURE {
114 session->GetClientSession().Close(); 110 session->GetClientSession().Close();
115 session->GetServerSession().Close(); 111 session->GetServerSession().Close();
116 }); 112 };
117 113
118 // Enqueue the session with our parent. 114 // Enqueue the session with our parent.
119 R_TRY(parent->EnqueueSession(std::addressof(session->GetServerSession()))); 115 R_TRY(m_parent->EnqueueSession(std::addressof(session->GetServerSession())));
120 116
121 // We succeeded, so set the output. 117 // We succeeded, so set the output.
122 session_guard.Cancel();
123 *out = std::addressof(session->GetClientSession()); 118 *out = std::addressof(session->GetClientSession());
124 return ResultSuccess; 119 R_SUCCEED();
125} 120}
126 121
127} // namespace Kernel 122} // namespace Kernel
diff --git a/src/core/hle/kernel/k_client_port.h b/src/core/hle/kernel/k_client_port.h
index a757cf9cd..23db06ddf 100644
--- a/src/core/hle/kernel/k_client_port.h
+++ b/src/core/hle/kernel/k_client_port.h
@@ -4,7 +4,6 @@
4#pragma once 4#pragma once
5 5
6#include <memory> 6#include <memory>
7#include <string>
8 7
9#include "common/common_types.h" 8#include "common/common_types.h"
10#include "core/hle/kernel/k_synchronization_object.h" 9#include "core/hle/kernel/k_synchronization_object.h"
@@ -20,28 +19,28 @@ class KClientPort final : public KSynchronizationObject {
20 KERNEL_AUTOOBJECT_TRAITS(KClientPort, KSynchronizationObject); 19 KERNEL_AUTOOBJECT_TRAITS(KClientPort, KSynchronizationObject);
21 20
22public: 21public:
23 explicit KClientPort(KernelCore& kernel_); 22 explicit KClientPort(KernelCore& kernel);
24 ~KClientPort() override; 23 ~KClientPort() override;
25 24
26 void Initialize(KPort* parent_, s32 max_sessions_, std::string&& name_); 25 void Initialize(KPort* parent, s32 max_sessions);
27 void OnSessionFinalized(); 26 void OnSessionFinalized();
28 void OnServerClosed(); 27 void OnServerClosed();
29 28
30 const KPort* GetParent() const { 29 const KPort* GetParent() const {
31 return parent; 30 return m_parent;
32 } 31 }
33 KPort* GetParent() { 32 KPort* GetParent() {
34 return parent; 33 return m_parent;
35 } 34 }
36 35
37 s32 GetNumSessions() const { 36 s32 GetNumSessions() const {
38 return num_sessions; 37 return m_num_sessions;
39 } 38 }
40 s32 GetPeakSessions() const { 39 s32 GetPeakSessions() const {
41 return peak_sessions; 40 return m_peak_sessions;
42 } 41 }
43 s32 GetMaxSessions() const { 42 s32 GetMaxSessions() const {
44 return max_sessions; 43 return m_max_sessions;
45 } 44 }
46 45
47 bool IsLight() const; 46 bool IsLight() const;
@@ -54,10 +53,10 @@ public:
54 Result CreateSession(KClientSession** out); 53 Result CreateSession(KClientSession** out);
55 54
56private: 55private:
57 std::atomic<s32> num_sessions{}; 56 std::atomic<s32> m_num_sessions{};
58 std::atomic<s32> peak_sessions{}; 57 std::atomic<s32> m_peak_sessions{};
59 s32 max_sessions{}; 58 s32 m_max_sessions{};
60 KPort* parent{}; 59 KPort* m_parent{};
61}; 60};
62 61
63} // namespace Kernel 62} // namespace Kernel
diff --git a/src/core/hle/kernel/k_client_session.cpp b/src/core/hle/kernel/k_client_session.cpp
index da0c9ac8c..c9196d04b 100644
--- a/src/core/hle/kernel/k_client_session.cpp
+++ b/src/core/hle/kernel/k_client_session.cpp
@@ -17,8 +17,8 @@ KClientSession::KClientSession(KernelCore& kernel_)
17KClientSession::~KClientSession() = default; 17KClientSession::~KClientSession() = default;
18 18
19void KClientSession::Destroy() { 19void KClientSession::Destroy() {
20 parent->OnClientClosed(); 20 m_parent->OnClientClosed();
21 parent->Close(); 21 m_parent->Close();
22} 22}
23 23
24void KClientSession::OnServerClosed() {} 24void KClientSession::OnServerClosed() {}
@@ -33,7 +33,7 @@ Result KClientSession::SendSyncRequest() {
33 request->Initialize(nullptr, GetCurrentThread(kernel).GetTLSAddress(), MessageBufferSize); 33 request->Initialize(nullptr, GetCurrentThread(kernel).GetTLSAddress(), MessageBufferSize);
34 34
35 // Send the request. 35 // Send the request.
36 return parent->GetServerSession().OnRequest(request); 36 R_RETURN(m_parent->GetServerSession().OnRequest(request));
37} 37}
38 38
39} // namespace Kernel 39} // namespace Kernel
diff --git a/src/core/hle/kernel/k_client_session.h b/src/core/hle/kernel/k_client_session.h
index b4a19c546..ecde2549c 100644
--- a/src/core/hle/kernel/k_client_session.h
+++ b/src/core/hle/kernel/k_client_session.h
@@ -33,17 +33,16 @@ public:
33 explicit KClientSession(KernelCore& kernel_); 33 explicit KClientSession(KernelCore& kernel_);
34 ~KClientSession() override; 34 ~KClientSession() override;
35 35
36 void Initialize(KSession* parent_session_, std::string&& name_) { 36 void Initialize(KSession* parent) {
37 // Set member variables. 37 // Set member variables.
38 parent = parent_session_; 38 m_parent = parent;
39 name = std::move(name_);
40 } 39 }
41 40
42 void Destroy() override; 41 void Destroy() override;
43 static void PostDestroy([[maybe_unused]] uintptr_t arg) {} 42 static void PostDestroy(uintptr_t arg) {}
44 43
45 KSession* GetParent() const { 44 KSession* GetParent() const {
46 return parent; 45 return m_parent;
47 } 46 }
48 47
49 Result SendSyncRequest(); 48 Result SendSyncRequest();
@@ -51,7 +50,7 @@ public:
51 void OnServerClosed(); 50 void OnServerClosed();
52 51
53private: 52private:
54 KSession* parent{}; 53 KSession* m_parent{};
55}; 54};
56 55
57} // namespace Kernel 56} // namespace Kernel
diff --git a/src/core/hle/kernel/k_port.cpp b/src/core/hle/kernel/k_port.cpp
index 0a45ffd57..f73bc34d4 100644
--- a/src/core/hle/kernel/k_port.cpp
+++ b/src/core/hle/kernel/k_port.cpp
@@ -8,55 +8,54 @@
8namespace Kernel { 8namespace Kernel {
9 9
10KPort::KPort(KernelCore& kernel_) 10KPort::KPort(KernelCore& kernel_)
11 : KAutoObjectWithSlabHeapAndContainer{kernel_}, server{kernel_}, client{kernel_} {} 11 : KAutoObjectWithSlabHeapAndContainer{kernel_}, m_server{kernel_}, m_client{kernel_} {}
12 12
13KPort::~KPort() = default; 13KPort::~KPort() = default;
14 14
15void KPort::Initialize(s32 max_sessions_, bool is_light_, const std::string& name_) { 15void KPort::Initialize(s32 max_sessions, bool is_light, uintptr_t name) {
16 // Open a new reference count to the initialized port. 16 // Open a new reference count to the initialized port.
17 Open(); 17 this->Open();
18 18
19 // Create and initialize our server/client pair. 19 // Create and initialize our server/client pair.
20 KAutoObject::Create(std::addressof(server)); 20 KAutoObject::Create(std::addressof(m_server));
21 KAutoObject::Create(std::addressof(client)); 21 KAutoObject::Create(std::addressof(m_client));
22 server.Initialize(this, name_ + ":Server"); 22 m_server.Initialize(this);
23 client.Initialize(this, max_sessions_, name_ + ":Client"); 23 m_client.Initialize(this, max_sessions);
24 24
25 // Set our member variables. 25 // Set our member variables.
26 is_light = is_light_; 26 m_is_light = is_light;
27 name = name_; 27 m_name = name;
28 state = State::Normal; 28 m_state = State::Normal;
29} 29}
30 30
31void KPort::OnClientClosed() { 31void KPort::OnClientClosed() {
32 KScopedSchedulerLock sl{kernel}; 32 KScopedSchedulerLock sl{kernel};
33 33
34 if (state == State::Normal) { 34 if (m_state == State::Normal) {
35 state = State::ClientClosed; 35 m_state = State::ClientClosed;
36 } 36 }
37} 37}
38 38
39void KPort::OnServerClosed() { 39void KPort::OnServerClosed() {
40 KScopedSchedulerLock sl{kernel}; 40 KScopedSchedulerLock sl{kernel};
41 41
42 if (state == State::Normal) { 42 if (m_state == State::Normal) {
43 state = State::ServerClosed; 43 m_state = State::ServerClosed;
44 } 44 }
45} 45}
46 46
47bool KPort::IsServerClosed() const { 47bool KPort::IsServerClosed() const {
48 KScopedSchedulerLock sl{kernel}; 48 KScopedSchedulerLock sl{kernel};
49 return state == State::ServerClosed; 49 return m_state == State::ServerClosed;
50} 50}
51 51
52Result KPort::EnqueueSession(KServerSession* session) { 52Result KPort::EnqueueSession(KServerSession* session) {
53 KScopedSchedulerLock sl{kernel}; 53 KScopedSchedulerLock sl{kernel};
54 54
55 R_UNLESS(state == State::Normal, ResultPortClosed); 55 R_UNLESS(m_state == State::Normal, ResultPortClosed);
56 56
57 server.EnqueueSession(session); 57 m_server.EnqueueSession(session);
58 58 R_SUCCEED();
59 return ResultSuccess;
60} 59}
61 60
62} // namespace Kernel 61} // namespace Kernel
diff --git a/src/core/hle/kernel/k_port.h b/src/core/hle/kernel/k_port.h
index 0cfc16dab..f2a08547c 100644
--- a/src/core/hle/kernel/k_port.h
+++ b/src/core/hle/kernel/k_port.h
@@ -22,14 +22,17 @@ public:
22 explicit KPort(KernelCore& kernel_); 22 explicit KPort(KernelCore& kernel_);
23 ~KPort() override; 23 ~KPort() override;
24 24
25 static void PostDestroy([[maybe_unused]] uintptr_t arg) {} 25 static void PostDestroy(uintptr_t arg) {}
26 26
27 void Initialize(s32 max_sessions_, bool is_light_, const std::string& name_); 27 void Initialize(s32 max_sessions, bool is_light, uintptr_t name);
28 void OnClientClosed(); 28 void OnClientClosed();
29 void OnServerClosed(); 29 void OnServerClosed();
30 30
31 uintptr_t GetName() const {
32 return m_name;
33 }
31 bool IsLight() const { 34 bool IsLight() const {
32 return is_light; 35 return m_is_light;
33 } 36 }
34 37
35 bool IsServerClosed() const; 38 bool IsServerClosed() const;
@@ -37,16 +40,16 @@ public:
37 Result EnqueueSession(KServerSession* session); 40 Result EnqueueSession(KServerSession* session);
38 41
39 KClientPort& GetClientPort() { 42 KClientPort& GetClientPort() {
40 return client; 43 return m_client;
41 } 44 }
42 KServerPort& GetServerPort() { 45 KServerPort& GetServerPort() {
43 return server; 46 return m_server;
44 } 47 }
45 const KClientPort& GetClientPort() const { 48 const KClientPort& GetClientPort() const {
46 return client; 49 return m_client;
47 } 50 }
48 const KServerPort& GetServerPort() const { 51 const KServerPort& GetServerPort() const {
49 return server; 52 return m_server;
50 } 53 }
51 54
52private: 55private:
@@ -57,10 +60,11 @@ private:
57 ServerClosed = 3, 60 ServerClosed = 3,
58 }; 61 };
59 62
60 KServerPort server; 63 KServerPort m_server;
61 KClientPort client; 64 KClientPort m_client;
62 State state{State::Invalid}; 65 uintptr_t m_name;
63 bool is_light{}; 66 State m_state{State::Invalid};
67 bool m_is_light{};
64}; 68};
65 69
66} // namespace Kernel 70} // namespace Kernel
diff --git a/src/core/hle/kernel/k_process.h b/src/core/hle/kernel/k_process.h
index bd9b9f876..8d65be17a 100644
--- a/src/core/hle/kernel/k_process.h
+++ b/src/core/hle/kernel/k_process.h
@@ -395,6 +395,10 @@ public:
395 return watchpoints; 395 return watchpoints;
396 } 396 }
397 397
398 const std::string& GetName() {
399 return name;
400 }
401
398private: 402private:
399 void PinThread(s32 core_id, KThread* thread) { 403 void PinThread(s32 core_id, KThread* thread) {
400 ASSERT(0 <= core_id && core_id < static_cast<s32>(Core::Hardware::NUM_CPU_CORES)); 404 ASSERT(0 <= core_id && core_id < static_cast<s32>(Core::Hardware::NUM_CPU_CORES));
@@ -499,6 +503,8 @@ private:
499 503
500 size_t memory_release_hint{}; 504 size_t memory_release_hint{};
501 505
506 std::string name{};
507
502 bool is_signaled{}; 508 bool is_signaled{};
503 bool is_suspended{}; 509 bool is_suspended{};
504 bool is_immortal{}; 510 bool is_immortal{};
diff --git a/src/core/hle/kernel/k_server_port.cpp b/src/core/hle/kernel/k_server_port.cpp
index 16968ba97..dc70ee848 100644
--- a/src/core/hle/kernel/k_server_port.cpp
+++ b/src/core/hle/kernel/k_server_port.cpp
@@ -15,10 +15,9 @@ namespace Kernel {
15KServerPort::KServerPort(KernelCore& kernel_) : KSynchronizationObject{kernel_} {} 15KServerPort::KServerPort(KernelCore& kernel_) : KSynchronizationObject{kernel_} {}
16KServerPort::~KServerPort() = default; 16KServerPort::~KServerPort() = default;
17 17
18void KServerPort::Initialize(KPort* parent_port_, std::string&& name_) { 18void KServerPort::Initialize(KPort* parent) {
19 // Set member variables. 19 // Set member variables.
20 parent = parent_port_; 20 m_parent = parent;
21 name = std::move(name_);
22} 21}
23 22
24bool KServerPort::IsLight() const { 23bool KServerPort::IsLight() const {
@@ -37,9 +36,9 @@ void KServerPort::CleanupSessions() {
37 KServerSession* session = nullptr; 36 KServerSession* session = nullptr;
38 { 37 {
39 KScopedSchedulerLock sl{kernel}; 38 KScopedSchedulerLock sl{kernel};
40 if (!session_list.empty()) { 39 if (!m_session_list.empty()) {
41 session = std::addressof(session_list.front()); 40 session = std::addressof(m_session_list.front());
42 session_list.pop_front(); 41 m_session_list.pop_front();
43 } 42 }
44 } 43 }
45 44
@@ -54,13 +53,13 @@ void KServerPort::CleanupSessions() {
54 53
55void KServerPort::Destroy() { 54void KServerPort::Destroy() {
56 // Note with our parent that we're closed. 55 // Note with our parent that we're closed.
57 parent->OnServerClosed(); 56 m_parent->OnServerClosed();
58 57
59 // Perform necessary cleanup of our session lists. 58 // Perform necessary cleanup of our session lists.
60 this->CleanupSessions(); 59 this->CleanupSessions();
61 60
62 // Close our reference to our parent. 61 // Close our reference to our parent.
63 parent->Close(); 62 m_parent->Close();
64} 63}
65 64
66bool KServerPort::IsSignaled() const { 65bool KServerPort::IsSignaled() const {
@@ -68,7 +67,7 @@ bool KServerPort::IsSignaled() const {
68 UNIMPLEMENTED(); 67 UNIMPLEMENTED();
69 return false; 68 return false;
70 } else { 69 } else {
71 return !session_list.empty(); 70 return !m_session_list.empty();
72 } 71 }
73} 72}
74 73
@@ -78,8 +77,8 @@ void KServerPort::EnqueueSession(KServerSession* session) {
78 KScopedSchedulerLock sl{kernel}; 77 KScopedSchedulerLock sl{kernel};
79 78
80 // Add the session to our queue. 79 // Add the session to our queue.
81 session_list.push_back(*session); 80 m_session_list.push_back(*session);
82 if (session_list.size() == 1) { 81 if (m_session_list.size() == 1) {
83 this->NotifyAvailable(); 82 this->NotifyAvailable();
84 } 83 }
85} 84}
@@ -90,12 +89,12 @@ KServerSession* KServerPort::AcceptSession() {
90 KScopedSchedulerLock sl{kernel}; 89 KScopedSchedulerLock sl{kernel};
91 90
92 // Return the first session in the list. 91 // Return the first session in the list.
93 if (session_list.empty()) { 92 if (m_session_list.empty()) {
94 return nullptr; 93 return nullptr;
95 } 94 }
96 95
97 KServerSession* session = std::addressof(session_list.front()); 96 KServerSession* session = std::addressof(m_session_list.front());
98 session_list.pop_front(); 97 m_session_list.pop_front();
99 return session; 98 return session;
100} 99}
101 100
diff --git a/src/core/hle/kernel/k_server_port.h b/src/core/hle/kernel/k_server_port.h
index 5fc7ee683..964767156 100644
--- a/src/core/hle/kernel/k_server_port.h
+++ b/src/core/hle/kernel/k_server_port.h
@@ -25,14 +25,14 @@ public:
25 explicit KServerPort(KernelCore& kernel_); 25 explicit KServerPort(KernelCore& kernel_);
26 ~KServerPort() override; 26 ~KServerPort() override;
27 27
28 void Initialize(KPort* parent_port_, std::string&& name_); 28 void Initialize(KPort* parent);
29 29
30 void EnqueueSession(KServerSession* pending_session); 30 void EnqueueSession(KServerSession* session);
31 31
32 KServerSession* AcceptSession(); 32 KServerSession* AcceptSession();
33 33
34 const KPort* GetParent() const { 34 const KPort* GetParent() const {
35 return parent; 35 return m_parent;
36 } 36 }
37 37
38 bool IsLight() const; 38 bool IsLight() const;
@@ -46,8 +46,8 @@ private:
46 46
47 void CleanupSessions(); 47 void CleanupSessions();
48 48
49 SessionList session_list; 49 SessionList m_session_list{};
50 KPort* parent{}; 50 KPort* m_parent{};
51}; 51};
52 52
53} // namespace Kernel 53} // namespace Kernel
diff --git a/src/core/hle/kernel/k_server_session.cpp b/src/core/hle/kernel/k_server_session.cpp
index 01591af5b..6831243b5 100644
--- a/src/core/hle/kernel/k_server_session.cpp
+++ b/src/core/hle/kernel/k_server_session.cpp
@@ -33,18 +33,12 @@ KServerSession::KServerSession(KernelCore& kernel_)
33 33
34KServerSession::~KServerSession() = default; 34KServerSession::~KServerSession() = default;
35 35
36void KServerSession::Initialize(KSession* parent_session_, std::string&& name_) {
37 // Set member variables.
38 parent = parent_session_;
39 name = std::move(name_);
40}
41
42void KServerSession::Destroy() { 36void KServerSession::Destroy() {
43 parent->OnServerClosed(); 37 m_parent->OnServerClosed();
44 38
45 this->CleanupRequests(); 39 this->CleanupRequests();
46 40
47 parent->Close(); 41 m_parent->Close();
48} 42}
49 43
50void KServerSession::OnClientClosed() { 44void KServerSession::OnClientClosed() {
@@ -144,7 +138,7 @@ bool KServerSession::IsSignaled() const {
144 ASSERT(KScheduler::IsSchedulerLockedByCurrentThread(kernel)); 138 ASSERT(KScheduler::IsSchedulerLockedByCurrentThread(kernel));
145 139
146 // If the client is closed, we're always signaled. 140 // If the client is closed, we're always signaled.
147 if (parent->IsClientClosed()) { 141 if (m_parent->IsClientClosed()) {
148 return true; 142 return true;
149 } 143 }
150 144
@@ -161,7 +155,7 @@ Result KServerSession::OnRequest(KSessionRequest* request) {
161 KScopedSchedulerLock sl{kernel}; 155 KScopedSchedulerLock sl{kernel};
162 156
163 // Ensure that we can handle new requests. 157 // Ensure that we can handle new requests.
164 R_UNLESS(!parent->IsServerClosed(), ResultSessionClosed); 158 R_UNLESS(!m_parent->IsServerClosed(), ResultSessionClosed);
165 159
166 // Check that we're not terminating. 160 // Check that we're not terminating.
167 R_UNLESS(!GetCurrentThread(kernel).IsTerminationRequested(), ResultTerminationRequested); 161 R_UNLESS(!GetCurrentThread(kernel).IsTerminationRequested(), ResultTerminationRequested);
@@ -219,7 +213,7 @@ Result KServerSession::SendReply(bool is_hle) {
219 KEvent* event = request->GetEvent(); 213 KEvent* event = request->GetEvent();
220 214
221 // Check whether we're closed. 215 // Check whether we're closed.
222 const bool closed = (client_thread == nullptr || parent->IsClientClosed()); 216 const bool closed = (client_thread == nullptr || m_parent->IsClientClosed());
223 217
224 Result result = ResultSuccess; 218 Result result = ResultSuccess;
225 if (!closed) { 219 if (!closed) {
@@ -294,7 +288,7 @@ Result KServerSession::ReceiveRequest(std::shared_ptr<Service::HLERequestContext
294 KScopedSchedulerLock sl{kernel}; 288 KScopedSchedulerLock sl{kernel};
295 289
296 // Ensure that we can service the request. 290 // Ensure that we can service the request.
297 R_UNLESS(!parent->IsClientClosed(), ResultSessionClosed); 291 R_UNLESS(!m_parent->IsClientClosed(), ResultSessionClosed);
298 292
299 // Ensure we aren't already servicing a request. 293 // Ensure we aren't already servicing a request.
300 R_UNLESS(m_current_request == nullptr, ResultNotFound); 294 R_UNLESS(m_current_request == nullptr, ResultNotFound);
diff --git a/src/core/hle/kernel/k_server_session.h b/src/core/hle/kernel/k_server_session.h
index 33f380352..e340e4dd8 100644
--- a/src/core/hle/kernel/k_server_session.h
+++ b/src/core/hle/kernel/k_server_session.h
@@ -38,14 +38,12 @@ public:
38 38
39 void Destroy() override; 39 void Destroy() override;
40 40
41 void Initialize(KSession* parent_session_, std::string&& name_); 41 void Initialize(KSession* p) {
42 42 m_parent = p;
43 KSession* GetParent() {
44 return parent;
45 } 43 }
46 44
47 const KSession* GetParent() const { 45 const KSession* GetParent() const {
48 return parent; 46 return m_parent;
49 } 47 }
50 48
51 bool IsSignaled() const override; 49 bool IsSignaled() const override;
@@ -66,10 +64,10 @@ private:
66 void CleanupRequests(); 64 void CleanupRequests();
67 65
68 /// KSession that owns this KServerSession 66 /// KSession that owns this KServerSession
69 KSession* parent{}; 67 KSession* m_parent{};
70 68
71 /// List of threads which are pending a reply. 69 /// List of threads which are pending a reply.
72 boost::intrusive::list<KSessionRequest> m_request_list; 70 boost::intrusive::list<KSessionRequest> m_request_list{};
73 KSessionRequest* m_current_request{}; 71 KSessionRequest* m_current_request{};
74 72
75 KLightLock m_lock; 73 KLightLock m_lock;
diff --git a/src/core/hle/kernel/k_session.cpp b/src/core/hle/kernel/k_session.cpp
index 7e677c028..771ad68bf 100644
--- a/src/core/hle/kernel/k_session.cpp
+++ b/src/core/hle/kernel/k_session.cpp
@@ -10,68 +10,62 @@
10namespace Kernel { 10namespace Kernel {
11 11
12KSession::KSession(KernelCore& kernel_) 12KSession::KSession(KernelCore& kernel_)
13 : KAutoObjectWithSlabHeapAndContainer{kernel_}, server{kernel_}, client{kernel_} {} 13 : KAutoObjectWithSlabHeapAndContainer{kernel_}, m_server{kernel_}, m_client{kernel_} {}
14KSession::~KSession() = default; 14KSession::~KSession() = default;
15 15
16void KSession::Initialize(KClientPort* port_, const std::string& name_) { 16void KSession::Initialize(KClientPort* client_port, uintptr_t name) {
17 // Increment reference count. 17 // Increment reference count.
18 // Because reference count is one on creation, this will result 18 // Because reference count is one on creation, this will result
19 // in a reference count of two. Thus, when both server and client are closed 19 // in a reference count of two. Thus, when both server and client are closed
20 // this object will be destroyed. 20 // this object will be destroyed.
21 Open(); 21 this->Open();
22 22
23 // Create our sub sessions. 23 // Create our sub sessions.
24 KAutoObject::Create(std::addressof(server)); 24 KAutoObject::Create(std::addressof(m_server));
25 KAutoObject::Create(std::addressof(client)); 25 KAutoObject::Create(std::addressof(m_client));
26 26
27 // Initialize our sub sessions. 27 // Initialize our sub sessions.
28 server.Initialize(this, name_ + ":Server"); 28 m_server.Initialize(this);
29 client.Initialize(this, name_ + ":Client"); 29 m_client.Initialize(this);
30 30
31 // Set state and name. 31 // Set state and name.
32 SetState(State::Normal); 32 this->SetState(State::Normal);
33 name = name_; 33 m_name = name;
34 34
35 // Set our owner process. 35 // Set our owner process.
36 //! FIXME: this is the wrong process! 36 //! FIXME: this is the wrong process!
37 process = kernel.ApplicationProcess(); 37 m_process = kernel.ApplicationProcess();
38 process->Open(); 38 m_process->Open();
39 39
40 // Set our port. 40 // Set our port.
41 port = port_; 41 m_port = client_port;
42 if (port != nullptr) { 42 if (m_port != nullptr) {
43 port->Open(); 43 m_port->Open();
44 } 44 }
45 45
46 // Mark initialized. 46 // Mark initialized.
47 initialized = true; 47 m_initialized = true;
48} 48}
49 49
50void KSession::Finalize() { 50void KSession::Finalize() {
51 if (port == nullptr) { 51 if (m_port != nullptr) {
52 return; 52 m_port->OnSessionFinalized();
53 m_port->Close();
53 } 54 }
54
55 port->OnSessionFinalized();
56 port->Close();
57} 55}
58 56
59void KSession::OnServerClosed() { 57void KSession::OnServerClosed() {
60 if (GetState() != State::Normal) { 58 if (this->GetState() == State::Normal) {
61 return; 59 this->SetState(State::ServerClosed);
60 m_client.OnServerClosed();
62 } 61 }
63
64 SetState(State::ServerClosed);
65 client.OnServerClosed();
66} 62}
67 63
68void KSession::OnClientClosed() { 64void KSession::OnClientClosed() {
69 if (GetState() != State::Normal) { 65 if (this->GetState() == State::Normal) {
70 return; 66 SetState(State::ClientClosed);
67 m_server.OnClientClosed();
71 } 68 }
72
73 SetState(State::ClientClosed);
74 server.OnClientClosed();
75} 69}
76 70
77void KSession::PostDestroy(uintptr_t arg) { 71void KSession::PostDestroy(uintptr_t arg) {
diff --git a/src/core/hle/kernel/k_session.h b/src/core/hle/kernel/k_session.h
index 93e5e6f71..ab553a04c 100644
--- a/src/core/hle/kernel/k_session.h
+++ b/src/core/hle/kernel/k_session.h
@@ -21,16 +21,15 @@ public:
21 explicit KSession(KernelCore& kernel_); 21 explicit KSession(KernelCore& kernel_);
22 ~KSession() override; 22 ~KSession() override;
23 23
24 void Initialize(KClientPort* port_, const std::string& name_); 24 void Initialize(KClientPort* port, uintptr_t name);
25
26 void Finalize() override; 25 void Finalize() override;
27 26
28 bool IsInitialized() const override { 27 bool IsInitialized() const override {
29 return initialized; 28 return m_initialized;
30 } 29 }
31 30
32 uintptr_t GetPostDestroyArgument() const override { 31 uintptr_t GetPostDestroyArgument() const override {
33 return reinterpret_cast<uintptr_t>(process); 32 return reinterpret_cast<uintptr_t>(m_process);
34 } 33 }
35 34
36 static void PostDestroy(uintptr_t arg); 35 static void PostDestroy(uintptr_t arg);
@@ -48,27 +47,23 @@ public:
48 } 47 }
49 48
50 KClientSession& GetClientSession() { 49 KClientSession& GetClientSession() {
51 return client; 50 return m_client;
52 } 51 }
53 52
54 KServerSession& GetServerSession() { 53 KServerSession& GetServerSession() {
55 return server; 54 return m_server;
56 } 55 }
57 56
58 const KClientSession& GetClientSession() const { 57 const KClientSession& GetClientSession() const {
59 return client; 58 return m_client;
60 } 59 }
61 60
62 const KServerSession& GetServerSession() const { 61 const KServerSession& GetServerSession() const {
63 return server; 62 return m_server;
64 } 63 }
65 64
66 const KClientPort* GetParent() const { 65 const KClientPort* GetParent() const {
67 return port; 66 return m_port;
68 }
69
70 KClientPort* GetParent() {
71 return port;
72 } 67 }
73 68
74private: 69private:
@@ -80,20 +75,20 @@ private:
80 }; 75 };
81 76
82 void SetState(State state) { 77 void SetState(State state) {
83 atomic_state = static_cast<u8>(state); 78 m_atomic_state = static_cast<u8>(state);
84 } 79 }
85 80
86 State GetState() const { 81 State GetState() const {
87 return static_cast<State>(atomic_state.load(std::memory_order_relaxed)); 82 return static_cast<State>(m_atomic_state.load());
88 } 83 }
89 84
90 KServerSession server; 85 KServerSession m_server;
91 KClientSession client; 86 KClientSession m_client;
92 std::atomic<std::underlying_type_t<State>> atomic_state{ 87 KClientPort* m_port{};
93 static_cast<std::underlying_type_t<State>>(State::Invalid)}; 88 uintptr_t m_name{};
94 KClientPort* port{}; 89 KProcess* m_process{};
95 KProcess* process{}; 90 std::atomic<u8> m_atomic_state{static_cast<u8>(State::Invalid)};
96 bool initialized{}; 91 bool m_initialized{};
97}; 92};
98 93
99} // namespace Kernel 94} // namespace Kernel
diff --git a/src/core/hle/kernel/k_shared_memory.cpp b/src/core/hle/kernel/k_shared_memory.cpp
index df505edfe..42cb7ac77 100644
--- a/src/core/hle/kernel/k_shared_memory.cpp
+++ b/src/core/hle/kernel/k_shared_memory.cpp
@@ -17,15 +17,13 @@ KSharedMemory::~KSharedMemory() = default;
17 17
18Result KSharedMemory::Initialize(Core::DeviceMemory& device_memory_, KProcess* owner_process_, 18Result KSharedMemory::Initialize(Core::DeviceMemory& device_memory_, KProcess* owner_process_,
19 Svc::MemoryPermission owner_permission_, 19 Svc::MemoryPermission owner_permission_,
20 Svc::MemoryPermission user_permission_, std::size_t size_, 20 Svc::MemoryPermission user_permission_, std::size_t size_) {
21 std::string name_) {
22 // Set members. 21 // Set members.
23 owner_process = owner_process_; 22 owner_process = owner_process_;
24 device_memory = &device_memory_; 23 device_memory = &device_memory_;
25 owner_permission = owner_permission_; 24 owner_permission = owner_permission_;
26 user_permission = user_permission_; 25 user_permission = user_permission_;
27 size = Common::AlignUp(size_, PageSize); 26 size = Common::AlignUp(size_, PageSize);
28 name = std::move(name_);
29 27
30 const size_t num_pages = Common::DivideUp(size, PageSize); 28 const size_t num_pages = Common::DivideUp(size, PageSize);
31 29
@@ -64,7 +62,7 @@ Result KSharedMemory::Initialize(Core::DeviceMemory& device_memory_, KProcess* o
64 std::memset(device_memory_.GetPointer<void>(block.GetAddress()), 0, block.GetSize()); 62 std::memset(device_memory_.GetPointer<void>(block.GetAddress()), 0, block.GetSize());
65 } 63 }
66 64
67 return ResultSuccess; 65 R_SUCCEED();
68} 66}
69 67
70void KSharedMemory::Finalize() { 68void KSharedMemory::Finalize() {
@@ -94,15 +92,15 @@ Result KSharedMemory::Map(KProcess& target_process, VAddr address, std::size_t m
94 R_UNLESS(map_perm == test_perm, ResultInvalidNewMemoryPermission); 92 R_UNLESS(map_perm == test_perm, ResultInvalidNewMemoryPermission);
95 } 93 }
96 94
97 return target_process.PageTable().MapPageGroup(address, *page_group, KMemoryState::Shared, 95 R_RETURN(target_process.PageTable().MapPageGroup(address, *page_group, KMemoryState::Shared,
98 ConvertToKMemoryPermission(map_perm)); 96 ConvertToKMemoryPermission(map_perm)));
99} 97}
100 98
101Result KSharedMemory::Unmap(KProcess& target_process, VAddr address, std::size_t unmap_size) { 99Result KSharedMemory::Unmap(KProcess& target_process, VAddr address, std::size_t unmap_size) {
102 // Validate the size. 100 // Validate the size.
103 R_UNLESS(size == unmap_size, ResultInvalidSize); 101 R_UNLESS(size == unmap_size, ResultInvalidSize);
104 102
105 return target_process.PageTable().UnmapPageGroup(address, *page_group, KMemoryState::Shared); 103 R_RETURN(target_process.PageTable().UnmapPageGroup(address, *page_group, KMemoryState::Shared));
106} 104}
107 105
108} // namespace Kernel 106} // namespace Kernel
diff --git a/src/core/hle/kernel/k_shared_memory.h b/src/core/hle/kernel/k_shared_memory.h
index 8b29f0b4a..bfd01b619 100644
--- a/src/core/hle/kernel/k_shared_memory.h
+++ b/src/core/hle/kernel/k_shared_memory.h
@@ -28,7 +28,7 @@ public:
28 28
29 Result Initialize(Core::DeviceMemory& device_memory_, KProcess* owner_process_, 29 Result Initialize(Core::DeviceMemory& device_memory_, KProcess* owner_process_,
30 Svc::MemoryPermission owner_permission_, 30 Svc::MemoryPermission owner_permission_,
31 Svc::MemoryPermission user_permission_, std::size_t size_, std::string name_); 31 Svc::MemoryPermission user_permission_, std::size_t size_);
32 32
33 /** 33 /**
34 * Maps a shared memory block to an address in the target process' address space 34 * Maps a shared memory block to an address in the target process' address space
diff --git a/src/core/hle/kernel/k_thread.h b/src/core/hle/kernel/k_thread.h
index 9423f08ca..f4cb861a9 100644
--- a/src/core/hle/kernel/k_thread.h
+++ b/src/core/hle/kernel/k_thread.h
@@ -926,6 +926,7 @@ private:
926 ThreadWaitReasonForDebugging wait_reason_for_debugging{}; 926 ThreadWaitReasonForDebugging wait_reason_for_debugging{};
927 uintptr_t argument{}; 927 uintptr_t argument{};
928 VAddr stack_top{}; 928 VAddr stack_top{};
929 std::string name{};
929 930
930public: 931public:
931 using ConditionVariableThreadTreeType = ConditionVariableThreadTree; 932 using ConditionVariableThreadTreeType = ConditionVariableThreadTree;
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index ef7057ff7..59f832a3d 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -742,16 +742,15 @@ struct KernelCore::Impl {
742 hidbus_shared_mem = KSharedMemory::Create(system.Kernel()); 742 hidbus_shared_mem = KSharedMemory::Create(system.Kernel());
743 743
744 hid_shared_mem->Initialize(system.DeviceMemory(), nullptr, Svc::MemoryPermission::None, 744 hid_shared_mem->Initialize(system.DeviceMemory(), nullptr, Svc::MemoryPermission::None,
745 Svc::MemoryPermission::Read, hid_size, "HID:SharedMemory"); 745 Svc::MemoryPermission::Read, hid_size);
746 font_shared_mem->Initialize(system.DeviceMemory(), nullptr, Svc::MemoryPermission::None, 746 font_shared_mem->Initialize(system.DeviceMemory(), nullptr, Svc::MemoryPermission::None,
747 Svc::MemoryPermission::Read, font_size, "Font:SharedMemory"); 747 Svc::MemoryPermission::Read, font_size);
748 irs_shared_mem->Initialize(system.DeviceMemory(), nullptr, Svc::MemoryPermission::None, 748 irs_shared_mem->Initialize(system.DeviceMemory(), nullptr, Svc::MemoryPermission::None,
749 Svc::MemoryPermission::Read, irs_size, "IRS:SharedMemory"); 749 Svc::MemoryPermission::Read, irs_size);
750 time_shared_mem->Initialize(system.DeviceMemory(), nullptr, Svc::MemoryPermission::None, 750 time_shared_mem->Initialize(system.DeviceMemory(), nullptr, Svc::MemoryPermission::None,
751 Svc::MemoryPermission::Read, time_size, "Time:SharedMemory"); 751 Svc::MemoryPermission::Read, time_size);
752 hidbus_shared_mem->Initialize(system.DeviceMemory(), nullptr, Svc::MemoryPermission::None, 752 hidbus_shared_mem->Initialize(system.DeviceMemory(), nullptr, Svc::MemoryPermission::None,
753 Svc::MemoryPermission::Read, hidbus_size, 753 Svc::MemoryPermission::Read, hidbus_size);
754 "HidBus:SharedMemory");
755 } 754 }
756 755
757 std::mutex registered_objects_lock; 756 std::mutex registered_objects_lock;
diff --git a/src/core/hle/kernel/svc/svc_port.cpp b/src/core/hle/kernel/svc/svc_port.cpp
index 78c2a8d17..0b5556bc4 100644
--- a/src/core/hle/kernel/svc/svc_port.cpp
+++ b/src/core/hle/kernel/svc/svc_port.cpp
@@ -81,7 +81,7 @@ Result ManageNamedPort(Core::System& system, Handle* out_server_handle, uint64_t
81 R_UNLESS(port != nullptr, ResultOutOfResource); 81 R_UNLESS(port != nullptr, ResultOutOfResource);
82 82
83 // Initialize the new port. 83 // Initialize the new port.
84 port->Initialize(max_sessions, false, ""); 84 port->Initialize(max_sessions, false, 0);
85 85
86 // Register the port. 86 // Register the port.
87 KPort::Register(system.Kernel(), port); 87 KPort::Register(system.Kernel(), port);
diff --git a/src/core/hle/kernel/svc/svc_session.cpp b/src/core/hle/kernel/svc/svc_session.cpp
index 6dd242dcf..90d680540 100644
--- a/src/core/hle/kernel/svc/svc_session.cpp
+++ b/src/core/hle/kernel/svc/svc_session.cpp
@@ -12,7 +12,7 @@ namespace Kernel::Svc {
12namespace { 12namespace {
13 13
14template <typename T> 14template <typename T>
15Result CreateSession(Core::System& system, Handle* out_server, Handle* out_client, u64 name) { 15Result CreateSession(Core::System& system, Handle* out_server, Handle* out_client, uint64_t name) {
16 auto& process = GetCurrentProcess(system.Kernel()); 16 auto& process = GetCurrentProcess(system.Kernel());
17 auto& handle_table = process.GetHandleTable(); 17 auto& handle_table = process.GetHandleTable();
18 18
@@ -59,7 +59,7 @@ Result CreateSession(Core::System& system, Handle* out_server, Handle* out_clien
59 R_UNLESS(session != nullptr, ResultOutOfResource); 59 R_UNLESS(session != nullptr, ResultOutOfResource);
60 60
61 // Initialize the session. 61 // Initialize the session.
62 session->Initialize(nullptr, fmt::format("{}", name)); 62 session->Initialize(nullptr, name);
63 63
64 // Commit the session reservation. 64 // Commit the session reservation.
65 session_reservation.Commit(); 65 session_reservation.Commit();
diff --git a/src/core/hle/service/ipc_helpers.h b/src/core/hle/service/ipc_helpers.h
index 8703b57ca..e4cb4e1f2 100644
--- a/src/core/hle/service/ipc_helpers.h
+++ b/src/core/hle/service/ipc_helpers.h
@@ -155,7 +155,7 @@ public:
155 Kernel::LimitableResource::SessionCountMax, 1); 155 Kernel::LimitableResource::SessionCountMax, 1);
156 156
157 auto* session = Kernel::KSession::Create(kernel); 157 auto* session = Kernel::KSession::Create(kernel);
158 session->Initialize(nullptr, iface->GetServiceName()); 158 session->Initialize(nullptr, 0);
159 159
160 auto next_manager = std::make_shared<Service::SessionRequestManager>( 160 auto next_manager = std::make_shared<Service::SessionRequestManager>(
161 kernel, manager->GetServerManager()); 161 kernel, manager->GetServerManager());
diff --git a/src/core/hle/service/server_manager.cpp b/src/core/hle/service/server_manager.cpp
index bd04cd023..6b4a1291e 100644
--- a/src/core/hle/service/server_manager.cpp
+++ b/src/core/hle/service/server_manager.cpp
@@ -124,7 +124,7 @@ Result ServerManager::ManageNamedPort(const std::string& service_name,
124 124
125 // Create a new port. 125 // Create a new port.
126 auto* port = Kernel::KPort::Create(m_system.Kernel()); 126 auto* port = Kernel::KPort::Create(m_system.Kernel());
127 port->Initialize(max_sessions, false, service_name); 127 port->Initialize(max_sessions, false, 0);
128 128
129 // Register the port. 129 // Register the port.
130 Kernel::KPort::Register(m_system.Kernel(), port); 130 Kernel::KPort::Register(m_system.Kernel(), port);
diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp
index b4046d3ce..c45be5726 100644
--- a/src/core/hle/service/sm/sm.cpp
+++ b/src/core/hle/service/sm/sm.cpp
@@ -62,7 +62,7 @@ Result ServiceManager::RegisterService(std::string name, u32 max_sessions,
62 } 62 }
63 63
64 auto* port = Kernel::KPort::Create(kernel); 64 auto* port = Kernel::KPort::Create(kernel);
65 port->Initialize(ServerSessionCountMax, false, name); 65 port->Initialize(ServerSessionCountMax, false, 0);
66 66
67 service_ports.emplace(name, port); 67 service_ports.emplace(name, port);
68 registered_services.emplace(name, handler); 68 registered_services.emplace(name, handler);
@@ -211,7 +211,7 @@ void SM::RegisterService(HLERequestContext& ctx) {
211 } 211 }
212 212
213 auto* port = Kernel::KPort::Create(kernel); 213 auto* port = Kernel::KPort::Create(kernel);
214 port->Initialize(ServerSessionCountMax, is_light, name); 214 port->Initialize(ServerSessionCountMax, is_light, 0);
215 SCOPE_EXIT({ port->GetClientPort().Close(); }); 215 SCOPE_EXIT({ port->GetClientPort().Close(); });
216 216
217 IPC::ResponseBuilder rb{ctx, 2, 0, 1, IPC::ResponseBuilder::Flags::AlwaysMoveHandles}; 217 IPC::ResponseBuilder rb{ctx, 2, 0, 1, IPC::ResponseBuilder::Flags::AlwaysMoveHandles};
diff --git a/src/core/hle/service/sm/sm_controller.cpp b/src/core/hle/service/sm/sm_controller.cpp
index 0111c8d7f..419c1df2b 100644
--- a/src/core/hle/service/sm/sm_controller.cpp
+++ b/src/core/hle/service/sm/sm_controller.cpp
@@ -44,7 +44,7 @@ void Controller::CloneCurrentObject(HLERequestContext& ctx) {
44 ASSERT(session != nullptr); 44 ASSERT(session != nullptr);
45 45
46 // Initialize the session. 46 // Initialize the session.
47 session->Initialize(nullptr, ""); 47 session->Initialize(nullptr, 0);
48 48
49 // Commit the session reservation. 49 // Commit the session reservation.
50 session_reservation.Commit(); 50 session_reservation.Commit();
diff --git a/src/yuzu/debugger/wait_tree.cpp b/src/yuzu/debugger/wait_tree.cpp
index 7f7c5fc42..219912128 100644
--- a/src/yuzu/debugger/wait_tree.cpp
+++ b/src/yuzu/debugger/wait_tree.cpp
@@ -182,10 +182,9 @@ bool WaitTreeExpandableItem::IsExpandable() const {
182} 182}
183 183
184QString WaitTreeSynchronizationObject::GetText() const { 184QString WaitTreeSynchronizationObject::GetText() const {
185 return tr("[%1] %2 %3") 185 return tr("[%1] %2")
186 .arg(object.GetId()) 186 .arg(object.GetId())
187 .arg(QString::fromStdString(object.GetTypeObj().GetName()), 187 .arg(QString::fromStdString(object.GetTypeObj().GetName()));
188 QString::fromStdString(object.GetName()));
189} 188}
190 189
191std::unique_ptr<WaitTreeSynchronizationObject> WaitTreeSynchronizationObject::make( 190std::unique_ptr<WaitTreeSynchronizationObject> WaitTreeSynchronizationObject::make(