diff options
| author | 2021-04-03 23:22:07 -0700 | |
|---|---|---|
| committer | 2021-05-05 16:40:50 -0700 | |
| commit | 086db71e942dc3468bccb741cabf62fdd221e790 (patch) | |
| tree | 46dda7ba6a9d2a1590b09ddddb450595879b2896 /src/core/hle/kernel/svc.cpp | |
| parent | hle: kernel: Migrate KProcess to KAutoObject. (diff) | |
| download | yuzu-086db71e942dc3468bccb741cabf62fdd221e790.tar.gz yuzu-086db71e942dc3468bccb741cabf62fdd221e790.tar.xz yuzu-086db71e942dc3468bccb741cabf62fdd221e790.zip | |
hle: kernel: Migrate KSharedMemory to KAutoObject.
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 7d676e5f7..17d63658a 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -328,7 +328,7 @@ static ResultCode ConnectToNamedPort(Core::System& system, Handle* out_handle, | |||
| 328 | 328 | ||
| 329 | // Return the client session | 329 | // Return the client session |
| 330 | auto& handle_table = kernel.CurrentProcess()->GetHandleTable(); | 330 | auto& handle_table = kernel.CurrentProcess()->GetHandleTable(); |
| 331 | CASCADE_RESULT(*out_handle, handle_table.Create(client_session)); | 331 | CASCADE_RESULT(*out_handle, handle_table.Create(client_session.get())); |
| 332 | return RESULT_SUCCESS; | 332 | return RESULT_SUCCESS; |
| 333 | } | 333 | } |
| 334 | 334 | ||
| @@ -836,7 +836,7 @@ static ResultCode GetInfo(Core::System& system, u64* result, u64 info_id, u64 ha | |||
| 836 | return RESULT_SUCCESS; | 836 | return RESULT_SUCCESS; |
| 837 | } | 837 | } |
| 838 | 838 | ||
| 839 | const auto table_result = handle_table.Create(resource_limit); | 839 | const auto table_result = handle_table.Create(resource_limit.get()); |
| 840 | if (table_result.Failed()) { | 840 | if (table_result.Failed()) { |
| 841 | return table_result.Code(); | 841 | return table_result.Code(); |
| 842 | } | 842 | } |
| @@ -1168,12 +1168,9 @@ static ResultCode MapSharedMemory(Core::System& system, Handle shared_memory_han | |||
| 1168 | return ResultInvalidMemoryRange; | 1168 | return ResultInvalidMemoryRange; |
| 1169 | } | 1169 | } |
| 1170 | 1170 | ||
| 1171 | auto shared_memory{current_process->GetHandleTable().Get<KSharedMemory>(shared_memory_handle)}; | 1171 | auto shared_memory{ |
| 1172 | if (!shared_memory) { | 1172 | current_process->GetHandleTable().GetObject<KSharedMemory>(shared_memory_handle)}; |
| 1173 | LOG_ERROR(Kernel_SVC, "Shared memory does not exist, shared_memory_handle=0x{:08X}", | 1173 | R_UNLESS(shared_memory.IsNotNull(), ResultInvalidHandle); |
| 1174 | shared_memory_handle); | ||
| 1175 | return ResultInvalidHandle; | ||
| 1176 | } | ||
| 1177 | 1174 | ||
| 1178 | return shared_memory->Map(*current_process, addr, size, | 1175 | return shared_memory->Map(*current_process, addr, size, |
| 1179 | static_cast<KMemoryPermission>(permission_type)); | 1176 | static_cast<KMemoryPermission>(permission_type)); |
| @@ -1817,7 +1814,7 @@ static ResultCode CreateTransferMemory(Core::System& system, Handle* handle, VAd | |||
| 1817 | } | 1814 | } |
| 1818 | 1815 | ||
| 1819 | auto& handle_table = kernel.CurrentProcess()->GetHandleTable(); | 1816 | auto& handle_table = kernel.CurrentProcess()->GetHandleTable(); |
| 1820 | const auto result{handle_table.Create(std::move(transfer_mem_handle))}; | 1817 | const auto result{handle_table.Create(transfer_mem_handle.get())}; |
| 1821 | if (result.Failed()) { | 1818 | if (result.Failed()) { |
| 1822 | return result.Code(); | 1819 | return result.Code(); |
| 1823 | } | 1820 | } |
| @@ -1966,7 +1963,7 @@ static ResultCode CreateEvent(Core::System& system, Handle* out_write, Handle* o | |||
| 1966 | event->Initialize(); | 1963 | event->Initialize(); |
| 1967 | 1964 | ||
| 1968 | // Add the writable event to the handle table. | 1965 | // Add the writable event to the handle table. |
| 1969 | const auto write_create_result = handle_table.Create(event->GetWritableEvent()); | 1966 | const auto write_create_result = handle_table.Create(event->GetWritableEvent().get()); |
| 1970 | if (write_create_result.Failed()) { | 1967 | if (write_create_result.Failed()) { |
| 1971 | return write_create_result.Code(); | 1968 | return write_create_result.Code(); |
| 1972 | } | 1969 | } |
| @@ -1976,7 +1973,7 @@ static ResultCode CreateEvent(Core::System& system, Handle* out_write, Handle* o | |||
| 1976 | auto handle_guard = SCOPE_GUARD({ handle_table.Remove(*write_create_result); }); | 1973 | auto handle_guard = SCOPE_GUARD({ handle_table.Remove(*write_create_result); }); |
| 1977 | 1974 | ||
| 1978 | // Add the readable event to the handle table. | 1975 | // Add the readable event to the handle table. |
| 1979 | const auto read_create_result = handle_table.Create(SharedFrom(event->GetReadableEvent())); | 1976 | const auto read_create_result = handle_table.Create(event->GetReadableEvent()); |
| 1980 | if (read_create_result.Failed()) { | 1977 | if (read_create_result.Failed()) { |
| 1981 | return read_create_result.Code(); | 1978 | return read_create_result.Code(); |
| 1982 | } | 1979 | } |
| @@ -2027,7 +2024,7 @@ static ResultCode CreateResourceLimit(Core::System& system, Handle* out_handle) | |||
| 2027 | auto* const current_process = kernel.CurrentProcess(); | 2024 | auto* const current_process = kernel.CurrentProcess(); |
| 2028 | ASSERT(current_process != nullptr); | 2025 | ASSERT(current_process != nullptr); |
| 2029 | 2026 | ||
| 2030 | const auto handle = current_process->GetHandleTable().Create(std::move(resource_limit)); | 2027 | const auto handle = current_process->GetHandleTable().Create(resource_limit.get()); |
| 2031 | if (handle.Failed()) { | 2028 | if (handle.Failed()) { |
| 2032 | return handle.Code(); | 2029 | return handle.Code(); |
| 2033 | } | 2030 | } |