Browse Source
Merge pull request #9299 from lioncash/cast
k_handle_table: Remove cast to void* in GetObjectForIpc
pull/15/merge
liamwhite
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
18 additions and
15 deletions
-
src/core/hle/kernel/k_handle_table.cpp
-
src/core/hle/kernel/k_handle_table.h
|
|
|
@ -2,6 +2,7 @@ |
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
|
|
|
#include "core/hle/kernel/k_handle_table.h"
|
|
|
|
#include "core/hle/kernel/k_process.h"
|
|
|
|
|
|
|
|
namespace Kernel { |
|
|
|
|
|
|
|
@ -82,6 +83,22 @@ Result KHandleTable::Add(Handle* out_handle, KAutoObject* obj) { |
|
|
|
R_SUCCEED(); |
|
|
|
} |
|
|
|
|
|
|
|
KScopedAutoObject<KAutoObject> KHandleTable::GetObjectForIpc(Handle handle, |
|
|
|
KThread* cur_thread) const { |
|
|
|
// Handle pseudo-handles.
|
|
|
|
ASSERT(cur_thread != nullptr); |
|
|
|
if (handle == Svc::PseudoHandle::CurrentProcess) { |
|
|
|
auto* const cur_process = cur_thread->GetOwnerProcess(); |
|
|
|
ASSERT(cur_process != nullptr); |
|
|
|
return cur_process; |
|
|
|
} |
|
|
|
if (handle == Svc::PseudoHandle::CurrentThread) { |
|
|
|
return cur_thread; |
|
|
|
} |
|
|
|
|
|
|
|
return GetObjectForIpcWithoutPseudoHandle(handle); |
|
|
|
} |
|
|
|
|
|
|
|
Result KHandleTable::Reserve(Handle* out_handle) { |
|
|
|
KScopedDisableDispatch dd{m_kernel}; |
|
|
|
KScopedSpinLock lk(m_lock); |
|
|
|
|
|
|
|
@ -113,21 +113,7 @@ public: |
|
|
|
return this->GetObjectImpl(handle); |
|
|
|
} |
|
|
|
|
|
|
|
KScopedAutoObject<KAutoObject> GetObjectForIpc(Handle handle, KThread* cur_thread) const { |
|
|
|
// Handle pseudo-handles. |
|
|
|
ASSERT(cur_thread != nullptr); |
|
|
|
if (handle == Svc::PseudoHandle::CurrentProcess) { |
|
|
|
auto* const cur_process = |
|
|
|
static_cast<KAutoObject*>(static_cast<void*>(cur_thread->GetOwnerProcess())); |
|
|
|
ASSERT(cur_process != nullptr); |
|
|
|
return cur_process; |
|
|
|
} |
|
|
|
if (handle == Svc::PseudoHandle::CurrentThread) { |
|
|
|
return static_cast<KAutoObject*>(cur_thread); |
|
|
|
} |
|
|
|
|
|
|
|
return GetObjectForIpcWithoutPseudoHandle(handle); |
|
|
|
} |
|
|
|
KScopedAutoObject<KAutoObject> GetObjectForIpc(Handle handle, KThread* cur_thread) const; |
|
|
|
|
|
|
|
KScopedAutoObject<KAutoObject> GetObjectByIndex(Handle* out_handle, size_t index) const { |
|
|
|
KScopedDisableDispatch dd{m_kernel}; |
|
|
|
|