// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include "common/types.h" #include "core/libraries/error_codes.h" namespace Core::Loader { class SymbolsResolver; } namespace Libraries::Kernel { void ErrSceToPosix(int result); int ErrnoToSceKernelError(int e); void SetPosixErrno(int e); template struct WrapperImpl; template struct WrapperImpl { static R PS4_SYSV_ABI wrap(Args... args) { u32 ret = f(args...); if (ret != 0) { ret += SCE_KERNEL_ERROR_UNKNOWN; } return ret; } }; template constexpr auto OrbisWrapper = WrapperImpl::wrap; #define ORBIS(func) OrbisWrapper int* PS4_SYSV_ABI __Error(); void RegisterKernel(Core::Loader::SymbolsResolver* sym); } // namespace Libraries::Kernel