diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/kernel/k_scoped_lock.h | 12 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_scoped_resource_reservation.h | 36 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_session_request.cpp | 16 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_session_request.h | 14 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_shared_memory.cpp | 55 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_shared_memory.h | 26 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_shared_memory_info.h | 17 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_spin_lock.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_spin_lock.h | 14 |
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 | ||
| 19 | template <typename T> | 19 | template <typename T> |
| 20 | requires KLockable<T> | 20 | requires KLockable<T> |
| 21 | class [[nodiscard]] KScopedLock { | 21 | class KScopedLock { |
| 22 | public: | 22 | public: |
| 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 | ||
| 38 | private: | 38 | private: |
| 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 { | |||
| 12 | class KScopedResourceReservation { | 12 | class KScopedResourceReservation { |
| 13 | public: | 13 | public: |
| 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 | ||
| 54 | private: | 54 | private: |
| 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 | ||
| 36 | Result KSessionRequest::SessionMappings::PushSend(VAddr client, VAddr server, size_t size, | 36 | Result 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 | ||
| 43 | Result KSessionRequest::SessionMappings::PushReceive(VAddr client, VAddr server, size_t size, | 43 | Result 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 | ||
| 49 | Result KSessionRequest::SessionMappings::PushExchange(VAddr client, VAddr server, size_t size, | 49 | Result 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 | ||
| 54 | void KSessionRequest::SessionMappings::Finalize() { | 54 | void 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 { | |||
| 15 | KSharedMemory::KSharedMemory(KernelCore& kernel_) : KAutoObjectWithSlabHeapAndContainer{kernel_} {} | 15 | KSharedMemory::KSharedMemory(KernelCore& kernel_) : KAutoObjectWithSlabHeapAndContainer{kernel_} {} |
| 16 | KSharedMemory::~KSharedMemory() = default; | 16 | KSharedMemory::~KSharedMemory() = default; |
| 17 | 17 | ||
| 18 | Result KSharedMemory::Initialize(Core::DeviceMemory& device_memory_, KProcess* owner_process_, | 18 | Result 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 | ||
| 68 | void KSharedMemory::Finalize() { | 68 | void 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() { | |||
| 81 | Result KSharedMemory::Map(KProcess& target_process, VAddr address, std::size_t map_size, | 81 | Result 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 | ||
| 99 | Result KSharedMemory::Unmap(KProcess& target_process, VAddr address, std::size_t unmap_size) { | 99 | Result 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 | ||
| 76 | private: | 76 | private: |
| 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 | ||
| 37 | private: | 40 | private: |
| 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 @@ | |||
| 6 | namespace Kernel { | 6 | namespace Kernel { |
| 7 | 7 | ||
| 8 | void KSpinLock::Lock() { | 8 | void KSpinLock::Lock() { |
| 9 | lck.lock(); | 9 | m_lock.lock(); |
| 10 | } | 10 | } |
| 11 | 11 | ||
| 12 | void KSpinLock::Unlock() { | 12 | void KSpinLock::Unlock() { |
| 13 | lck.unlock(); | 13 | m_lock.unlock(); |
| 14 | } | 14 | } |
| 15 | 15 | ||
| 16 | bool KSpinLock::TryLock() { | 16 | bool 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 | ||
| 10 | namespace Kernel { | 11 | namespace Kernel { |
| 11 | 12 | ||
| 12 | class KSpinLock { | 13 | class KSpinLock { |
| 13 | public: | 14 | public: |
| 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 | ||
| 26 | private: | 24 | private: |
| 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. |