summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/kernel/kernel/modulemgr.h80
1 files changed, 78 insertions, 2 deletions
diff --git a/include/kernel/kernel/modulemgr.h b/include/kernel/kernel/modulemgr.h
index 2ecc204..b5e84bc 100644
--- a/include/kernel/kernel/modulemgr.h
+++ b/include/kernel/kernel/modulemgr.h
@@ -72,6 +72,51 @@ typedef struct
SceUInt unk_24;
} SceKernelFwInfo;
+typedef struct
+{
+ SceSize size; //!< sizeof(SceKernelLoadedModuleInfo)
+ SceUID modid;
+ uint32_t version;
+ uint32_t unkC;
+ uint32_t unk10;
+ uint32_t unk14;
+ uint32_t unk18;
+ uint32_t unk1C;
+ uint32_t unk20;
+ char module_name[28];
+ uint32_t unk40;
+ uint32_t unk44;
+ uint32_t unk48;
+ uint32_t unk4C;
+ uint32_t unk50;
+ uint32_t unk54;
+ uint32_t unk58;
+ uint32_t unk5C;
+ uint32_t unk60;
+ uint32_t unk64;
+ uint32_t unk68;
+ uint32_t unk6C;
+ uint32_t unk70;
+ uint32_t unk74;
+ uint32_t unk78;
+ uint32_t unk7C;
+ uint32_t unk80;
+ uint32_t unk84;
+} SceKernelLoadedModuleInfo;
+
+typedef struct
+{
+ SceSize size; //!< sizeof(SceKernelModuleInfo2)
+ SceUID modid1;
+ uint32_t unk1;
+ uint32_t unk2;
+ uint32_t unk3;
+ uint32_t unk4;
+ char module_name[256];
+ uint32_t unk5;
+ SceUID modid2;
+} SceKernelModuleInfo2;
+
int sceKernelGetModuleList(SceUID pid, int flags1, int flags2, SceUID *modids, size_t *num);
int sceKernelGetModuleInfo(SceUID pid, SceUID modid, SceKernelModuleInfo *info);
int sceKernelGetModuleInternal(SceUID modid, void **module);
@@ -96,7 +141,7 @@ int sceKernelStopUnloadModuleForPid(SceUID pid, SceUID modid, SceSize args, void
int sceKernelMountBootfs(const char *bootImagePath);
int sceKernelUmountBootfs(void);
-int sceKernelSearchModuleByName(const char* module_name, const char* path, int pid);
+int sceKernelSearchModuleByName(const char *module_name, const char *path, int pid);
/**
* @brief Get the main module for a given process.
@@ -105,9 +150,40 @@ int sceKernelSearchModuleByName(const char* module_name, const char* path, int p
*/
SceUID sceKernelGetProcessMainModule(SceUID pid);
+/**
+ * @par Example1: Acquire max to 10 module info
+ * @code
+ * SceKernelLoadedModuleInfo infolists[10];
+ * size_t num = 10;// Get max
+ * ret = sceKernelGetModuleList2(pid, infolists, &num);
+ * @endcode
+ *
+ * @param[in] pid - target pid
+ * @param[out] infolists - infolists output
+ * @param[in] num - Specify the maximum number of modinfolist to retrieve. If the function returns 0, it returns the number of modules loaded in the target pid in num
+ *
+ * @return 0 on success, < 0 on error.
+ */
+int sceKernelGetModuleList2(SceUID pid, SceKernelLoadedModuleInfo *infolists, size_t *num);
+
+/**
+ * @param[in] pid - target pid
+ * @param[in] modid - target modid
+ * @param[out] info - info output
+ * @param[in] unk1 - set 0x120
+ * @param[in] unk2 - set 0x120
+ *
+ * @return 0 on success, < 0 on error.
+ */
+int sceKernelGetModuleInfo2(SceUID pid, SceUID modid, SceKernelModuleInfo2 *info, int unk1, int unk2);
+
+int sceKernelGetModuleLibraryInfo(SceUID pid, SceUID modid, void *unk1, const void *unk2, int unk3);
+int sceKernelGetModuleUid(SceUID pid, SceUID modid, SceUID *modid_out, const void *unk1, int unk2);
+int sceKernelGetModuleUidList(SceUID pid, SceUID *modids, size_t *num);
+int sceKernelGetProcessMainModulePath(SceUID pid, char *path, int pathlen);
+
#ifdef __cplusplus
}
#endif
#endif /* _PSP2_KERNEL_MODULEMGR_H_ */
-