diff --git a/CMakeLists.txt b/CMakeLists.txt index 30cb033ed..226c6762d 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -557,6 +557,16 @@ set(CORE src/core/aerolib/stubs.cpp src/core/devices/logger.cpp src/core/devices/logger.h src/core/devices/nop_device.h + src/core/devices/console.cpp + src/core/devices/console.h + src/core/devices/deci_tty6.cpp + src/core/devices/deci_tty6.h + src/core/devices/random.cpp + src/core/devices/random.h + src/core/devices/urandom.cpp + src/core/devices/urandom.h + src/core/devices/srandom.cpp + src/core/devices/srandom.h src/core/file_format/pfs.h src/core/file_format/pkg.cpp src/core/file_format/pkg.h diff --git a/src/core/devices/console.cpp b/src/core/devices/console.cpp new file mode 100644 index 000000000..459279e98 --- /dev/null +++ b/src/core/devices/console.cpp @@ -0,0 +1,52 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/logging/log.h" +#include "console.h" +#include "core/libraries/kernel/file_system.h" + +namespace Core::Devices { +int ConsoleDevice::ioctl(u64 cmd, Common::VaCtx* args) { + return 0; +} +s64 ConsoleDevice::write(const void* buf, size_t nbytes) { + return s64(); +} +size_t ConsoleDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { + return size_t(); +} +size_t ConsoleDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { + return size_t(); +} +s64 ConsoleDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) { + return s64(); +} +s64 ConsoleDevice::lseek(s64 offset, int whence) { + return s64(); +} + +s64 ConsoleDevice::read(void* buf, size_t nbytes) { + return s64(); +} + +int ConsoleDevice::fstat(Libraries::Kernel::OrbisKernelStat* sb) { + return 0; +} + +s32 ConsoleDevice::fsync() { + return s32(); +} + +int ConsoleDevice::ftruncate(s64 length) { + return 0; +} + +int ConsoleDevice::getdents(void* buf, u32 nbytes, s64* basep) { + return 0; +} + +s64 ConsoleDevice::pwrite(const void* buf, size_t nbytes, u64 offset) { + return s64(); +} + +} // namespace Core::Devices \ No newline at end of file diff --git a/src/core/devices/console.h b/src/core/devices/console.h new file mode 100644 index 000000000..9f2951a34 --- /dev/null +++ b/src/core/devices/console.h @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once +#include "base_device.h" + +namespace Core::Devices { + +class ConsoleDevice final : BaseDevice { + u32 handle; + +public: + explicit ConsoleDevice(u32 handle) : handle(handle) {} + + ~ConsoleDevice() override = default; + + int ioctl(u64 cmd, Common::VaCtx* args) override; + s64 write(const void* buf, size_t nbytes) override; + size_t readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override; + size_t writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override; + s64 preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) override; + s64 lseek(s64 offset, int whence) override; + s64 read(void* buf, size_t nbytes) override; + int fstat(Libraries::Kernel::OrbisKernelStat* sb) override; + s32 fsync() override; + int ftruncate(s64 length) override; + int getdents(void* buf, u32 nbytes, s64* basep) override; + s64 pwrite(const void* buf, size_t nbytes, u64 offset) override; +}; + +} // namespace Core::Devices \ No newline at end of file diff --git a/src/core/devices/deci_tty6.cpp b/src/core/devices/deci_tty6.cpp new file mode 100644 index 000000000..386bc6130 --- /dev/null +++ b/src/core/devices/deci_tty6.cpp @@ -0,0 +1,52 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/logging/log.h" +#include "core/libraries/kernel/file_system.h" +#include "deci_tty6.h" +#include "logger.h" + +namespace Core::Devices { +int DeciTty6Device::ioctl(u64 cmd, Common::VaCtx* args) { + return 0; +} +s64 DeciTty6Device::write(const void* buf, size_t nbytes) { + return s64(); +} +size_t DeciTty6Device::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { + return size_t(); +} +size_t DeciTty6Device::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { + return size_t(); +} +s64 DeciTty6Device::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) { + return s64(); +} +s64 DeciTty6Device::lseek(s64 offset, int whence) { + return s64(); +} + +s64 DeciTty6Device::read(void* buf, size_t nbytes) { + return s64(); +} + +int DeciTty6Device::fstat(Libraries::Kernel::OrbisKernelStat* sb) { + return 0; +} + +s32 DeciTty6Device::fsync() { + return s32(); +} + +int DeciTty6Device::ftruncate(s64 length) { + return 0; +} + +int DeciTty6Device::getdents(void* buf, u32 nbytes, s64* basep) { + return 0; +} + +s64 DeciTty6Device::pwrite(const void* buf, size_t nbytes, u64 offset) { + return s64(); +} +} // namespace Core::Devices \ No newline at end of file diff --git a/src/core/devices/deci_tty6.h b/src/core/devices/deci_tty6.h new file mode 100644 index 000000000..a08726282 --- /dev/null +++ b/src/core/devices/deci_tty6.h @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once +#include "base_device.h" + +namespace Core::Devices { + +class DeciTty6Device final : BaseDevice { + u32 handle; + +public: + explicit DeciTty6Device(u32 handle) : handle(handle) {} + + ~DeciTty6Device() override = default; + + int ioctl(u64 cmd, Common::VaCtx* args) override; + s64 write(const void* buf, size_t nbytes) override; + size_t readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override; + size_t writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override; + s64 preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) override; + s64 lseek(s64 offset, int whence) override; + s64 read(void* buf, size_t nbytes) override; + int fstat(Libraries::Kernel::OrbisKernelStat* sb) override; + s32 fsync() override; + int ftruncate(s64 length) override; + int getdents(void* buf, u32 nbytes, s64* basep) override; + s64 pwrite(const void* buf, size_t nbytes, u64 offset) override; +}; + +} // namespace Core::Devices \ No newline at end of file diff --git a/src/core/devices/random.cpp b/src/core/devices/random.cpp new file mode 100644 index 000000000..55f08261f --- /dev/null +++ b/src/core/devices/random.cpp @@ -0,0 +1,52 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/logging/log.h" +#include "core/libraries/kernel/file_system.h" +#include "logger.h" +#include "random.h" + +namespace Core::Devices { +int RandomDevice::ioctl(u64 cmd, Common::VaCtx* args) { + return 0; +} +s64 RandomDevice::write(const void* buf, size_t nbytes) { + return s64(); +} +size_t RandomDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { + return size_t(); +} +size_t RandomDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { + return size_t(); +} +s64 RandomDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) { + return s64(); +} +s64 RandomDevice::lseek(s64 offset, int whence) { + return s64(); +} + +s64 RandomDevice::read(void* buf, size_t nbytes) { + return s64(); +} + +int RandomDevice::fstat(Libraries::Kernel::OrbisKernelStat* sb) { + return 0; +} + +s32 RandomDevice::fsync() { + return s32(); +} + +int RandomDevice::ftruncate(s64 length) { + return 0; +} + +int RandomDevice::getdents(void* buf, u32 nbytes, s64* basep) { + return 0; +} + +s64 RandomDevice::pwrite(const void* buf, size_t nbytes, u64 offset) { + return s64(); +} +} // namespace Core::Devices \ No newline at end of file diff --git a/src/core/devices/random.h b/src/core/devices/random.h new file mode 100644 index 000000000..823e9a61e --- /dev/null +++ b/src/core/devices/random.h @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once +#include "base_device.h" + +namespace Core::Devices { + +class RandomDevice final : BaseDevice { + u32 handle; + +public: + explicit RandomDevice(u32 handle) : handle(handle) {} + + ~RandomDevice() override = default; + + int ioctl(u64 cmd, Common::VaCtx* args) override; + s64 write(const void* buf, size_t nbytes) override; + size_t readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override; + size_t writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override; + s64 preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) override; + s64 lseek(s64 offset, int whence) override; + s64 read(void* buf, size_t nbytes) override; + int fstat(Libraries::Kernel::OrbisKernelStat* sb) override; + s32 fsync() override; + int ftruncate(s64 length) override; + int getdents(void* buf, u32 nbytes, s64* basep) override; + s64 pwrite(const void* buf, size_t nbytes, u64 offset) override; +}; + +} // namespace Core::Devices \ No newline at end of file diff --git a/src/core/devices/srandom.cpp b/src/core/devices/srandom.cpp new file mode 100644 index 000000000..7ae2196a6 --- /dev/null +++ b/src/core/devices/srandom.cpp @@ -0,0 +1,52 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/logging/log.h" +#include "core/libraries/kernel/file_system.h" +#include "logger.h" +#include "srandom.h" + +namespace Core::Devices { +int SRandomDevice::ioctl(u64 cmd, Common::VaCtx* args) { + return 0; +} +s64 SRandomDevice::write(const void* buf, size_t nbytes) { + return s64(); +} +size_t SRandomDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { + return size_t(); +} +size_t SRandomDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { + return size_t(); +} +s64 SRandomDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) { + return s64(); +} +s64 SRandomDevice::lseek(s64 offset, int whence) { + return s64(); +} + +s64 SRandomDevice::read(void* buf, size_t nbytes) { + return s64(); +} + +int SRandomDevice::fstat(Libraries::Kernel::OrbisKernelStat* sb) { + return 0; +} + +s32 SRandomDevice::fsync() { + return s32(); +} + +int SRandomDevice::ftruncate(s64 length) { + return 0; +} + +int SRandomDevice::getdents(void* buf, u32 nbytes, s64* basep) { + return 0; +} + +s64 SRandomDevice::pwrite(const void* buf, size_t nbytes, u64 offset) { + return s64(); +} +} // namespace Core::Devices \ No newline at end of file diff --git a/src/core/devices/srandom.h b/src/core/devices/srandom.h new file mode 100644 index 000000000..6be3c6347 --- /dev/null +++ b/src/core/devices/srandom.h @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once +#include "base_device.h" + +namespace Core::Devices { + +class SRandomDevice final : BaseDevice { + u32 handle; + +public: + explicit SRandomDevice(u32 handle) : handle(handle) {} + + ~SRandomDevice() override = default; + + int ioctl(u64 cmd, Common::VaCtx* args) override; + s64 write(const void* buf, size_t nbytes) override; + size_t readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override; + size_t writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override; + s64 preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) override; + s64 lseek(s64 offset, int whence) override; + s64 read(void* buf, size_t nbytes) override; + int fstat(Libraries::Kernel::OrbisKernelStat* sb) override; + s32 fsync() override; + int ftruncate(s64 length) override; + int getdents(void* buf, u32 nbytes, s64* basep) override; + s64 pwrite(const void* buf, size_t nbytes, u64 offset) override; +}; + +} // namespace Core::Devices \ No newline at end of file diff --git a/src/core/devices/urandom.cpp b/src/core/devices/urandom.cpp new file mode 100644 index 000000000..a09d264b3 --- /dev/null +++ b/src/core/devices/urandom.cpp @@ -0,0 +1,52 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/logging/log.h" +#include "core/libraries/kernel/file_system.h" +#include "logger.h" +#include "urandom.h" + +namespace Core::Devices { +int URandomDevice::ioctl(u64 cmd, Common::VaCtx* args) { + return 0; +} +s64 URandomDevice::write(const void* buf, size_t nbytes) { + return s64(); +} +size_t URandomDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { + return size_t(); +} +size_t URandomDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { + return size_t(); +} +s64 URandomDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) { + return s64(); +} +s64 URandomDevice::lseek(s64 offset, int whence) { + return s64(); +} + +s64 URandomDevice::read(void* buf, size_t nbytes) { + return s64(); +} + +int URandomDevice::fstat(Libraries::Kernel::OrbisKernelStat* sb) { + return 0; +} + +s32 URandomDevice::fsync() { + return s32(); +} + +int URandomDevice::ftruncate(s64 length) { + return 0; +} + +int URandomDevice::getdents(void* buf, u32 nbytes, s64* basep) { + return 0; +} + +s64 URandomDevice::pwrite(const void* buf, size_t nbytes, u64 offset) { + return s64(); +} +} // namespace Core::Devices \ No newline at end of file diff --git a/src/core/devices/urandom.h b/src/core/devices/urandom.h new file mode 100644 index 000000000..5f76de0af --- /dev/null +++ b/src/core/devices/urandom.h @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once +#include "base_device.h" + +namespace Core::Devices { + +class URandomDevice final : BaseDevice { + u32 handle; + +public: + explicit URandomDevice(u32 handle) : handle(handle) {} + + ~URandomDevice() override = default; + + int ioctl(u64 cmd, Common::VaCtx* args) override; + s64 write(const void* buf, size_t nbytes) override; + size_t readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override; + size_t writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override; + s64 preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) override; + s64 lseek(s64 offset, int whence) override; + s64 read(void* buf, size_t nbytes) override; + int fstat(Libraries::Kernel::OrbisKernelStat* sb) override; + s32 fsync() override; + int ftruncate(s64 length) override; + int getdents(void* buf, u32 nbytes, s64* basep) override; + s64 pwrite(const void* buf, size_t nbytes, u64 offset) override; +}; + +} // namespace Core::Devices \ No newline at end of file