From 5d5118f12fb59fe19f03ae0e92da46c45cc9db63 Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Thu, 26 Dec 2024 23:12:38 +0200 Subject: [PATCH] draft for kernel net functions --- CMakeLists.txt | 2 ++ src/core/libraries/kernel/kernel.cpp | 7 ++---- src/core/libraries/kernel/net.cpp | 25 ++++++++++++++++++++ src/core/libraries/kernel/net.h | 35 ++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 src/core/libraries/kernel/net.cpp create mode 100644 src/core/libraries/kernel/net.h diff --git a/CMakeLists.txt b/CMakeLists.txt index c0f675266..a2c47f016 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -249,6 +249,8 @@ set(KERNEL_LIB src/core/libraries/kernel/sync/mutex.cpp src/core/libraries/kernel/time.h src/core/libraries/kernel/orbis_error.h src/core/libraries/kernel/posix_error.h + src/core/libraries/kernel/net.cpp + src/core/libraries/kernel/net.h ) set(NETWORK_LIBS src/core/libraries/network/http.cpp diff --git a/src/core/libraries/kernel/kernel.cpp b/src/core/libraries/kernel/kernel.cpp index b05c96fad..b62b187aa 100644 --- a/src/core/libraries/kernel/kernel.cpp +++ b/src/core/libraries/kernel/kernel.cpp @@ -28,6 +28,7 @@ #include #endif #include +#include "net.h" namespace Libraries::Kernel { @@ -195,10 +196,6 @@ const char* PS4_SYSV_ABI sceKernelGetFsSandboxRandomWord() { return path; } -int PS4_SYSV_ABI posix_connect() { - return -1; -} - int PS4_SYSV_ABI _sigprocmask() { return ORBIS_OK; } @@ -218,11 +215,11 @@ void RegisterKernel(Core::Loader::SymbolsResolver* sym) { Libraries::Kernel::RegisterEventQueue(sym); Libraries::Kernel::RegisterProcess(sym); Libraries::Kernel::RegisterException(sym); + Libraries::Kernel::RegisterNet(sym); LIB_OBJ("f7uOxY9mM1U", "libkernel", 1, "libkernel", 1, 1, &g_stack_chk_guard); LIB_FUNCTION("PfccT7qURYE", "libkernel", 1, "libkernel", 1, 1, kernel_ioctl); LIB_FUNCTION("JGfTMBOdUJo", "libkernel", 1, "libkernel", 1, 1, sceKernelGetFsSandboxRandomWord); - LIB_FUNCTION("XVL8So3QJUk", "libkernel", 1, "libkernel", 1, 1, posix_connect); LIB_FUNCTION("6xVpy0Fdq+I", "libkernel", 1, "libkernel", 1, 1, _sigprocmask); LIB_FUNCTION("Xjoosiw+XPI", "libkernel", 1, "libkernel", 1, 1, sceKernelUuidCreate); LIB_FUNCTION("Ou3iL1abvng", "libkernel", 1, "libkernel", 1, 1, stack_chk_fail); diff --git a/src/core/libraries/kernel/net.cpp b/src/core/libraries/kernel/net.cpp new file mode 100644 index 000000000..05cceceac --- /dev/null +++ b/src/core/libraries/kernel/net.cpp @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include +#include "net.h" + +namespace Libraries::Kernel { +int PS4_SYSV_ABI posix_socket(int domain, int type, int protocol) {} +int PS4_SYSV_ABI posix_connect(int sockfd, const struct sockaddr* addr, socklen_t addrlen) {} +u32 PS4_SYSV_ABI posix_htonl(u32 hostlong) {} +u16 PS4_SYSV_ABI posix_htons(u16 hostshort) {} +int PS4_SYSV_ABI posix_bind(int sockfd, const struct sockaddr* addr, socklen_t addrlen) {} +int PS4_SYSV_ABI posix_listen(int sockfd, int backlog) {} +int PS4_SYSV_ABI posix_accept(int sockfd, struct sockaddr* addr, socklen_t* addrlen) {} + +void RegisterNet(Core::Loader::SymbolsResolver* sym) { + LIB_FUNCTION("XVL8So3QJUk", "libkernel", 1, "libkernel", 1, 1, posix_connect); + LIB_FUNCTION("TU-d9PfIHPM", "libkernel", 1, "libkernel", 1, 1, posix_socket); + LIB_FUNCTION("K1S8oc61xiM", "libkernel", 1, "libkernel", 1, 1, posix_htonl); + LIB_FUNCTION("jogUIsOV3-U", "libkernel", 1, "libkernel", 1, 1, posix_htons); + LIB_FUNCTION("KuOmgKoqCdY", "libkernel", 1, "libkernel", 1, 1, posix_bind); + LIB_FUNCTION("pxnCmagrtao", "libkernel", 1, "libkernel", 1, 1, posix_listen); + LIB_FUNCTION("3e+4Iv7IJ8U", "libkernel", 1, "libkernel", 1, 1, posix_accept); +} +} // namespace Libraries::Kernel \ No newline at end of file diff --git a/src/core/libraries/kernel/net.h b/src/core/libraries/kernel/net.h new file mode 100644 index 000000000..9a54f2509 --- /dev/null +++ b/src/core/libraries/kernel/net.h @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include +#include "common/types.h" + +#ifdef WIN32 +#include +#else +#include +#endif + +namespace Common { +class NativeClock; +} + +namespace Core::Loader { +class SymbolsResolver; +} + +namespace Libraries::Kernel { +int PS4_SYSV_ABI posix_socket(int domain, int type, int protocol); +int PS4_SYSV_ABI posix_connect(int sockfd, const struct sockaddr* addr, socklen_t addrlen); +u32 PS4_SYSV_ABI posix_htonl(u32 hostlong); +u16 PS4_SYSV_ABI posix_htons(u16 hostshort); +int PS4_SYSV_ABI posix_bind(int sockfd, const struct sockaddr* addr, socklen_t addrlen); +int PS4_SYSV_ABI posix_listen(int sockfd, int backlog); +int PS4_SYSV_ABI posix_accept(int sockfd, struct sockaddr* addr, socklen_t* addrlen); + +void RegisterNet(Core::Loader::SymbolsResolver* sym); + +} // namespace Libraries::Kernel