summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/k_scoped_lock.h12
-rw-r--r--src/core/hle/kernel/k_scoped_resource_reservation.h36
-rw-r--r--src/core/hle/kernel/k_session_request.cpp16
-rw-r--r--src/core/hle/kernel/k_session_request.h14
-rw-r--r--src/core/hle/kernel/k_shared_memory.cpp55
-rw-r--r--src/core/hle/kernel/k_shared_memory.h26
-rw-r--r--src/core/hle/kernel/k_shared_memory_info.h17
-rw-r--r--src/core/hle/kernel/k_spin_lock.cpp6
-rw-r--r--src/core/hle/kernel/k_spin_lock.h14
9 files changed, 99 insertions, 97 deletions
diff --git a/src/core/hle/kernel/k_scoped_lock.h b/src/core/hle/kernel/k_scoped_lock.h
index a15640fd2..629a7d20d 100644
--- a/src/core/hle/kernel/k_scoped_lock.h
+++ b/src/core/hle/kernel/k_scoped_lock.h
@@ -18,15 +18,15 @@ std::is_reference_v<T>&& requires(T& t) {
18 18
19template <typename T> 19template <typename T>
20 requires KLockable<T> 20 requires KLockable<T>
21class [[nodiscard]] KScopedLock { 21class KScopedLock {
22public: 22public:
23 explicit KScopedLock(T* l) : lock_ptr(l) { 23 explicit KScopedLock(T* l) : m_lock(*l) {}
24 this->lock_ptr->Lock(); 24 explicit KScopedLock(T& l) : m_lock(l) {
25 m_lock.Lock();
25 } 26 }
26 explicit KScopedLock(T& l) : KScopedLock(std::addressof(l)) {}
27 27
28 ~KScopedLock() { 28 ~KScopedLock() {
29 this->lock_ptr->Unlock(); 29 m_lock.Unlock();
30 } 30 }
31 31
32 KScopedLock(const KScopedLock&) = delete; 32 KScopedLock(const KScopedLock&) = delete;
@@ -36,7 +36,7 @@ public:
36 KScopedLock& operator=(KScopedLock&&) = delete; 36 KScopedLock& operator=(KScopedLock&&) = delete;
37 37
38private: 38private:
39 T* lock_ptr; 39 T& m_lock;
40}; 40};
41 41
42} // namespace Kernel 42} // namespace Kernel
diff --git a/src/core/hle/kernel/k_scoped_resource_reservation.h b/src/core/hle/kernel/k_scoped_resource_reservation.h
index 436bcf9fe..2cc464612 100644
--- a/src/core/hle/kernel/k_scoped_resource_reservation.h
+++ b/src/core/hle/kernel/k_scoped_resource_reservation.h
@@ -12,20 +12,20 @@ namespace Kernel {
12class KScopedResourceReservation { 12class KScopedResourceReservation {
13public: 13public:
14 explicit KScopedResourceReservation(KResourceLimit* l, LimitableResource r, s64 v, s64 timeout) 14 explicit KScopedResourceReservation(KResourceLimit* l, LimitableResource r, s64 v, s64 timeout)
15 : resource_limit(std::move(l)), value(v), resource(r) { 15 : m_limit(l), m_value(v), m_resource(r) {
16 if (resource_limit && value) { 16 if (m_limit && m_value) {
17 success = resource_limit->Reserve(resource, value, timeout); 17 m_succeeded = m_limit->Reserve(m_resource, m_value, timeout);
18 } else { 18 } else {
19 success = true; 19 m_succeeded = true;
20 } 20 }
21 } 21 }
22 22
23 explicit KScopedResourceReservation(KResourceLimit* l, LimitableResource r, s64 v = 1) 23 explicit KScopedResourceReservation(KResourceLimit* l, LimitableResource r, s64 v = 1)
24 : resource_limit(std::move(l)), value(v), resource(r) { 24 : m_limit(l), m_value(v), m_resource(r) {
25 if (resource_limit && value) { 25 if (m_limit && m_value) {
26 success = resource_limit->Reserve(resource, value); 26 m_succeeded = m_limit->Reserve(m_resource, m_value);
27 } else { 27 } else {
28 success = true; 28 m_succeeded = true;
29 } 29 }
30 } 30 }
31 31
@@ -36,26 +36,26 @@ public:
36 : KScopedResourceReservation(p->GetResourceLimit(), r, v) {} 36 : KScopedResourceReservation(p->GetResourceLimit(), r, v) {}
37 37
38 ~KScopedResourceReservation() noexcept { 38 ~KScopedResourceReservation() noexcept {
39 if (resource_limit && value && success) { 39 if (m_limit && m_value && m_succeeded) {
40 // resource was not committed, release the reservation. 40 // Resource was not committed, release the reservation.
41 resource_limit->Release(resource, value); 41 m_limit->Release(m_resource, m_value);
42 } 42 }
43 } 43 }
44 44
45 /// Commit the resource reservation, destruction of this object does not release the resource 45 /// Commit the resource reservation, destruction of this object does not release the resource
46 void Commit() { 46 void Commit() {
47 resource_limit = nullptr; 47 m_limit = nullptr;
48 } 48 }
49 49
50 [[nodiscard]] bool Succeeded() const { 50 bool Succeeded() const {
51 return success; 51 return m_succeeded;
52 } 52 }
53 53
54private: 54private:
55 KResourceLimit* resource_limit{}; 55 KResourceLimit* m_limit{};
56 s64 value; 56 s64 m_value{};
57 LimitableResource resource; 57 LimitableResource m_resource{};
58 bool success; 58 bool m_succeeded{};
59}; 59};
60 60
61} // namespace Kernel 61} // namespace Kernel
diff --git a/src/core/hle/kernel/k_session_request.cpp b/src/core/hle/kernel/k_session_request.cpp
index 520da6aa7..a329e5690 100644
--- a/src/core/hle/kernel/k_session_request.cpp
+++ b/src/core/hle/kernel/k_session_request.cpp
@@ -14,46 +14,46 @@ Result KSessionRequest::SessionMappings::PushMap(VAddr client, VAddr server, siz
14 // Get the mapping. 14 // Get the mapping.
15 Mapping* mapping; 15 Mapping* mapping;
16 if (index < NumStaticMappings) { 16 if (index < NumStaticMappings) {
17 mapping = &m_static_mappings[index]; 17 mapping = std::addressof(m_static_mappings[index]);
18 } else { 18 } else {
19 // Allocate a page for the extra mappings. 19 // Allocate a page for the extra mappings.
20 if (m_mappings == nullptr) { 20 if (m_mappings == nullptr) {
21 KPageBuffer* page_buffer = KPageBuffer::Allocate(kernel); 21 KPageBuffer* page_buffer = KPageBuffer::Allocate(m_kernel);
22 R_UNLESS(page_buffer != nullptr, ResultOutOfMemory); 22 R_UNLESS(page_buffer != nullptr, ResultOutOfMemory);
23 23
24 m_mappings = reinterpret_cast<Mapping*>(page_buffer); 24 m_mappings = reinterpret_cast<Mapping*>(page_buffer);
25 } 25 }
26 26
27 mapping = &m_mappings[index - NumStaticMappings]; 27 mapping = std::addressof(m_mappings[index - NumStaticMappings]);
28 } 28 }
29 29
30 // Set the mapping. 30 // Set the mapping.
31 mapping->Set(client, server, size, state); 31 mapping->Set(client, server, size, state);
32 32
33 return ResultSuccess; 33 R_SUCCEED();
34} 34}
35 35
36Result KSessionRequest::SessionMappings::PushSend(VAddr client, VAddr server, size_t size, 36Result KSessionRequest::SessionMappings::PushSend(VAddr client, VAddr server, size_t size,
37 KMemoryState state) { 37 KMemoryState state) {
38 ASSERT(m_num_recv == 0); 38 ASSERT(m_num_recv == 0);
39 ASSERT(m_num_exch == 0); 39 ASSERT(m_num_exch == 0);
40 return this->PushMap(client, server, size, state, m_num_send++); 40 R_RETURN(this->PushMap(client, server, size, state, m_num_send++));
41} 41}
42 42
43Result KSessionRequest::SessionMappings::PushReceive(VAddr client, VAddr server, size_t size, 43Result KSessionRequest::SessionMappings::PushReceive(VAddr client, VAddr server, size_t size,
44 KMemoryState state) { 44 KMemoryState state) {
45 ASSERT(m_num_exch == 0); 45 ASSERT(m_num_exch == 0);
46 return this->PushMap(client, server, size, state, m_num_send + m_num_recv++); 46 R_RETURN(this->PushMap(client, server, size, state, m_num_send + m_num_recv++));
47} 47}
48 48
49Result KSessionRequest::SessionMappings::PushExchange(VAddr client, VAddr server, size_t size, 49Result KSessionRequest::SessionMappings::PushExchange(VAddr client, VAddr server, size_t size,
50 KMemoryState state) { 50 KMemoryState state) {
51 return this->PushMap(client, server, size, state, m_num_send + m_num_recv + m_num_exch++); 51 R_RETURN(this->PushMap(client, server, size, state, m_num_send + m_num_recv + m_num_exch++));
52} 52}
53 53
54void KSessionRequest::SessionMappings::Finalize() { 54void KSessionRequest::SessionMappings::Finalize() {
55 if (m_mappings) { 55 if (m_mappings) {
56 KPageBuffer::Free(kernel, reinterpret_cast<KPageBuffer*>(m_mappings)); 56 KPageBuffer::Free(m_kernel, reinterpret_cast<KPageBuffer*>(m_mappings));
57 m_mappings = nullptr; 57 m_mappings = nullptr;
58 } 58 }
59} 59}
diff --git a/src/core/hle/kernel/k_session_request.h b/src/core/hle/kernel/k_session_request.h
index e5558bc2c..5003e5c1d 100644
--- a/src/core/hle/kernel/k_session_request.h
+++ b/src/core/hle/kernel/k_session_request.h
@@ -47,14 +47,14 @@ public:
47 } 47 }
48 48
49 private: 49 private:
50 VAddr m_client_address; 50 VAddr m_client_address{};
51 VAddr m_server_address; 51 VAddr m_server_address{};
52 size_t m_size; 52 size_t m_size{};
53 KMemoryState m_state; 53 KMemoryState m_state{};
54 }; 54 };
55 55
56 public: 56 public:
57 explicit SessionMappings(KernelCore& kernel_) : kernel(kernel_) {} 57 explicit SessionMappings(KernelCore& kernel) : m_kernel(kernel) {}
58 58
59 void Initialize() {} 59 void Initialize() {}
60 void Finalize(); 60 void Finalize();
@@ -149,8 +149,8 @@ public:
149 } 149 }
150 150
151 private: 151 private:
152 KernelCore& kernel; 152 KernelCore& m_kernel;
153 std::array<Mapping, NumStaticMappings> m_static_mappings; 153 std::array<Mapping, NumStaticMappings> m_static_mappings{};
154 Mapping* m_mappings{}; 154 Mapping* m_mappings{};
155 u8 m_num_send{}; 155 u8 m_num_send{};
156 u8 m_num_recv{}; 156 u8 m_num_recv{};
diff --git a/src/core/hle/kernel/k_shared_memory.cpp b/src/core/hle/kernel/k_shared_memory.cpp
index 42cb7ac77..bf134f7c8 100644
--- a/src/core/hle/kernel/k_shared_memory.cpp
+++ b/src/core/hle/kernel/k_shared_memory.cpp
@@ -15,15 +15,15 @@ namespace Kernel {
15KSharedMemory::KSharedMemory(KernelCore& kernel_) : KAutoObjectWithSlabHeapAndContainer{kernel_} {} 15KSharedMemory::KSharedMemory(KernelCore& kernel_) : KAutoObjectWithSlabHeapAndContainer{kernel_} {}
16KSharedMemory::~KSharedMemory() = default; 16KSharedMemory::~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 // Set members. 21 // Set members.
22 owner_process = owner_process_; 22 m_owner_process = owner_process;
23 device_memory = &device_memory_; 23 m_device_memory = std::addressof(device_memory);
24 owner_permission = owner_permission_; 24 m_owner_permission = owner_permission;
25 user_permission = user_permission_; 25 m_user_permission = user_permission;
26 size = Common::AlignUp(size_, PageSize); 26 m_size = Common::AlignUp(size, PageSize);
27 27
28 const size_t num_pages = Common::DivideUp(size, PageSize); 28 const size_t num_pages = Common::DivideUp(size, PageSize);
29 29
@@ -32,7 +32,7 @@ Result KSharedMemory::Initialize(Core::DeviceMemory& device_memory_, KProcess* o
32 32
33 // Reserve memory for ourselves. 33 // Reserve memory for ourselves.
34 KScopedResourceReservation memory_reservation(reslimit, LimitableResource::PhysicalMemoryMax, 34 KScopedResourceReservation memory_reservation(reslimit, LimitableResource::PhysicalMemoryMax,
35 size_); 35 size);
36 R_UNLESS(memory_reservation.Succeeded(), ResultLimitReached); 36 R_UNLESS(memory_reservation.Succeeded(), ResultLimitReached);
37 37
38 // Allocate the memory. 38 // Allocate the memory.
@@ -40,26 +40,26 @@ Result KSharedMemory::Initialize(Core::DeviceMemory& device_memory_, KProcess* o
40 //! HACK: Open continuous mapping from sysmodule pool. 40 //! HACK: Open continuous mapping from sysmodule pool.
41 auto option = KMemoryManager::EncodeOption(KMemoryManager::Pool::Secure, 41 auto option = KMemoryManager::EncodeOption(KMemoryManager::Pool::Secure,
42 KMemoryManager::Direction::FromBack); 42 KMemoryManager::Direction::FromBack);
43 physical_address = kernel.MemoryManager().AllocateAndOpenContinuous(num_pages, 1, option); 43 m_physical_address = kernel.MemoryManager().AllocateAndOpenContinuous(num_pages, 1, option);
44 R_UNLESS(physical_address != 0, ResultOutOfMemory); 44 R_UNLESS(m_physical_address != 0, ResultOutOfMemory);
45 45
46 //! Insert the result into our page group. 46 //! Insert the result into our page group.
47 page_group.emplace(kernel, &kernel.GetSystemSystemResource().GetBlockInfoManager()); 47 m_page_group.emplace(kernel, &kernel.GetSystemSystemResource().GetBlockInfoManager());
48 page_group->AddBlock(physical_address, num_pages); 48 m_page_group->AddBlock(m_physical_address, num_pages);
49 49
50 // Commit our reservation. 50 // Commit our reservation.
51 memory_reservation.Commit(); 51 memory_reservation.Commit();
52 52
53 // Set our resource limit. 53 // Set our resource limit.
54 resource_limit = reslimit; 54 m_resource_limit = reslimit;
55 resource_limit->Open(); 55 m_resource_limit->Open();
56 56
57 // Mark initialized. 57 // Mark initialized.
58 is_initialized = true; 58 m_is_initialized = true;
59 59
60 // Clear all pages in the memory. 60 // Clear all pages in the memory.
61 for (const auto& block : *page_group) { 61 for (const auto& block : *m_page_group) {
62 std::memset(device_memory_.GetPointer<void>(block.GetAddress()), 0, block.GetSize()); 62 std::memset(m_device_memory->GetPointer<void>(block.GetAddress()), 0, block.GetSize());
63 } 63 }
64 64
65 R_SUCCEED(); 65 R_SUCCEED();
@@ -67,12 +67,12 @@ Result KSharedMemory::Initialize(Core::DeviceMemory& device_memory_, KProcess* o
67 67
68void KSharedMemory::Finalize() { 68void KSharedMemory::Finalize() {
69 // Close and finalize the page group. 69 // Close and finalize the page group.
70 page_group->Close(); 70 m_page_group->Close();
71 page_group->Finalize(); 71 m_page_group->Finalize();
72 72
73 // Release the memory reservation. 73 // Release the memory reservation.
74 resource_limit->Release(LimitableResource::PhysicalMemoryMax, size); 74 m_resource_limit->Release(LimitableResource::PhysicalMemoryMax, m_size);
75 resource_limit->Close(); 75 m_resource_limit->Close();
76 76
77 // Perform inherited finalization. 77 // Perform inherited finalization.
78 KAutoObjectWithSlabHeapAndContainer<KSharedMemory, KAutoObjectWithList>::Finalize(); 78 KAutoObjectWithSlabHeapAndContainer<KSharedMemory, KAutoObjectWithList>::Finalize();
@@ -81,26 +81,27 @@ void KSharedMemory::Finalize() {
81Result KSharedMemory::Map(KProcess& target_process, VAddr address, std::size_t map_size, 81Result KSharedMemory::Map(KProcess& target_process, VAddr address, std::size_t map_size,
82 Svc::MemoryPermission map_perm) { 82 Svc::MemoryPermission map_perm) {
83 // Validate the size. 83 // Validate the size.
84 R_UNLESS(size == map_size, ResultInvalidSize); 84 R_UNLESS(m_size == map_size, ResultInvalidSize);
85 85
86 // Validate the permission. 86 // Validate the permission.
87 const Svc::MemoryPermission test_perm = 87 const Svc::MemoryPermission test_perm =
88 &target_process == owner_process ? owner_permission : user_permission; 88 std::addressof(target_process) == m_owner_process ? m_owner_permission : m_user_permission;
89 if (test_perm == Svc::MemoryPermission::DontCare) { 89 if (test_perm == Svc::MemoryPermission::DontCare) {
90 ASSERT(map_perm == Svc::MemoryPermission::Read || map_perm == Svc::MemoryPermission::Write); 90 ASSERT(map_perm == Svc::MemoryPermission::Read || map_perm == Svc::MemoryPermission::Write);
91 } else { 91 } else {
92 R_UNLESS(map_perm == test_perm, ResultInvalidNewMemoryPermission); 92 R_UNLESS(map_perm == test_perm, ResultInvalidNewMemoryPermission);
93 } 93 }
94 94
95 R_RETURN(target_process.PageTable().MapPageGroup(address, *page_group, KMemoryState::Shared, 95 R_RETURN(target_process.PageTable().MapPageGroup(address, *m_page_group, KMemoryState::Shared,
96 ConvertToKMemoryPermission(map_perm))); 96 ConvertToKMemoryPermission(map_perm)));
97} 97}
98 98
99Result 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) {
100 // Validate the size. 100 // Validate the size.
101 R_UNLESS(size == unmap_size, ResultInvalidSize); 101 R_UNLESS(m_size == unmap_size, ResultInvalidSize);
102 102
103 R_RETURN(target_process.PageTable().UnmapPageGroup(address, *page_group, KMemoryState::Shared)); 103 R_RETURN(
104 target_process.PageTable().UnmapPageGroup(address, *m_page_group, KMemoryState::Shared));
104} 105}
105 106
106} // namespace Kernel 107} // namespace Kernel
diff --git a/src/core/hle/kernel/k_shared_memory.h b/src/core/hle/kernel/k_shared_memory.h
index bfd01b619..8c94ceb3a 100644
--- a/src/core/hle/kernel/k_shared_memory.h
+++ b/src/core/hle/kernel/k_shared_memory.h
@@ -54,7 +54,7 @@ public:
54 * @return A pointer to the shared memory block from the specified offset 54 * @return A pointer to the shared memory block from the specified offset
55 */ 55 */
56 u8* GetPointer(std::size_t offset = 0) { 56 u8* GetPointer(std::size_t offset = 0) {
57 return device_memory->GetPointer<u8>(physical_address + offset); 57 return m_device_memory->GetPointer<u8>(m_physical_address + offset);
58 } 58 }
59 59
60 /** 60 /**
@@ -63,26 +63,26 @@ public:
63 * @return A pointer to the shared memory block from the specified offset 63 * @return A pointer to the shared memory block from the specified offset
64 */ 64 */
65 const u8* GetPointer(std::size_t offset = 0) const { 65 const u8* GetPointer(std::size_t offset = 0) const {
66 return device_memory->GetPointer<u8>(physical_address + offset); 66 return m_device_memory->GetPointer<u8>(m_physical_address + offset);
67 } 67 }
68 68
69 void Finalize() override; 69 void Finalize() override;
70 70
71 bool IsInitialized() const override { 71 bool IsInitialized() const override {
72 return is_initialized; 72 return m_is_initialized;
73 } 73 }
74 static void PostDestroy([[maybe_unused]] uintptr_t arg) {} 74 static void PostDestroy(uintptr_t arg) {}
75 75
76private: 76private:
77 Core::DeviceMemory* device_memory{}; 77 Core::DeviceMemory* m_device_memory{};
78 KProcess* owner_process{}; 78 KProcess* m_owner_process{};
79 std::optional<KPageGroup> page_group{}; 79 std::optional<KPageGroup> m_page_group{};
80 Svc::MemoryPermission owner_permission{}; 80 Svc::MemoryPermission m_owner_permission{};
81 Svc::MemoryPermission user_permission{}; 81 Svc::MemoryPermission m_user_permission{};
82 PAddr physical_address{}; 82 PAddr m_physical_address{};
83 std::size_t size{}; 83 std::size_t m_size{};
84 KResourceLimit* resource_limit{}; 84 KResourceLimit* m_resource_limit{};
85 bool is_initialized{}; 85 bool m_is_initialized{};
86}; 86};
87 87
88} // namespace Kernel 88} // namespace Kernel
diff --git a/src/core/hle/kernel/k_shared_memory_info.h b/src/core/hle/kernel/k_shared_memory_info.h
index 2bb6b6d08..75b73ba39 100644
--- a/src/core/hle/kernel/k_shared_memory_info.h
+++ b/src/core/hle/kernel/k_shared_memory_info.h
@@ -18,25 +18,28 @@ public:
18 explicit KSharedMemoryInfo(KernelCore&) {} 18 explicit KSharedMemoryInfo(KernelCore&) {}
19 KSharedMemoryInfo() = default; 19 KSharedMemoryInfo() = default;
20 20
21 constexpr void Initialize(KSharedMemory* shmem) { 21 constexpr void Initialize(KSharedMemory* m) {
22 shared_memory = shmem; 22 m_shared_memory = m;
23 m_reference_count = 0;
23 } 24 }
24 25
25 constexpr KSharedMemory* GetSharedMemory() const { 26 constexpr KSharedMemory* GetSharedMemory() const {
26 return shared_memory; 27 return m_shared_memory;
27 } 28 }
28 29
29 constexpr void Open() { 30 constexpr void Open() {
30 ++reference_count; 31 ++m_reference_count;
32 ASSERT(m_reference_count > 0);
31 } 33 }
32 34
33 constexpr bool Close() { 35 constexpr bool Close() {
34 return (--reference_count) == 0; 36 ASSERT(m_reference_count > 0);
37 return (--m_reference_count) == 0;
35 } 38 }
36 39
37private: 40private:
38 KSharedMemory* shared_memory{}; 41 KSharedMemory* m_shared_memory{};
39 size_t reference_count{}; 42 size_t m_reference_count{};
40}; 43};
41 44
42} // namespace Kernel 45} // namespace Kernel
diff --git a/src/core/hle/kernel/k_spin_lock.cpp b/src/core/hle/kernel/k_spin_lock.cpp
index 6e16a1849..852532037 100644
--- a/src/core/hle/kernel/k_spin_lock.cpp
+++ b/src/core/hle/kernel/k_spin_lock.cpp
@@ -6,15 +6,15 @@
6namespace Kernel { 6namespace Kernel {
7 7
8void KSpinLock::Lock() { 8void KSpinLock::Lock() {
9 lck.lock(); 9 m_lock.lock();
10} 10}
11 11
12void KSpinLock::Unlock() { 12void KSpinLock::Unlock() {
13 lck.unlock(); 13 m_lock.unlock();
14} 14}
15 15
16bool KSpinLock::TryLock() { 16bool KSpinLock::TryLock() {
17 return lck.try_lock(); 17 return m_lock.try_lock();
18} 18}
19 19
20} // namespace Kernel 20} // namespace Kernel
diff --git a/src/core/hle/kernel/k_spin_lock.h b/src/core/hle/kernel/k_spin_lock.h
index 397a93d21..094a1e6be 100644
--- a/src/core/hle/kernel/k_spin_lock.h
+++ b/src/core/hle/kernel/k_spin_lock.h
@@ -5,26 +5,24 @@
5 5
6#include <mutex> 6#include <mutex>
7 7
8#include "common/common_funcs.h"
8#include "core/hle/kernel/k_scoped_lock.h" 9#include "core/hle/kernel/k_scoped_lock.h"
9 10
10namespace Kernel { 11namespace Kernel {
11 12
12class KSpinLock { 13class KSpinLock {
13public: 14public:
14 KSpinLock() = default; 15 explicit KSpinLock() = default;
15 16
16 KSpinLock(const KSpinLock&) = delete; 17 YUZU_NON_COPYABLE(KSpinLock);
17 KSpinLock& operator=(const KSpinLock&) = delete; 18 YUZU_NON_MOVEABLE(KSpinLock);
18
19 KSpinLock(KSpinLock&&) = delete;
20 KSpinLock& operator=(KSpinLock&&) = delete;
21 19
22 void Lock(); 20 void Lock();
23 void Unlock(); 21 void Unlock();
24 [[nodiscard]] bool TryLock(); 22 bool TryLock();
25 23
26private: 24private:
27 std::mutex lck; 25 std::mutex m_lock;
28}; 26};
29 27
30// TODO(bunnei): Alias for now, in case we want to implement these accurately in the future. 28// TODO(bunnei): Alias for now, in case we want to implement these accurately in the future.