hotfix: use logger device on stdin

This commit is contained in:
polyproxy 2025-01-21 19:28:39 +01:00
parent 95a30b2b3e
commit 3563b88d8c
No known key found for this signature in database
GPG key ID: B8ADC8F57BA18DBA
19 changed files with 114 additions and 65 deletions

View file

@ -557,16 +557,16 @@ set(CORE src/core/aerolib/stubs.cpp
src/core/devices/logger.cpp src/core/devices/logger.cpp
src/core/devices/logger.h src/core/devices/logger.h
src/core/devices/nop_device.h src/core/devices/nop_device.h
src/core/devices/dev_console.cpp src/core/devices/console_device.cpp
src/core/devices/dev_console.h src/core/devices/console_device.h
src/core/devices/deci_tty6.cpp src/core/devices/deci_tty6_device.cpp
src/core/devices/deci_tty6.h src/core/devices/deci_tty6_device.h
src/core/devices/random.cpp src/core/devices/random_device.cpp
src/core/devices/random.h src/core/devices/random_device.h
src/core/devices/urandom.cpp src/core/devices/urandom_device.cpp
src/core/devices/urandom.h src/core/devices/urandom_device.h
src/core/devices/srandom.cpp src/core/devices/srandom_device.cpp
src/core/devices/srandom.h src/core/devices/srandom_device.h
src/core/file_format/pfs.h src/core/file_format/pfs.h
src/core/file_format/pkg.cpp src/core/file_format/pkg.cpp
src/core/file_format/pkg.h src/core/file_format/pkg.h

View file

@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include "base_device.h" #include "base_device.h"

View file

@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once

View file

@ -1,34 +1,41 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include "common/logging/log.h" #include "common/logging/log.h"
#include "dev_console.h" #include "console_device.h"
namespace Core::Devices { namespace Core::Devices {
std::shared_ptr<BaseDevice> ConsoleDevice::Create(u32 handle, const char*, int, u16) { std::shared_ptr<BaseDevice> ConsoleDevice::Create(u32 handle, const char*, int, u16) {
return std::shared_ptr<BaseDevice>( return std::shared_ptr<BaseDevice>(
reinterpret_cast<Devices::BaseDevice*>(new ConsoleDevice(handle))); reinterpret_cast<Devices::BaseDevice*>(new ConsoleDevice(handle)));
} }
int ConsoleDevice::ioctl(u64 cmd, Common::VaCtx* args) { int ConsoleDevice::ioctl(u64 cmd, Common::VaCtx* args) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 ConsoleDevice::write(const void* buf, size_t nbytes) { s64 ConsoleDevice::write(const void* buf, size_t nbytes) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
size_t ConsoleDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { size_t ConsoleDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
size_t ConsoleDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { size_t ConsoleDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 ConsoleDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) { s64 ConsoleDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 ConsoleDevice::lseek(s64 offset, int whence) { s64 ConsoleDevice::lseek(s64 offset, int whence) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;

View file

@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once
#include <memory> #include <memory>

View file

@ -1,34 +1,41 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include "common/logging/log.h" #include "common/logging/log.h"
#include "deci_tty6.h" #include "deci_tty6_device.h"
namespace Core::Devices { namespace Core::Devices {
std::shared_ptr<BaseDevice> DeciTty6Device::Create(u32 handle, const char*, int, u16) { std::shared_ptr<BaseDevice> DeciTty6Device::Create(u32 handle, const char*, int, u16) {
return std::shared_ptr<BaseDevice>( return std::shared_ptr<BaseDevice>(
reinterpret_cast<Devices::BaseDevice*>(new DeciTty6Device(handle))); reinterpret_cast<Devices::BaseDevice*>(new DeciTty6Device(handle)));
} }
int DeciTty6Device::ioctl(u64 cmd, Common::VaCtx* args) { int DeciTty6Device::ioctl(u64 cmd, Common::VaCtx* args) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 DeciTty6Device::write(const void* buf, size_t nbytes) { s64 DeciTty6Device::write(const void* buf, size_t nbytes) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
size_t DeciTty6Device::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { size_t DeciTty6Device::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
size_t DeciTty6Device::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { size_t DeciTty6Device::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 DeciTty6Device::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) { s64 DeciTty6Device::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 DeciTty6Device::lseek(s64 offset, int whence) { s64 DeciTty6Device::lseek(s64 offset, int whence) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
@ -63,4 +70,5 @@ s64 DeciTty6Device::pwrite(const void* buf, size_t nbytes, u64 offset) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
} // namespace Core::Devices } // namespace Core::Devices

View file

@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once
#include <memory> #include <memory>

View file

@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once

View file

@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/libraries/kernel/file_system.h" #include "core/libraries/kernel/file_system.h"
@ -17,10 +17,12 @@ s64 Logger::write(const void* buf, size_t nbytes) {
} }
size_t Logger::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { size_t Logger::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) {
size_t total_written = 0;
for (int i = 0; i < iovcnt; i++) { for (int i = 0; i < iovcnt; i++) {
log(static_cast<const char*>(iov[i].iov_base), iov[i].iov_len); log(static_cast<const char*>(iov[i].iov_base), iov[i].iov_len);
total_written += iov[i].iov_len;
} }
return iovcnt; return total_written;
} }
s64 Logger::pwrite(const void* buf, size_t nbytes, u64 offset) { s64 Logger::pwrite(const void* buf, size_t nbytes, u64 offset) {

View file

@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once

View file

@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once
#include "base_device.h" #include "base_device.h"
@ -17,36 +17,47 @@ public:
int ioctl(u64 cmd, Common::VaCtx* args) override { int ioctl(u64 cmd, Common::VaCtx* args) override {
return 0; return 0;
} }
s64 write(const void* buf, size_t nbytes) override { s64 write(const void* buf, size_t nbytes) override {
return 0; return 0;
} }
size_t readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override { size_t readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override {
return 0; return 0;
} }
size_t writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override { size_t writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) override {
return 0; return ORBIS_KERNEL_ERROR_EBADF;
} }
s64 preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) override { s64 preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) override {
return 0; return 0;
} }
s64 lseek(s64 offset, int whence) override { s64 lseek(s64 offset, int whence) override {
return 0; return 0;
} }
s64 read(void* buf, size_t nbytes) override { s64 read(void* buf, size_t nbytes) override {
return 0; return 0;
} }
int fstat(Libraries::Kernel::OrbisKernelStat* sb) override { int fstat(Libraries::Kernel::OrbisKernelStat* sb) override {
return 0; return 0;
} }
s32 fsync() override { s32 fsync() override {
return 0; return 0;
} }
int ftruncate(s64 length) override { int ftruncate(s64 length) override {
return 0; return 0;
} }
int getdents(void* buf, u32 nbytes, s64* basep) override { int getdents(void* buf, u32 nbytes, s64* basep) override {
return 0; return 0;
} }
s64 pwrite(const void* buf, size_t nbytes, u64 offset) override { s64 pwrite(const void* buf, size_t nbytes, u64 offset) override {
return 0; return 0;
} }

View file

@ -1,43 +1,52 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include <cstdlib> #include <cstdlib>
#include "common/logging/log.h" #include "common/logging/log.h"
#include "random.h" #include "random_device.h"
namespace Core::Devices { namespace Core::Devices {
std::shared_ptr<BaseDevice> RandomDevice::Create(u32 handle, const char*, int, u16) { std::shared_ptr<BaseDevice> RandomDevice::Create(u32 handle, const char*, int, u16) {
std::srand(std::time(nullptr)); std::srand(std::time(nullptr));
return std::shared_ptr<BaseDevice>( return std::shared_ptr<BaseDevice>(
reinterpret_cast<Devices::BaseDevice*>(new RandomDevice(handle))); reinterpret_cast<Devices::BaseDevice*>(new RandomDevice(handle)));
} }
int RandomDevice::ioctl(u64 cmd, Common::VaCtx* args) { int RandomDevice::ioctl(u64 cmd, Common::VaCtx* args) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 RandomDevice::write(const void* buf, size_t nbytes) { s64 RandomDevice::write(const void* buf, size_t nbytes) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
size_t RandomDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { size_t RandomDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
size_t RandomDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { size_t RandomDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 RandomDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) { s64 RandomDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 RandomDevice::lseek(s64 offset, int whence) { s64 RandomDevice::lseek(s64 offset, int whence) {
return 0; return 0;
} }
s64 RandomDevice::read(void* buf, size_t nbytes) { s64 RandomDevice::read(void* buf, size_t nbytes) {
auto rbuf = static_cast<char*>(buf); auto rbuf = static_cast<char*>(buf);
for (size_t i = 0; i < nbytes; i++) for (size_t i = 0; i < nbytes; i++) {
rbuf[i] = std::rand() & 0xFF; rbuf[i] = std::rand() & 0xFF;
}
return nbytes; return nbytes;
} }
@ -65,4 +74,5 @@ s64 RandomDevice::pwrite(const void* buf, size_t nbytes, u64 offset) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
} // namespace Core::Devices } // namespace Core::Devices

View file

@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once
#include <memory> #include <memory>

View file

@ -1,35 +1,43 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include <cstdlib> #include <cstdlib>
#include "common/logging/log.h" #include "common/logging/log.h"
#include "srandom.h" #include "srandom_device.h"
namespace Core::Devices { namespace Core::Devices {
std::shared_ptr<BaseDevice> SRandomDevice::Create(u32 handle, const char*, int, u16) { std::shared_ptr<BaseDevice> SRandomDevice::Create(u32 handle, const char*, int, u16) {
std::srand(std::time(nullptr)); std::srand(std::time(nullptr));
return std::shared_ptr<BaseDevice>( return std::shared_ptr<BaseDevice>(
reinterpret_cast<Devices::BaseDevice*>(new SRandomDevice(handle))); reinterpret_cast<Devices::BaseDevice*>(new SRandomDevice(handle)));
} }
int SRandomDevice::ioctl(u64 cmd, Common::VaCtx* args) { int SRandomDevice::ioctl(u64 cmd, Common::VaCtx* args) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 SRandomDevice::write(const void* buf, size_t nbytes) { s64 SRandomDevice::write(const void* buf, size_t nbytes) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
size_t SRandomDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { size_t SRandomDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
size_t SRandomDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { size_t SRandomDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 SRandomDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) { s64 SRandomDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 SRandomDevice::lseek(s64 offset, int whence) { s64 SRandomDevice::lseek(s64 offset, int whence) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
@ -37,8 +45,9 @@ s64 SRandomDevice::lseek(s64 offset, int whence) {
s64 SRandomDevice::read(void* buf, size_t nbytes) { s64 SRandomDevice::read(void* buf, size_t nbytes) {
auto rbuf = static_cast<char*>(buf); auto rbuf = static_cast<char*>(buf);
for (size_t i = 0; i < nbytes; i++) for (size_t i = 0; i < nbytes; i++) {
rbuf[i] = std::rand(); rbuf[i] = std::rand();
}
return nbytes; return nbytes;
} }
@ -66,4 +75,5 @@ s64 SRandomDevice::pwrite(const void* buf, size_t nbytes, u64 offset) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
} // namespace Core::Devices } // namespace Core::Devices

View file

@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once
#include <memory> #include <memory>

View file

@ -1,8 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include <cstdlib> #include <cstdlib>
#include "common/logging/log.h" #include "common/logging/log.h"
#include "urandom.h" #include "urandom_device.h"
namespace Core::Devices { namespace Core::Devices {
@ -16,22 +17,27 @@ int URandomDevice::ioctl(u64 cmd, Common::VaCtx* args) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 URandomDevice::write(const void* buf, size_t nbytes) { s64 URandomDevice::write(const void* buf, size_t nbytes) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
size_t URandomDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { size_t URandomDevice::writev(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
size_t URandomDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) { size_t URandomDevice::readv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 URandomDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) { s64 URandomDevice::preadv(const Libraries::Kernel::SceKernelIovec* iov, int iovcnt, u64 offset) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
s64 URandomDevice::lseek(s64 offset, int whence) { s64 URandomDevice::lseek(s64 offset, int whence) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
@ -39,8 +45,9 @@ s64 URandomDevice::lseek(s64 offset, int whence) {
s64 URandomDevice::read(void* buf, size_t nbytes) { s64 URandomDevice::read(void* buf, size_t nbytes) {
auto rbuf = static_cast<char*>(buf); auto rbuf = static_cast<char*>(buf);
for (size_t i = 0; i < nbytes; i++) for (size_t i = 0; i < nbytes; i++) {
rbuf[i] = std::rand() & 0xFF; rbuf[i] = std::rand() & 0xFF;
}
return nbytes; return nbytes;
} }
@ -68,4 +75,5 @@ s64 URandomDevice::pwrite(const void* buf, size_t nbytes, u64 offset) {
LOG_ERROR(Kernel_Pthread, "(STUBBED) called"); LOG_ERROR(Kernel_Pthread, "(STUBBED) called");
return 0; return 0;
} }
} // namespace Core::Devices } // namespace Core::Devices

View file

@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once
#include <memory> #include <memory>

View file

@ -233,7 +233,7 @@ void HandleTable::CreateStdHandles() {
std::shared_ptr<Devices::BaseDevice>{reinterpret_cast<Devices::BaseDevice*>(device)}; std::shared_ptr<Devices::BaseDevice>{reinterpret_cast<Devices::BaseDevice*>(device)};
}; };
// order matters // order matters
setup("/dev/stdin", new Devices::NopDevice(0)); // stdin setup("/dev/stdin", new Devices::Logger("stdin", false)); // stdin
setup("/dev/stdout", new Devices::Logger("stdout", false)); // stdout setup("/dev/stdout", new Devices::Logger("stdout", false)); // stdout
setup("/dev/stderr", new Devices::Logger("stderr", true)); // stderr setup("/dev/stderr", new Devices::Logger("stderr", true)); // stderr
} }

View file

@ -8,13 +8,13 @@
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/scope_exit.h" #include "common/scope_exit.h"
#include "common/singleton.h" #include "common/singleton.h"
#include "core/devices/deci_tty6.h" #include "core/devices/deci_tty6_device.h"
#include "core/devices/dev_console.h" #include "core/devices/console_device.h"
#include "core/devices/logger.h" #include "core/devices/logger.h"
#include "core/devices/nop_device.h" #include "core/devices/nop_device.h"
#include "core/devices/random.h" #include "core/devices/random_device.h"
#include "core/devices/srandom.h" #include "core/devices/srandom_device.h"
#include "core/devices/urandom.h" #include "core/devices/urandom_device.h"
#include "core/file_sys/fs.h" #include "core/file_sys/fs.h"
#include "core/libraries/kernel/file_system.h" #include "core/libraries/kernel/file_system.h"
#include "core/libraries/kernel/orbis_error.h" #include "core/libraries/kernel/orbis_error.h"
@ -270,13 +270,6 @@ size_t PS4_SYSV_ABI _readv(int d, const SceKernelIovec* iov, int iovcnt) {
} }
size_t PS4_SYSV_ABI _writev(int fd, const SceKernelIovec* iov, int iovcn) { size_t PS4_SYSV_ABI _writev(int fd, const SceKernelIovec* iov, int iovcn) {
if (fd == 1) {
size_t total_written = 0;
for (int i = 0; i < iovcn; i++) {
total_written += ::fwrite(iov[i].iov_base, 1, iov[i].iov_len, stdout);
}
return total_written;
}
auto* h = Common::Singleton<Core::FileSys::HandleTable>::Instance(); auto* h = Common::Singleton<Core::FileSys::HandleTable>::Instance();
auto* file = h->GetFile(fd); auto* file = h->GetFile(fd);
if (file == nullptr) { if (file == nullptr) {