diff --git a/rpcsx-os/orbis-kernel-config/orbis-config.hpp b/rpcsx-os/orbis-kernel-config/orbis-config.hpp index cbca3f2cf..10fe0fa9e 100644 --- a/rpcsx-os/orbis-kernel-config/orbis-config.hpp +++ b/rpcsx-os/orbis-kernel-config/orbis-config.hpp @@ -23,31 +23,38 @@ using size_t = uint64_t; using ssize_t = int64_t; using off_t = int64_t; +using sshort = int16_t; +using ushort = uint16_t; + using uint = uint32_t; using sint = int32_t; using slong = int64_t; using ulong = uint64_t; +using uintptr_t = uint64_t; +using intptr_t = int64_t; + template using ptr = T *; template using cptr = T *const; using caddr_t = ptr; -inline ErrorCode uread(void *kernelAddress, ptr userAddress, - size_t size) { +[[nodiscard]] inline ErrorCode uread(void *kernelAddress, + ptr userAddress, size_t size) { std::memcpy(kernelAddress, userAddress, size); return {}; } -inline ErrorCode uwrite(ptr userAddress, const void *kernelAddress, - size_t size) { +[[nodiscard]] inline ErrorCode uwrite(ptr userAddress, + const void *kernelAddress, size_t size) { std::memcpy(userAddress, kernelAddress, size); return {}; } -inline ErrorCode ureadString(char *kernelAddress, size_t kernelSize, - ptr userAddress) { +[[nodiscard]] inline ErrorCode ureadString(char *kernelAddress, + size_t kernelSize, + ptr userAddress) { std::strncpy(kernelAddress, userAddress, kernelSize); if (kernelAddress[kernelSize - 1] != '\0') { kernelAddress[kernelSize - 1] = '\0'; @@ -57,14 +64,28 @@ inline ErrorCode ureadString(char *kernelAddress, size_t kernelSize, return {}; } -template T uread(ptr pointer) { +template [[deprecated]] T uread(ptr pointer) { T result; uread(&result, pointer, sizeof(T)); return result; } -template void uwrite(ptr pointer, T data) { - uwrite(pointer, &data, sizeof(T)); +template [[nodiscard]] ErrorCode uread(T &result, ptr pointer) { + return uread(&result, pointer, sizeof(T)); +} + +template [[nodiscard]] ErrorCode uwrite(ptr pointer, T data) { + return uwrite(pointer, &data, sizeof(T)); +} + +template +[[nodiscard]] ErrorCode uread(T *result, ptr pointer, std::size_t count) { + return uread(&result, pointer, sizeof(T) * count); +} + +template +[[nodiscard]] ErrorCode uwrite(ptr pointer, T *data, std::size_t count) { + return uwrite(pointer, &data, sizeof(T) * count); } inline uint64_t readRegister(void *context, RegisterId id) {