mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-04-21 20:14:45 +00:00
Added GetModuleList
This commit is contained in:
parent
bad3d5a68e
commit
070b4a82b4
3 changed files with 27 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include <algorithm>
|
||||
#include <chrono>
|
||||
#include <thread>
|
||||
|
||||
|
@ -398,6 +399,24 @@ int PS4_SYSV_ABI posix_getpagesize() {
|
|||
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) {
|
||||
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("DGMG3JshrZU", "libkernel", 1, "libkernel", 1, 1, sceKernelSetVirtualRangeName);
|
||||
|
||||
LIB_FUNCTION("IuxnUuXk6Bg", "libkernel", 1, "libkernel", 1, 1, sceKernelGetModuleList);
|
||||
|
||||
// equeue
|
||||
LIB_FUNCTION("D0OdFMjp46I", "libkernel", 1, "libkernel", 1, 1, sceKernelCreateEqueue);
|
||||
LIB_FUNCTION("jpFjmgAC5AE", "libkernel", 1, "libkernel", 1, 1, sceKernelDeleteEqueue);
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include <sys/types.h>
|
||||
|
||||
#include "common/types.h"
|
||||
#include "core/module.h"
|
||||
|
||||
namespace Core::Loader {
|
||||
class SymbolsResolver;
|
||||
|
@ -34,6 +35,7 @@ typedef struct {
|
|||
|
||||
int* PS4_SYSV_ABI __Error();
|
||||
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);
|
||||
|
||||
|
|
|
@ -79,6 +79,10 @@ public:
|
|||
return m_modules.at(index).get();
|
||||
}
|
||||
|
||||
int GetNumberModules() const {
|
||||
return m_modules.size();
|
||||
}
|
||||
|
||||
void RelocateAnyImports(Module* m) {
|
||||
Relocate(m);
|
||||
for (auto& module : m_modules) {
|
||||
|
|
Loading…
Add table
Reference in a new issue