vitasdk
Documentation of the vitasdk
modulemgr.h
Go to the documentation of this file.
1
6#ifndef _PSP2KERN_KERNEL_MODULEMGR_H_
7#define _PSP2KERN_KERNEL_MODULEMGR_H_
8
11#include <psp2kern/types.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18typedef struct SceKernelModuleName {
19 char s[0x1C];
22
23typedef struct {
25 int perm;
26 void *vaddr;
27 uint32_t memsz;
28 union {
30 int unk_10;
31 };
34
35typedef struct {
38 uint32_t version;
40 union {
41 uint32_t unk10;
42 struct {
43 uint8_t module_type;
45 uint16_t module_flags;
46 };
47 };
48 void *unk14;
49 uint32_t unk18;
50 void *unk1C;
51 void *unk20;
52 char module_name[28];
53 uint32_t unk40;
54 uint32_t unk44;
55 uint32_t nid;
57 union {
58 struct {
59 SceKernelSegmentInfo2 SegmentInfo[1];
60 uint32_t addr[4];
61 } seg1;
62 struct {
63 SceKernelSegmentInfo2 SegmentInfo[2];
64 uint32_t addr[4];
65 } seg2;
66 struct {
67 SceKernelSegmentInfo2 SegmentInfo[3];
68 uint32_t addr[4];
69 } seg3;
70 struct {
71 SceKernelSegmentInfo2 SegmentInfo[4];
72 uint32_t addr[4];
73 } seg4;
74 };
77
80 void *entry; // function ptr. or vars?
83
97
103
118
124
132
140
141
150void ksceKernelRegisterSyscall(SceSize syscall_id, const void *func);
151
160
172int ksceKernelGetModuleList(SceUID pid, int flags1, int flags2, SceUID *modids, SceSize *num);
173
203
214
226int ksceKernelGetModuleInfoMinByAddr(SceUID pid, const void *module_addr, uint32_t *module_nid, const void **program_text_addr, SceKernelModuleName *module_name);
227
236int ksceKernelGetModuleCB(SceUID modid, void **info);
237
247int ksceKernelGetModuleCBByAddr(SceUID pid, const void *module_addr, void **info);
248
258
266SceUID ksceKernelSearchModuleByName(const char *module_name);
267
276
286SceUID ksceKernelLoadModule(const char *path, int flags, SceKernelLMOption *option);
287
300int ksceKernelStartModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status);
301
314SceUID ksceKernelLoadStartModule(const char *path, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status);
315
328int ksceKernelStopModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status);
329
340
353int ksceKernelStopUnloadModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status);
354
366
380int ksceKernelStartModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status);
381
395SceUID ksceKernelLoadStartModuleForPid(SceUID pid, const char *path, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status);
396
410int ksceKernelStopModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status);
411
423
437int ksceKernelStopUnloadModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status);
438
452SceUID ksceKernelLoadStartSharedModuleForPid(SceUID pid, const char *path, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status);
453
467int ksceKernelStopUnloadSharedModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status);
468
476int ksceKernelMountBootfs(const char *bootImagePath);
477
484
491
501int ksceKernelGetModulePath(SceUID modid, char *path, SceSize pathlen);
502
513
514
520int ksceKernelGetLibraryClientList(SceUID pid, SceUID library_id, SceUID *modids, SceSize *num, SceSize cpy_skip_num);
526int ksceKernelGetMetaDataForDebugger(SceUID pid, SceUID uModuleId, void **start, void **stop);
533int ksceKernelGetStubNidTableForDebugger(SceUID pid, SceUID stubid, void *a3, SceSize *num, SceSize cpy_skip_num);
536int ksceKernelLoadPtLoadSegForFwloader(const char *path, int e_phnum, void *buffer, SceSize bufsize, int zero_unk, SceSize *bytes_read);
540
541
542/* For backwards compatibility */
543
544#define ksceKernelGetModuleInternal ksceKernelGetModuleCB
545#define ksceKernelGetProcessMainModule ksceKernelGetModuleIdByPid
546
547
557int ksceKernelGetModuleInfoByAddr(const void *module_addr, SceKernelModuleInfo *info);
558
567int ksceKernelRegisterLibary(const void *libent);
568
578int ksceKernelReleaseLibary(const void *libent);
579
580#ifdef __cplusplus
581}
582#endif
583
584#endif /* _PSP2KERN_KERNEL_MODULEMGR_H_ */
#define VITASDK_BUILD_ASSERT_EQ(__size__, __name__)
Definition build_utils.h:13
void * buffer
Definition bt.h:6
int flags
Event flags.
Definition debug.h:3
SceUID pid
Definition debug.h:1
void * entry
Definition modulemgr.h:80
int ksceKernelGetExportedLibraryListInModule(SceUID pid, SceUID modid, SceUID *library_ids, SceSize *num)
SceUInt32 preload_disabled
Definition modulemgr.h:114
const char * title_id
TitleID (process name) of the app this shim applies to.
Definition modulemgr.h:134
int ksceKernelGetStubInfoForDebugger(SceUID pid, SceUID stubid, void *a3)
SceUID ksceKernelGetModuleIdByPid(SceUID pid)
Get the main module id for a given process.
SceSize size
sizeof(SceKernelSegmentInfo2) (0x14)
Definition modulemgr.h:24
SceNID libnid
Definition modulemgr.h:87
int data_0x110
Definition modulemgr.h:90
void * module_proc_param
Definition modulemgr.h:115
SceUInt32 unk_04
Always 0 ?
Definition modulemgr.h:135
SceUID ksceKernelLoadModule(const char *path, int flags, SceKernelLMOption *option)
load module (kernel only)
SceUID ksceKernelLoadStartModule(const char *path, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status)
load and start module (kernel only)
char thread_name[0x20]
Definition modulemgr.h:106
int ksceKernelGetLostLibraryInfo(SceUID pid, SceUID modid, SceNID libnid, SceKernelModuleImportNonlinkedInfo *info)
int ksceKernelGetModuleFingerprint(SceUID moduleId, SceUInt32 *pFingerprint)
int ksceKernelGetStubList(SceUID pid, SceUID *stub, SceSize *num)
SceNID replaced_function_nid
NID of the function that needs to be replaced.
Definition modulemgr.h:120
int ksceKernelGetModuleIsSharedByAddr(SceUID pid, void *addr)
SceKernelFunctionShimInfo * function_shims
Definition modulemgr.h:129
int ksceKernelGetModuleCBByAddr(SceUID pid, const void *module_addr, void **info)
Get module info by address (internal)
uint32_t nid
Definition modulemgr.h:55
void * unk14
Definition modulemgr.h:48
int ksceKernelStopModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status)
stop module (kernel only)
int perm
Definition modulemgr.h:25
int ksceKernelLoadPtLoadSegForFwloader(const char *path, int e_phnum, void *buffer, SceSize bufsize, int zero_unk, SceSize *bytes_read)
uint8_t module_type
Definition modulemgr.h:43
int ksceKernelUnloadModule(SceUID modid, int flags, SceKernelULMOption *option)
unload module (kernel only)
SceUInt32 sysver
Definition modulemgr.h:105
int self_type
Definition modulemgr.h:100
int ksceKernelGetLostLibraryListInModule(SceUID pid, SceUID modid, void *pList, SceSize *num)
int ksceKernelGetModuleInfoMinByAddr(SceUID pid, const void *module_addr, uint32_t *module_nid, const void **program_text_addr, SceKernelModuleName *module_name)
Get module info mini by module address.
uint32_t unk40
Definition modulemgr.h:53
SceSize size
Definition modulemgr.h:36
int ksceKernelGetModuleList(SceUID pid, int flags1, int flags2, SceUID *modids, SceSize *num)
Get module id list.
void ksceKernelRegisterModulesAfterBoot(void)
Setup kernel for modulemgr.
int ksceKernelGetProgramIdentificationInfo(const char *path, SceUInt64 *pAuthid, SceSelfAppInfo *pInfo)
uint32_t version
Definition modulemgr.h:38
char libname[0x100]
Definition modulemgr.h:88
void ksceKernelRegisterSyscall(SceSize syscall_id, const void *func)
Register syscall function.
int ksceKernelMountBootfs(const char *bootImagePath)
mount bootfs (load bootfs module)
SceUID ksceKernelSearchModuleByName(const char *module_name)
search kernel module by module name
SceUInt32 initial_thread_priority
Definition modulemgr.h:107
int ksceKernelReleaseLibary(const void *libent)
Unregisters an export library from a loaded kernel module and relinks modules whose imports are affec...
int data_0x10C
Definition modulemgr.h:89
char process_name[0x20]
Definition modulemgr.h:113
uint32_t unk44
Definition modulemgr.h:54
uint8_t reserved_0x11
Definition modulemgr.h:44
int ksceKernelGetImportedLibraryListInModule(SceUID pid, SceUID modid, SceUID *library_ids, SceSize *num)
SceNID libnid
Definition modulemgr.h:79
int ksceKernelUnloadModuleForPid(SceUID pid, SceUID modid, int flags, SceKernelULMOption *option)
unload module
uint16_t module_flags
Definition modulemgr.h:45
int ksceKernelRegisterLibary(const void *libent)
Registers an export library from a loaded kernel module.
int ksceKernelStopModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status)
stop module
void * vaddr
Definition modulemgr.h:26
SceSize alignment
Power-of-two segment alignment.
Definition modulemgr.h:29
int ksceKernelGetModuleInfoForDebugger(SceUID pid, SceKernelModuleListInfo *infolists, SceSize *num)
int ksceKernelGetLibraryExportInfoForDebugger(SceUID pid, SceUID library_id, SceKernelModuleExportEntry *list, SceSize *num, SceSize cpy_skip_num)
SceUInt32 unk_0x30
Definition modulemgr.h:110
SceSize size
Definition modulemgr.h:85
SceUID modid
Definition modulemgr.h:37
uint32_t module_version
Definition modulemgr.h:39
char s[0x1C]
Definition modulemgr.h:19
SceNID replacing_function_nid
NID of the function that will serve as a replacement - must probably come from same library as replac...
Definition modulemgr.h:121
int ksceKernelStopUnloadSharedModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status)
stop and unload module as shared module
int unk_0x50
Definition modulemgr.h:112
void ksceKernelFinalizeKbl(void)
SceUID ksceKernelGetModuleIdByAddrForDebugger(SceUID pid, const void *module_addr)
Get module id by module address.
int ksceKernelGetLibraryInfoForDebugger(SceUID pid, SceUID library_id, SceKernelModuleLibraryInfo *info)
Get library info.
int data_0x120
Definition modulemgr.h:94
int ksceKernelGetLostLibraryList(SceUID pid, void *a2, SceSize *num)
int ksceKernelStartModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status)
start module (kernel only)
SceKernelThreadOptParam threadOptParam
Definition modulemgr.h:111
int unk_10
Legacy name for alignment.
Definition modulemgr.h:30
uint32_t unk18
Definition modulemgr.h:49
int data_0x11C
Definition modulemgr.h:93
int ksceKernelGetStubNidTableForDebugger(SceUID pid, SceUID stubid, void *a3, SceSize *num, SceSize cpy_skip_num)
SceUInt32 function_shims_count
Size of the array pointed to by next field.
Definition modulemgr.h:128
SceUInt32 library_shims_count
Size of the array pointed to by next field.
Definition modulemgr.h:136
int ksceKernelStopUnloadModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status)
stop and unload module (kernel only)
int ksceKernelGetMetaDataForDebugger(SceUID pid, SceUID uModuleId, void **start, void **stop)
int ksceKernelGetModulePath(SceUID modid, char *path, SceSize pathlen)
Get the module path.
void * unk1C
Definition modulemgr.h:50
int ksceKernelGetLibEntCBListForSyslibtrace(void **ppList, SceSize *num)
int ksceKernelGetModuleInfoByAddr(const void *module_addr, SceKernelModuleInfo *info)
Gets information about the loaded kernel module containing an address.
int data_0x114
Definition modulemgr.h:91
int ksceKernelUmountBootfs(void)
unmount bootfs (unload bootfs module)
int ksceKernelStartModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status)
start module
SceSize initial_thread_stack_size
Definition modulemgr.h:108
uint32_t unk10
Legacy field containing the packed module type and flags.
Definition modulemgr.h:41
int data_0x118
Definition modulemgr.h:92
const char * library_name
Name of the library the shimmed functions come from (i.e.
Definition modulemgr.h:126
SceUInt32 unk_04
Always 0 ?
Definition modulemgr.h:127
uint32_t memsz
Definition modulemgr.h:27
int ksceKernelLoadPreloadingModules(SceUID pid, const SceLoadProcessParam *pParam, int flags)
int ksceKernelStartPreloadingModules(SceUID pid)
int ksceKernelGetModuleInfo(SceUID pid, SceUID modid, SceKernelModuleInfo *info)
Get module info.
SceUID modid
Definition modulemgr.h:86
SceKernelLibraryShimInfo * library_shims
Definition modulemgr.h:137
int ksceKernelStopUnloadModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelULMOption *option, int *status)
stop and unload module
int ksceKernelUnloadProcessModules(SceUID pid)
void * unk20
Definition modulemgr.h:51
int ksceKernelGetModuleCB(SceUID modid, void **info)
Get module info (internal)
int ksceKernelModuleUnloadMySelf(void)
SceUID ksceKernelLoadModuleForPid(SceUID pid, const char *path, int flags, SceKernelLMOption *option)
load module
SceUID ksceKernelLoadStartModuleForPid(SceUID pid, const char *path, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status)
load and start module
SceUID ksceKernelLoadProcessImage(SceUID pid, const char *path, int flags, SceSelfAuthInfo *auth_info, SceLoadProcessParam *param, SceKernelCompatibilityShimInfo *shim_info)
SceUInt32 unk_0x2C
Definition modulemgr.h:109
int ksceKernelGetLibraryClientList(SceUID pid, SceUID library_id, SceUID *modids, SceSize *num, SceSize cpy_skip_num)
SceUID ksceKernelLoadStartSharedModuleForPid(SceUID pid, const char *path, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status)
load and start module as shared module
int vendor_id
Definition modulemgr.h:99
void * ksceKernelGetModuleEntryPoint(SceUID modid)
int ksceKernelGetSystemSwVersion(SceKernelFwInfo *data)
Get fw info.
SceSize segments_num
Definition modulemgr.h:56
int ksceKernelGetLibraryDBFlags(SceUID pid, int *pFlags)
int ksceKernelGetLibraryList(SceUID pid, SceUID *library_ids, SceSize *num)
Definition modulemgr.h:133
Definition modulemgr.h:119
Definition modulemgr.h:120
Definition modulemgr.h:125
Definition modulemgr.h:78
Definition modulemgr.h:84
Information about a loaded module.
Definition modulemgr.h:97
Definition modulemgr.h:141
Definition modulemgr.h:35
Definition modulemgr.h:18
Definition modulemgr.h:23
Definition modulemgr.h:130
Definition modulemgr.h:125
Definition modulemgr.h:104
Definition modulemgr.h:98
Additional options used when creating threads.
Definition threadmgr.h:110
unsigned int SceSize
Definition types.h:56
int SceUID
UIDs are used to describe many different kernel objects.
Definition types.h:90
uint64_t SceUInt64
Definition types.h:51
unsigned int SceNID
Library/Function NID.
Definition types.h:92
uint32_t SceUInt32
Definition types.h:45
SELF authorization information returned by AuthMgr and stored by Processmgr.
Definition types.h:161