forked from suyu/suyu
Merge pull request #9299 from lioncash/cast
k_handle_table: Remove cast to void* in GetObjectForIpc
This commit is contained in:
commit
168c9ee341
2 changed files with 18 additions and 15 deletions
|
@ -2,6 +2,7 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "core/hle/kernel/k_handle_table.h"
|
#include "core/hle/kernel/k_handle_table.h"
|
||||||
|
#include "core/hle/kernel/k_process.h"
|
||||||
|
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
|
|
||||||
|
@ -82,6 +83,22 @@ Result KHandleTable::Add(Handle* out_handle, KAutoObject* obj) {
|
||||||
R_SUCCEED();
|
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) {
|
Result KHandleTable::Reserve(Handle* out_handle) {
|
||||||
KScopedDisableDispatch dd{m_kernel};
|
KScopedDisableDispatch dd{m_kernel};
|
||||||
KScopedSpinLock lk(m_lock);
|
KScopedSpinLock lk(m_lock);
|
||||||
|
|
|
@ -113,21 +113,7 @@ public:
|
||||||
return this->GetObjectImpl(handle);
|
return this->GetObjectImpl(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
KScopedAutoObject<KAutoObject> GetObjectForIpc(Handle handle, KThread* cur_thread) const {
|
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> GetObjectByIndex(Handle* out_handle, size_t index) const {
|
KScopedAutoObject<KAutoObject> GetObjectByIndex(Handle* out_handle, size_t index) const {
|
||||||
KScopedDisableDispatch dd{m_kernel};
|
KScopedDisableDispatch dd{m_kernel};
|
||||||
|
|
Loading…
Reference in a new issue