diff --git a/CMakeLists.txt b/CMakeLists.txt index f84b6c84..068bc808 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,10 +43,10 @@ set(SYSTEMSERVICE_SOURCES src/Emulator/HLE/Libraries/LibSystemService/system_ser src/Emulator/HLE/Libraries/LibSystemService/system_service.h ) -set(FILESYSTEM_SOURCES src/Emulator/HLE/Libraries/LibKernel/FileSystem/file_system.cpp - src/Emulator/HLE/Libraries/LibKernel/FileSystem/file_system.h - src/Emulator/HLE/Libraries/LibKernel/FileSystem/posix_file_system.cpp - src/Emulator/HLE/Libraries/LibKernel/FileSystem/posix_file_system.h +set(FILESYSTEM_SOURCES "src/Core/hle/libraries/libkernel/file_system.cpp" + "src/Core/hle/libraries/libkernel/file_system.h" + + ) set(HOST_SOURCES src/Emulator/Host/controller.cpp diff --git a/src/Core/PS4/HLE/LibKernel.cpp b/src/Core/PS4/HLE/LibKernel.cpp index bbd1f148..7a752c65 100644 --- a/src/Core/PS4/HLE/LibKernel.cpp +++ b/src/Core/PS4/HLE/LibKernel.cpp @@ -11,8 +11,7 @@ #include "Kernel/event_queues.h" #include "Kernel/memory_management.h" #include "Libs.h" -#include "Emulator/HLE/Libraries/LibKernel/FileSystem/file_system.h" -#include "Emulator/HLE/Libraries/LibKernel/FileSystem/posix_file_system.h" +#include "Core/hle/libraries/libkernel/file_system.h" #include "Core/hle/libraries/libkernel/time_management.h" namespace HLE::Libs::LibKernel { @@ -42,10 +41,8 @@ void LibKernel_Register(SymbolsResolver* sym) { // misc LIB_FUNCTION("WslcK1FQcGI", "libkernel", 1, "libkernel", 1, 1, CPUManagement::sceKernelIsNeoMode); LIB_FUNCTION("Ou3iL1abvng", "libkernel", 1, "libkernel", 1, 1, stack_chk_fail); - // fs - LIB_FUNCTION("1G3lF1Gg1k8", "libkernel", 1, "libkernel", 1, 1, Emulator::HLE::Libraries::LibKernel::FileSystem::sceKernelOpen); - LIB_FUNCTION("wuCroIGjt2g", "libScePosix", 1, "libkernel", 1, 1, Emulator::HLE::Libraries::LibKernel::FileSystem::POSIX::open); - + + Core::Libraries::LibKernel::fileSystemSymbolsRegister(sym); Core::Libraries::LibKernel::timeSymbolsRegister(sym); } diff --git a/src/Core/hle/libraries/libkernel/file_system.cpp b/src/Core/hle/libraries/libkernel/file_system.cpp new file mode 100644 index 00000000..c6679b1d --- /dev/null +++ b/src/Core/hle/libraries/libkernel/file_system.cpp @@ -0,0 +1,29 @@ +#include "file_system.h" + +#include +#include +#include + +namespace Core::Libraries::LibKernel { +constexpr bool log_file_fs = true; // disable it to disable logging + +int PS4_SYSV_ABI sceKernelOpen(const char* path, int flags, u16 mode) { + LOG_INFO_IF(log_file_fs, "sceKernelOpen path = {} flags = {:#x} mode = {:#x}\n", path, flags, mode); + return 0; +} + +int PS4_SYSV_ABI open(const char* path, int flags, /* SceKernelMode*/ u16 mode) { + LOG_INFO_IF(log_file_fs, "posix open redirect to sceKernelOpen\n"); + int result = sceKernelOpen(path, flags, mode); + if (result < 0) { + BREAKPOINT(); // posix calls different only for their return values + } + return result; +} + +void fileSystemSymbolsRegister(SymbolsResolver* sym) { + LIB_FUNCTION("1G3lF1Gg1k8", "libkernel", 1, "libkernel", 1, 1, sceKernelOpen); + LIB_FUNCTION("wuCroIGjt2g", "libScePosix", 1, "libkernel", 1, 1, open); +} + +} // namespace Core::Libraries::LibKernel \ No newline at end of file diff --git a/src/Core/hle/libraries/libkernel/file_system.h b/src/Core/hle/libraries/libkernel/file_system.h new file mode 100644 index 00000000..549d2bd4 --- /dev/null +++ b/src/Core/hle/libraries/libkernel/file_system.h @@ -0,0 +1,13 @@ +#pragma once +#include +#include "Core/PS4/Loader/SymbolsResolver.h" + +namespace Core::Libraries::LibKernel { +int PS4_SYSV_ABI sceKernelOpen(const char *path, int flags, /* SceKernelMode*/ u16 mode); + +// posix file system +int PS4_SYSV_ABI open(const char *path, int flags, /* SceKernelMode*/ u16 mode); + + +void fileSystemSymbolsRegister(SymbolsResolver *sym); +} // namespace Core::Libraries::LibKernel \ No newline at end of file diff --git a/src/Emulator/HLE/Libraries/LibKernel/FileSystem/file_system.cpp b/src/Emulator/HLE/Libraries/LibKernel/FileSystem/file_system.cpp deleted file mode 100644 index cdf35595..00000000 --- a/src/Emulator/HLE/Libraries/LibKernel/FileSystem/file_system.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "file_system.h" -#include -#include - -namespace Emulator::HLE::Libraries::LibKernel::FileSystem { -constexpr bool log_file_fs = true; // disable it to disable logging - -int PS4_SYSV_ABI sceKernelOpen(const char* path, int flags, u16 mode) { - LOG_INFO_IF(log_file_fs, "sceKernelOpen path = {} flags = {} mode = {}\n", path, log_hex_full(flags), log_hex_full(mode)); - return 0; -} - -} // namespace Emulator::HLE::Libraries::LibKernel::FileSystem \ No newline at end of file diff --git a/src/Emulator/HLE/Libraries/LibKernel/FileSystem/file_system.h b/src/Emulator/HLE/Libraries/LibKernel/FileSystem/file_system.h deleted file mode 100644 index 98f090f0..00000000 --- a/src/Emulator/HLE/Libraries/LibKernel/FileSystem/file_system.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once -#include - -namespace Emulator::HLE::Libraries::LibKernel::FileSystem { -int PS4_SYSV_ABI sceKernelOpen(const char *path, int flags, /* SceKernelMode*/ u16 mode); - -} \ No newline at end of file diff --git a/src/Emulator/HLE/Libraries/LibKernel/FileSystem/posix_file_system.cpp b/src/Emulator/HLE/Libraries/LibKernel/FileSystem/posix_file_system.cpp deleted file mode 100644 index caa6fb43..00000000 --- a/src/Emulator/HLE/Libraries/LibKernel/FileSystem/posix_file_system.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "posix_file_system.h" - -#include - -#include "file_system.h" - -namespace Emulator::HLE::Libraries::LibKernel::FileSystem::POSIX { -int PS4_SYSV_ABI open(const char* path, int flags, /* SceKernelMode*/ u16 mode) { - int result = sceKernelOpen(path, flags, mode); - if (result < 0) { - BREAKPOINT(); // posix calls different only for their return values - } - return result; -} -} // namespace Emulator::HLE::Libraries::LibKernel::FileSystem::POSIX diff --git a/src/Emulator/HLE/Libraries/LibKernel/FileSystem/posix_file_system.h b/src/Emulator/HLE/Libraries/LibKernel/FileSystem/posix_file_system.h deleted file mode 100644 index cce1c6c0..00000000 --- a/src/Emulator/HLE/Libraries/LibKernel/FileSystem/posix_file_system.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once -#include "types.h" - -namespace Emulator::HLE::Libraries::LibKernel::FileSystem::POSIX { -int PS4_SYSV_ABI open(const char *path, int flags, /* SceKernelMode*/ u16 mode); -} \ No newline at end of file