mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-08-02 23:42:43 +00:00
Added GetModuleList
This commit is contained in:
parent
bad3d5a68e
commit
070b4a82b4
@ -1,6 +1,7 @@
|
|||||||
// 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 <algorithm>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
@ -398,6 +399,24 @@ int PS4_SYSV_ABI posix_getpagesize() {
|
|||||||
return 4096;
|
return 4096;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int PS4_SYSV_ABI sceKernelGetModuleList(Core::Module** pArray, size_t numArray, size_t* pActualNum) {
|
||||||
|
auto* linker = Common::Singleton<Core::Linker>::Instance();
|
||||||
|
int numModules = linker->GetNumberModules();
|
||||||
|
for (int i = 0; i < std::min(static_cast<int>(numArray), numModules); ++i)
|
||||||
|
{
|
||||||
|
auto m = linker->GetModule(i);
|
||||||
|
if (!m)
|
||||||
|
{
|
||||||
|
*pActualNum = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
pArray[i] = m;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ORBIS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
void LibKernel_Register(Core::Loader::SymbolsResolver* sym) {
|
void LibKernel_Register(Core::Loader::SymbolsResolver* sym) {
|
||||||
service_thread = std::jthread{KernelServiceThread};
|
service_thread = std::jthread{KernelServiceThread};
|
||||||
|
|
||||||
@ -443,6 +462,8 @@ void LibKernel_Register(Core::Loader::SymbolsResolver* sym) {
|
|||||||
LIB_FUNCTION("kBJzF8x4SyE", "libkernel", 1, "libkernel", 1, 1, sceKernelBatchMap2);
|
LIB_FUNCTION("kBJzF8x4SyE", "libkernel", 1, "libkernel", 1, 1, sceKernelBatchMap2);
|
||||||
LIB_FUNCTION("DGMG3JshrZU", "libkernel", 1, "libkernel", 1, 1, sceKernelSetVirtualRangeName);
|
LIB_FUNCTION("DGMG3JshrZU", "libkernel", 1, "libkernel", 1, 1, sceKernelSetVirtualRangeName);
|
||||||
|
|
||||||
|
LIB_FUNCTION("IuxnUuXk6Bg", "libkernel", 1, "libkernel", 1, 1, sceKernelGetModuleList);
|
||||||
|
|
||||||
// equeue
|
// equeue
|
||||||
LIB_FUNCTION("D0OdFMjp46I", "libkernel", 1, "libkernel", 1, 1, sceKernelCreateEqueue);
|
LIB_FUNCTION("D0OdFMjp46I", "libkernel", 1, "libkernel", 1, 1, sceKernelCreateEqueue);
|
||||||
LIB_FUNCTION("jpFjmgAC5AE", "libkernel", 1, "libkernel", 1, 1, sceKernelDeleteEqueue);
|
LIB_FUNCTION("jpFjmgAC5AE", "libkernel", 1, "libkernel", 1, 1, sceKernelDeleteEqueue);
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
#include "common/types.h"
|
#include "common/types.h"
|
||||||
|
#include "core/module.h"
|
||||||
|
|
||||||
namespace Core::Loader {
|
namespace Core::Loader {
|
||||||
class SymbolsResolver;
|
class SymbolsResolver;
|
||||||
@ -34,6 +35,7 @@ typedef struct {
|
|||||||
|
|
||||||
int* PS4_SYSV_ABI __Error();
|
int* PS4_SYSV_ABI __Error();
|
||||||
int PS4_SYSV_ABI sceKernelGetCompiledSdkVersion(int* ver);
|
int PS4_SYSV_ABI sceKernelGetCompiledSdkVersion(int* ver);
|
||||||
|
int PS4_SYSV_ABI sceKernelGetModuleList(Core::Module** pArray, size_t numArray, size_t* pActualNum);
|
||||||
|
|
||||||
void LibKernel_Register(Core::Loader::SymbolsResolver* sym);
|
void LibKernel_Register(Core::Loader::SymbolsResolver* sym);
|
||||||
|
|
||||||
|
@ -79,6 +79,10 @@ public:
|
|||||||
return m_modules.at(index).get();
|
return m_modules.at(index).get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int GetNumberModules() const {
|
||||||
|
return m_modules.size();
|
||||||
|
}
|
||||||
|
|
||||||
void RelocateAnyImports(Module* m) {
|
void RelocateAnyImports(Module* m) {
|
||||||
Relocate(m);
|
Relocate(m);
|
||||||
for (auto& module : m_modules) {
|
for (auto& module : m_modules) {
|
||||||
|
Loading…
Reference in New Issue
Block a user