diff --git a/src/core/hle/kernel/errors.h b/src/core/hle/kernel/errors.h index 221cb1bb53..4054d5db68 100644 --- a/src/core/hle/kernel/errors.h +++ b/src/core/hle/kernel/errors.h @@ -11,17 +11,16 @@ namespace Kernel { namespace ErrCodes { enum { // TODO(Subv): Remove these 3DS OS error codes. - OutOfHandles = 19, SessionClosedByRemote = 26, - PortNameTooLong = 30, NoPendingSessions = 35, - WrongPermission = 46, InvalidBufferDescriptor = 48, - MaxConnectionsReached = 52, // Confirmed Switch OS error codes + MaxConnectionsReached = 7, InvalidAddress = 102, + HandleTableFull = 105, InvalidMemoryState = 106, + InvalidMemoryPermissions = 108, InvalidProcessorId = 113, InvalidHandle = 114, InvalidCombination = 116, @@ -30,6 +29,7 @@ enum { TooLarge = 119, InvalidEnumValue = 120, InvalidState = 125, + ResourceLimitExceeded = 132, }; } @@ -37,18 +37,21 @@ enum { // double check that the code matches before re-using the constant. // TODO(bunnei): Replace these with correct errors for Switch OS -constexpr ResultCode ERR_OUT_OF_HANDLES(-1); +constexpr ResultCode ERR_HANDLE_TABLE_FULL(ErrorModule::Kernel, ErrCodes::HandleTableFull); constexpr ResultCode ERR_SESSION_CLOSED_BY_REMOTE(-1); -constexpr ResultCode ERR_PORT_NAME_TOO_LONG(-1); -constexpr ResultCode ERR_WRONG_PERMISSION(-1); -constexpr ResultCode ERR_MAX_CONNECTIONS_REACHED(-1); +constexpr ResultCode ERR_PORT_NAME_TOO_LONG(ErrorModule::Kernel, ErrCodes::TooLarge); +constexpr ResultCode ERR_MAX_CONNECTIONS_REACHED(ErrorModule::Kernel, + ErrCodes::MaxConnectionsReached); constexpr ResultCode ERR_INVALID_ENUM_VALUE(ErrorModule::Kernel, ErrCodes::InvalidEnumValue); constexpr ResultCode ERR_INVALID_ENUM_VALUE_FND(-1); constexpr ResultCode ERR_INVALID_COMBINATION(-1); -constexpr ResultCode ERR_INVALID_COMBINATION_KERNEL(-1); +constexpr ResultCode ERR_INVALID_COMBINATION_KERNEL(ErrorModule::Kernel, + ErrCodes::InvalidCombination); constexpr ResultCode ERR_OUT_OF_MEMORY(-1); constexpr ResultCode ERR_INVALID_ADDRESS(ErrorModule::Kernel, ErrCodes::InvalidAddress); constexpr ResultCode ERR_INVALID_ADDRESS_STATE(ErrorModule::Kernel, ErrCodes::InvalidMemoryState); +constexpr ResultCode ERR_INVALID_MEMORY_PERMISSIONS(ErrorModule::Kernel, + ErrCodes::InvalidMemoryPermissions); constexpr ResultCode ERR_INVALID_HANDLE(ErrorModule::Kernel, ErrCodes::InvalidHandle); constexpr ResultCode ERR_INVALID_STATE(ErrorModule::Kernel, ErrCodes::InvalidState); constexpr ResultCode ERR_INVALID_POINTER(-1); diff --git a/src/core/hle/kernel/handle_table.cpp b/src/core/hle/kernel/handle_table.cpp index 28e21428a5..6d9f7a02bb 100644 --- a/src/core/hle/kernel/handle_table.cpp +++ b/src/core/hle/kernel/handle_table.cpp @@ -26,7 +26,7 @@ ResultVal HandleTable::Create(SharedPtr obj) { u16 slot = next_free_slot; if (slot >= generations.size()) { LOG_ERROR(Kernel, "Unable to allocate Handle, too many slots in use."); - return ERR_OUT_OF_HANDLES; + return ERR_HANDLE_TABLE_FULL; } next_free_slot = generations[slot]; diff --git a/src/core/hle/kernel/handle_table.h b/src/core/hle/kernel/handle_table.h index 22ddda6300..aee3583e8a 100644 --- a/src/core/hle/kernel/handle_table.h +++ b/src/core/hle/kernel/handle_table.h @@ -47,7 +47,7 @@ public: /** * Allocates a handle for the given object. * @return The created Handle or one of the following errors: - * - `ERR_OUT_OF_HANDLES`: the maximum number of handles has been exceeded. + * - `ERR_HANDLE_TABLE_FULL`: the maximum number of handles has been exceeded. */ ResultVal Create(SharedPtr obj); diff --git a/src/core/hle/kernel/shared_memory.cpp b/src/core/hle/kernel/shared_memory.cpp index 21ddc2f7dc..fc168d2b53 100644 --- a/src/core/hle/kernel/shared_memory.cpp +++ b/src/core/hle/kernel/shared_memory.cpp @@ -101,7 +101,7 @@ ResultCode SharedMemory::Map(Process* target_process, VAddr address, MemoryPermi static_cast(this->permissions) & ~static_cast(other_permissions)) { LOG_ERROR(Kernel, "cannot map id={}, address=0x{:X} name={}, permissions don't match", GetObjectId(), address, name); - return ERR_WRONG_PERMISSION; + return ERR_INVALID_MEMORY_PERMISSIONS; } VAddr target_address = address;