SceProcessmgr: Difference between revisions
m (→sceKernelKillProcessForKernel: Add 3.65 NID) |
(→Types: Add process object type) |
||
Line 157: | Line 157: | ||
} SceLibkernelAddresses; | } SceLibkernelAddresses; | ||
typedef | typedef unsigned long long SceKernelSysClock; | ||
typedef struct _SceKernelCallbackListEntry { | |||
struct _SceKernelCallbackListEntry* next; | |||
SceUID callback_uid; | |||
} SceKernelCallbackListEntry; | |||
//Temporary name was SceProcessmgrInfoInternal | |||
typedef struct _SceProcessObj { //Size is 0x4E0 | |||
//This is SceObjectBase | |||
SceKernelObject* process_kobj; //Comes from scePUIDKernelCreateWithAttrForKernel | |||
uint32_t unk4; | |||
uint32_t unk8; | |||
void* breakpoints_ctx; //pointer to 0x60 bytes structure - only present if dipsw 0xE4 is set | |||
int unk10; | |||
SceUID process_lock_sema; //"SceKernelProcessmgrProcLock", semaphore created with attribute 0x8000, max count = init count = 1 | |||
SceUID process_event_flag; //"SceKernelProcessmgrProc", event flag with attribute ATTR_MULTI | 0x8000, initial pattern = 0x10000 - LSB is set near the end of CreateProcess | |||
SceUID event_lock_sema; //"SceKernelProcessEventLock", semaphore created with attribute 0x8000, max count = init count = 4 | |||
SceKernelSysClock some_time_20; | |||
int32_t unk28; //maybe unsigned | |||
int32_t unk2C; //maybe unsigned | |||
int unk30; | |||
int unk34; | |||
int unk38; | |||
unsigned unk3C; //Set to 0x20001 if 0x80000000 is set in SceKernelCreateProcessOpt.flags, else ANDed with 0xFFFFFF00 then ORed with 1 - if (unk3C & 0xFF), added process object added to a "to be destroyed" linked list to be cleaned up by a resident thread on process deletion, else process object destructor is called | |||
uint32_t process_type; //Value of the process_type argument passed to sceKernelCreateProcess | |||
uint32_t process_creation_flags; //Value of the opt->flags value passed to sceKernelCreateProcess (0 if NULL) | |||
SceKernelObject* entry_heap_obj; //Result of sceUIDtoObject(entry_heap_uid); | |||
SceUID entry_heap_uid; //Result of sceUIDCreateEntryHeapForKernel | |||
SceUID unk50; | |||
uint32_t affinity_mask; //Seems to be bit X -> core X | |||
uint32_t some_atomic_global_var_related_54; | |||
SceUID address_space_uid; //Result of sceKernelCreateAddressSpaceForKernel | |||
SceKernelObject* address_space_obj; //Result of sceGUIDGetObjectForDriver(address_space_uid) | |||
} | ScePID process_id; //Result of scePUIDKernelCreateWithAttrForKernel(SceUIDProcessClass, ...) | ||
ScePID parent_process_id; //PID of caller to sceKernelCreateProcess, can be overridden in SceKernelCreateProcessOpt | |||
SceUID main_thread_uid; //UID of the first thread created in process | |||
SceUID unk70; | |||
void* partition_budget_thing; //Pointer to 0x74 structure related to budgets and partitions - depends on process type | |||
SceUID partition_budget_thing_uid; //Comes from a field in struct above | |||
int32_t unk7C; //maybe unsigned | |||
SceUID unique_heap_uid; //"unique: %s", variable size, type SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW_10C0D006 | |||
SceUID kpls_heap_uid; //"kpls: %s", 0x40000 size, allocated in kpls memblock | |||
SceUID CDialog_heap_uid; //"CDialog: %s", 0x1000 size, type SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW_CDIALOG | |||
SceUID tool_heap_uid; //"tool: %s", 0xF000/0x7F000 size, type SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_RW, only created if dipsw 0xD2 is enabled | |||
SceUID kpls_memblock_uid; //"kpls: %s", 0x40000 size, type SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW | |||
int32_t unk94; //maybe unsigned | |||
int32_t unk98; //maybe unsigned - set to 0x7F | |||
SceKernelModuleProcInfo_t* proc_module_info; | |||
int32_t unkA0; //maybe unsigned | |||
int8_t[0x10] random_data; //Filled using sceMt19937GlobalUIntInRangeForDriver, then SceKernelUtilsForDriver_B55C69B7 (same NID on 3.60 and 3.65) called on it | |||
unsigned unkA4; | |||
SceSelfAuthInfo self_auth_info; //klicensee is set to 0 unless specified in SceKernelCreateProcessOpt (in which case .Secret.SharedSecret3_0 is set to 0x10) - passed to sceKernelLoadProcessImageForKernel | |||
SceLoadProcessParam load_process_param; | |||
int32_t unk1E4; //maybe unsigned | |||
int32_t unk1E8; //maybe unsigned | |||
int32_t unk1EC; //maybe unsigned | |||
int32_t unk1F0; //maybe unsigned | |||
int32_t unk1F4; //maybe unsigned | |||
int32_t unk1F8; //maybe unsigned | |||
int32_t unk1FC; //maybe unsigned | |||
int unk200; | |||
int32_t unk204; //maybe unsigned | |||
void* unk208[0x20]; //[3] (unk214) is "display_info" (size maybe 0x1D0-0x1D8), [4] (unk218) size may be 0x50-0x58, [23] (unk264) size may be 0x24-0x28 | |||
void* bkpt_ctx_field58; //Pointer to breakpoints_ctx->unk58 | |||
int unk28C; | |||
int unk290; | |||
int32_t unk294; //maybe unsigned | |||
int32_t unk298; //maybe unsigned | |||
int32_t unk29C; //maybe unsigned | |||
int32_t unk2A0; //maybe unsigned | |||
int32_t unk2A4; //maybe unsigned | |||
void* destruction_ll_next; //pointer to next entry in "to be destroyed" process list? | |||
void* destruction_ll_prev; //pointer to previous entry in "to be destroyed" process list? | |||
int32_t unk2AC; //maybe unsigned | |||
int cpu_intr; //Mutex for sceKernelCpuSuspendIntr - should be at 0x2AC instead of 0x2B0? | |||
int32_t unk2B4; //maybe unsigned | |||
int32_t unk2BC; //maybe unsigned | |||
uint32_t __stack_chk_guard; //Filled using sceMt19937GlobalUIntInRangeForDriver | |||
SceKernelCallbackListEntry* process_delete_cb; //On object deletion, all callbacks in list are called - may be called at other moments | |||
int unk2CC; //4-byte sized | |||
int8_t unk2D1; //maybe unsigned | |||
int8_t unk2D2; //maybe unsigned | |||
int8_t unk2D3; //maybe unsigned | |||
int8_t unk2D4; //maybe unsigned | |||
int8_t unk2D5; //maybe unsigned | |||
int8_t unk2D6; //maybe unsigned | |||
int8_t unk2D7; //maybe unsigned | |||
int32_t unk2D8; //maybe unsigned | |||
int32_t unk2DC; //maybe unsigned | |||
int32_t unk2E0; //maybe unsigned | |||
int32_t unk2E4; //maybe unsigned | |||
int8_t unk2E8; //maybe unsigned | |||
int8_t unk2E9; //maybe unsigned | |||
int8_t unk2EA; //maybe unsigned | |||
int8_t unk2EB; //maybe unsigned | |||
int8_t unk2EC; //maybe unsigned | |||
int8_t unk2ED; //maybe unsigned | |||
int8_t unk2EE; //maybe unsigned | |||
int8_t unk2EF; //maybe unsigned | |||
int8_t unk2F0[0x40]; //memset to 0 | |||
SceUID unk330; | |||
SceUID unk334; | |||
SceUID unk338; | |||
int32_t unk33C; //maybe unsigned or SceUID | |||
int32_t unk340; //maybe unsigned or SceUID | |||
int32_t unk344; //maybe unsigned or SceUID | |||
int32_t unk348; //maybe unsigned or SceUID | |||
int32_t unk34C; //maybe unsigned or SceUID | |||
SceUID unk350; | |||
int32_t unk354; //maybe unsigned | |||
int32_t unk358; //maybe unsigned | |||
int32_t unk35C; //maybe unsigned | |||
int32_t unk360; //maybe unsigned | |||
int32_t unk364; //maybe unsigned | |||
int32_t unk368; //maybe unsigned | |||
int32_t unk36C; //maybe unsigned | |||
int32_t unk370; //maybe unsigned | |||
int32_t unk374; //maybe unsigned | |||
int32_t unk378; //maybe unsigned | |||
int32_t unk37C; //maybe unsigned | |||
int32_t unk380; //maybe unsigned | |||
int32_t unk384; //maybe unsigned | |||
int32_t unk388; //maybe unsigned | |||
int32_t unk38C; //maybe unsigned | |||
int32_t unk390; //maybe unsigned | |||
int32_t unk394; //maybe unsigned | |||
int32_t unk398; //maybe unsigned | |||
int32_t unk39C; //maybe unsigned | |||
int32_t unk3A0; //maybe unsigned | |||
int32_t unk3A4; //maybe unsigned | |||
int32_t unk3A8; //maybe unsigned | |||
int32_t unk3AC; //maybe unsigned | |||
int32_t unk3B0; //maybe unsigned | |||
int32_t unk3B4; //maybe unsigned | |||
int32_t unk3B8; //maybe unsigned | |||
int32_t unk3BC; //maybe unsigned | |||
int32_t unk3C0; //maybe unsigned | |||
int32_t unk3C4; //maybe unsigned | |||
int32_t unk3C8; //maybe unsigned | |||
int32_t unk3CC; //maybe unsigned | |||
int32_t unk3D0; //maybe unsigned | |||
int32_t unk3D4; //maybe unsigned | |||
int32_t unk3D8; //maybe unsigned | |||
int32_t unk3DC; //maybe unsigned | |||
int32_t unk3E0; //maybe unsigned | |||
int32_t unk3E4; //maybe unsigned | |||
int32_t unk3E8; //maybe unsigned | |||
int32_t unk3EC; //maybe unsigned | |||
int32_t unk3F0; //maybe unsigned | |||
int32_t unk3F4; //maybe unsigned | |||
int32_t unk3F8; //maybe unsigned | |||
SceUID unk3FC; | |||
int32_t unk400; //maybe unsigned | |||
uint32_t unk404; //From SceKernelCreateProcessOpt, ((uint16_t)opt.unk3C << 16) | ((uint16_t)opt.unk38) | |||
int unk408; | |||
int16_t unk40C; //maybe unsigned | |||
int16_t unk40E; //maybe unsigned | |||
uint32_t main_thread_fallback_affinity_mask; //Used if LoadProcessParam affinity mask is 0 - if this is also 0 then mask is taken from budget thing - init to 0x962E8D55 in constructor | |||
void* pPPM0_area; | |||
void* pPPM0_or_PPM1_area; | |||
uint32_t unk41C; //related to dipsw 0xD2? | |||
uint32_t unk420; | |||
uint32_t unk424; | |||
uint32_t max_fh_count; //maximum number of file handles the process can have open | |||
uint32_t max_dir_open_level; //maximum depth a file can be opened at? | |||
int32_t unk430; //maybe unsigned | |||
int32_t unk434; //maybe unsigned | |||
struct _SceProcessObjListEntry { | |||
struct _SceProcessObjListEntry* next; | |||
struct _SceProcessObjListEntry* prev; | |||
struct _SceProcessObjListEntryStruct { | |||
int32_t unk0; | |||
SceUID unk4; | |||
int32_t unk8; | |||
int32_t unkC; | |||
} list_entry_struct[8]; | |||
char process_name[0x20]; | |||
} list_entry; | |||
} SceProcessObj; | |||
</source> | </source> | ||
Revision as of 16:45, 1 September 2021
Process Manager
Module
Version | World | Privilege |
---|---|---|
1.69-3.60 | Non-secure | Kernel |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
1.69-3.73 | SceProcessmgr | Non-secure | User | 0x2DD91812 |
1.69-3.73 | SceProcessmgrForDriver | Non-secure | Kernel | 0x746EC971 |
1.69-3.61 | SceProcessmgrForKernel | Non-secure | Kernel | 0x7A69DE86 |
3.63-3.73 | SceProcessmgrForKernel | Non-secure | Kernel | 0xEB1F8EF7 |
Types
typedef SceUInt32 SceKernelProcessType; #define SCE_KERNEL_PROCESS_TYPE_FULL_GAME 0x01010001 #define SCE_KERNEL_PROCESS_TYPE_MINI_APPLICATION 0x02010001 #define SCE_KERNEL_PROCESS_TYPE_SHELL 0x04020102 #define SCE_KERNEL_PROCESS_TYPE_KERNEL 0x10030103 #define SCE_KERNEL_PROCESS_CURRENT_PROCESS_BUDGET 0 typedef SceUInt32 SceKernelBudgetType; #define SCE_KERNEL_BUDGET_TYPE_FULL_GAME 0x1000000 #define SCE_KERNEL_BUDGET_TYPE_SHELL 0x4000000 #define SCE_KERNEL_BUDGET_TYPE_KERNEL 0x5000000 #define SCE_KERNEL_CPU_AFFINITY_FLAG_SYSTEM_CORE 0 #define SCE_KERNEL_CPU_AFFINITY_FLAG_ALL_USER 8 typedef struct SceKernelProcessInfo { // size is 0x24 or 0x4C on FW 0.931, 0xE8 on FW 3.60 SceSize size; //!< size of this struct, make sure it's 0xE8 SceUID pid; //!< our process ID int unk08; int unk0C; int unk10; // maybe process state. susspend:0x11. SceUID ppid; //!< parent process ID SceUID unk18; int unk1C; // ex:7 int unk20; // ex:7F SceUID modid; void *unk28; // entry point? int unk2C; // ex:1 char name[0x1C]; int unk4C; void *unk50; void *unk54; SceUID unk58; int unk5C; // ex:-1 int unk60; int unk64; // ex:0x32 int unk68; int unk6C; int unk70; void *unk74[4 * 5 + 1]; int unk78[8]; } SceKernelProcessInfo; typedef struct SceKernelProcessModuleInfo { // size is 0x24 SceUID pid; SceModuleLibraryExportInfo_t *lib_export_info; SceUID data_0x08; // uid? SceKernelModuleImportNonlinkedInfo_t *import_nonlinked_list; // allocated by sceKernelAlloc SceKernelModuleInfoObjBase_t *module_list; SceUID proc_main_module_id; uint16_t proc_module_count; uint16_t inhibit_state; void *data_0x1C; int cpu_addr; } SceKernelProcessModuleInfo; typedef struct SceKernelBudgetInfo { // size is 0x480 on FW 3.60 SceSize size; // Size of this structure SceUID pid; char name[0x20]; SceUInt32 num; // 0x28 char name2[0x20]; // 0x2C char some_struct_B0[0xB0]; // 0x4C char unk[0x35C]; } SceKernelBudgetInfo; typedef struct SceKernelProcessOpt { // size is 0x14 or 0x1C on FW 0.931, 0x20 on FW 0.990, 0x40 on FW 3.60 SceSize size; // Size of this structure SceUInt32 unk_4; SceUInt32 cpuAffinityMask; SceUInt32 initPriority; SceSize stackSize; SceUInt32 unk_14; SceUInt32 budgetId; SceUInt32 unk_1C; } SceKernelProcessOpt; typedef struct SceKernelProcessOpt_360 { // size is 0x40 SceSize size; // Size of this structure uint32_t some_size; int unk_0x08; int unk_0x0C; int unk_0x10; int unk_0x14; SceUID unk_0x18; SceUID ppid; int unk_0x20; int unk_0x24; const void *klicense; SceSize file_open_max_num; SceSize dir_open_max_level; int unk_0x34; int unk_0x38; int unk_0x3C; // some count } SceKernelProcessOpt_360; typedef struct SceKernelBootParam { // size is up to 0x100 SceUInt32 unk_0; // ex: 0, 1 SceUInt32 cpuAffinityMask; // ex: 0, 2, 8 SceUInt32 initPriority; // ex: 0 SceSize stackSize; // ex: 0x4000, 0x8000 SceUInt32 unk_10; // ex: 0, 0x12 SceUInt32 budgetId; // ex: 0, 2, 3, 0xC SceUInt32 unk_1C; } SceKernelBootParam; typedef struct SceKernelProcessParam { char[4] magic; // "PSP2" SceUInt32 unk_4 SceUInt32 unk_8 SceUInt32 unk_C; // return value of SceLibKernel_9F793F84 and used by SceShell for PSN auth } SceKernelBootParam; typedef struct SceLibkernelAddresses { // size is 0x1C on FW 3.60 SceSize size; // Size of this structure int (* sceKernelExitThread)(int a1); int (* sceKernelExitDeleteThread)(int a1); int (* _sceKernelExitCallback)(); void *unk_cb_0x10; int *pStackGuard1; int *pStackGuard2; } SceLibkernelAddresses; typedef unsigned long long SceKernelSysClock; typedef struct _SceKernelCallbackListEntry { struct _SceKernelCallbackListEntry* next; SceUID callback_uid; } SceKernelCallbackListEntry; //Temporary name was SceProcessmgrInfoInternal typedef struct _SceProcessObj { //Size is 0x4E0 //This is SceObjectBase SceKernelObject* process_kobj; //Comes from scePUIDKernelCreateWithAttrForKernel uint32_t unk4; uint32_t unk8; void* breakpoints_ctx; //pointer to 0x60 bytes structure - only present if dipsw 0xE4 is set int unk10; SceUID process_lock_sema; //"SceKernelProcessmgrProcLock", semaphore created with attribute 0x8000, max count = init count = 1 SceUID process_event_flag; //"SceKernelProcessmgrProc", event flag with attribute ATTR_MULTI | 0x8000, initial pattern = 0x10000 - LSB is set near the end of CreateProcess SceUID event_lock_sema; //"SceKernelProcessEventLock", semaphore created with attribute 0x8000, max count = init count = 4 SceKernelSysClock some_time_20; int32_t unk28; //maybe unsigned int32_t unk2C; //maybe unsigned int unk30; int unk34; int unk38; unsigned unk3C; //Set to 0x20001 if 0x80000000 is set in SceKernelCreateProcessOpt.flags, else ANDed with 0xFFFFFF00 then ORed with 1 - if (unk3C & 0xFF), added process object added to a "to be destroyed" linked list to be cleaned up by a resident thread on process deletion, else process object destructor is called uint32_t process_type; //Value of the process_type argument passed to sceKernelCreateProcess uint32_t process_creation_flags; //Value of the opt->flags value passed to sceKernelCreateProcess (0 if NULL) SceKernelObject* entry_heap_obj; //Result of sceUIDtoObject(entry_heap_uid); SceUID entry_heap_uid; //Result of sceUIDCreateEntryHeapForKernel SceUID unk50; uint32_t affinity_mask; //Seems to be bit X -> core X uint32_t some_atomic_global_var_related_54; SceUID address_space_uid; //Result of sceKernelCreateAddressSpaceForKernel SceKernelObject* address_space_obj; //Result of sceGUIDGetObjectForDriver(address_space_uid) ScePID process_id; //Result of scePUIDKernelCreateWithAttrForKernel(SceUIDProcessClass, ...) ScePID parent_process_id; //PID of caller to sceKernelCreateProcess, can be overridden in SceKernelCreateProcessOpt SceUID main_thread_uid; //UID of the first thread created in process SceUID unk70; void* partition_budget_thing; //Pointer to 0x74 structure related to budgets and partitions - depends on process type SceUID partition_budget_thing_uid; //Comes from a field in struct above int32_t unk7C; //maybe unsigned SceUID unique_heap_uid; //"unique: %s", variable size, type SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW_10C0D006 SceUID kpls_heap_uid; //"kpls: %s", 0x40000 size, allocated in kpls memblock SceUID CDialog_heap_uid; //"CDialog: %s", 0x1000 size, type SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW_CDIALOG SceUID tool_heap_uid; //"tool: %s", 0xF000/0x7F000 size, type SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_RW, only created if dipsw 0xD2 is enabled SceUID kpls_memblock_uid; //"kpls: %s", 0x40000 size, type SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW int32_t unk94; //maybe unsigned int32_t unk98; //maybe unsigned - set to 0x7F SceKernelModuleProcInfo_t* proc_module_info; int32_t unkA0; //maybe unsigned int8_t[0x10] random_data; //Filled using sceMt19937GlobalUIntInRangeForDriver, then SceKernelUtilsForDriver_B55C69B7 (same NID on 3.60 and 3.65) called on it unsigned unkA4; SceSelfAuthInfo self_auth_info; //klicensee is set to 0 unless specified in SceKernelCreateProcessOpt (in which case .Secret.SharedSecret3_0 is set to 0x10) - passed to sceKernelLoadProcessImageForKernel SceLoadProcessParam load_process_param; int32_t unk1E4; //maybe unsigned int32_t unk1E8; //maybe unsigned int32_t unk1EC; //maybe unsigned int32_t unk1F0; //maybe unsigned int32_t unk1F4; //maybe unsigned int32_t unk1F8; //maybe unsigned int32_t unk1FC; //maybe unsigned int unk200; int32_t unk204; //maybe unsigned void* unk208[0x20]; //[3] (unk214) is "display_info" (size maybe 0x1D0-0x1D8), [4] (unk218) size may be 0x50-0x58, [23] (unk264) size may be 0x24-0x28 void* bkpt_ctx_field58; //Pointer to breakpoints_ctx->unk58 int unk28C; int unk290; int32_t unk294; //maybe unsigned int32_t unk298; //maybe unsigned int32_t unk29C; //maybe unsigned int32_t unk2A0; //maybe unsigned int32_t unk2A4; //maybe unsigned void* destruction_ll_next; //pointer to next entry in "to be destroyed" process list? void* destruction_ll_prev; //pointer to previous entry in "to be destroyed" process list? int32_t unk2AC; //maybe unsigned int cpu_intr; //Mutex for sceKernelCpuSuspendIntr - should be at 0x2AC instead of 0x2B0? int32_t unk2B4; //maybe unsigned int32_t unk2BC; //maybe unsigned uint32_t __stack_chk_guard; //Filled using sceMt19937GlobalUIntInRangeForDriver SceKernelCallbackListEntry* process_delete_cb; //On object deletion, all callbacks in list are called - may be called at other moments int unk2CC; //4-byte sized int8_t unk2D1; //maybe unsigned int8_t unk2D2; //maybe unsigned int8_t unk2D3; //maybe unsigned int8_t unk2D4; //maybe unsigned int8_t unk2D5; //maybe unsigned int8_t unk2D6; //maybe unsigned int8_t unk2D7; //maybe unsigned int32_t unk2D8; //maybe unsigned int32_t unk2DC; //maybe unsigned int32_t unk2E0; //maybe unsigned int32_t unk2E4; //maybe unsigned int8_t unk2E8; //maybe unsigned int8_t unk2E9; //maybe unsigned int8_t unk2EA; //maybe unsigned int8_t unk2EB; //maybe unsigned int8_t unk2EC; //maybe unsigned int8_t unk2ED; //maybe unsigned int8_t unk2EE; //maybe unsigned int8_t unk2EF; //maybe unsigned int8_t unk2F0[0x40]; //memset to 0 SceUID unk330; SceUID unk334; SceUID unk338; int32_t unk33C; //maybe unsigned or SceUID int32_t unk340; //maybe unsigned or SceUID int32_t unk344; //maybe unsigned or SceUID int32_t unk348; //maybe unsigned or SceUID int32_t unk34C; //maybe unsigned or SceUID SceUID unk350; int32_t unk354; //maybe unsigned int32_t unk358; //maybe unsigned int32_t unk35C; //maybe unsigned int32_t unk360; //maybe unsigned int32_t unk364; //maybe unsigned int32_t unk368; //maybe unsigned int32_t unk36C; //maybe unsigned int32_t unk370; //maybe unsigned int32_t unk374; //maybe unsigned int32_t unk378; //maybe unsigned int32_t unk37C; //maybe unsigned int32_t unk380; //maybe unsigned int32_t unk384; //maybe unsigned int32_t unk388; //maybe unsigned int32_t unk38C; //maybe unsigned int32_t unk390; //maybe unsigned int32_t unk394; //maybe unsigned int32_t unk398; //maybe unsigned int32_t unk39C; //maybe unsigned int32_t unk3A0; //maybe unsigned int32_t unk3A4; //maybe unsigned int32_t unk3A8; //maybe unsigned int32_t unk3AC; //maybe unsigned int32_t unk3B0; //maybe unsigned int32_t unk3B4; //maybe unsigned int32_t unk3B8; //maybe unsigned int32_t unk3BC; //maybe unsigned int32_t unk3C0; //maybe unsigned int32_t unk3C4; //maybe unsigned int32_t unk3C8; //maybe unsigned int32_t unk3CC; //maybe unsigned int32_t unk3D0; //maybe unsigned int32_t unk3D4; //maybe unsigned int32_t unk3D8; //maybe unsigned int32_t unk3DC; //maybe unsigned int32_t unk3E0; //maybe unsigned int32_t unk3E4; //maybe unsigned int32_t unk3E8; //maybe unsigned int32_t unk3EC; //maybe unsigned int32_t unk3F0; //maybe unsigned int32_t unk3F4; //maybe unsigned int32_t unk3F8; //maybe unsigned SceUID unk3FC; int32_t unk400; //maybe unsigned uint32_t unk404; //From SceKernelCreateProcessOpt, ((uint16_t)opt.unk3C << 16) | ((uint16_t)opt.unk38) int unk408; int16_t unk40C; //maybe unsigned int16_t unk40E; //maybe unsigned uint32_t main_thread_fallback_affinity_mask; //Used if LoadProcessParam affinity mask is 0 - if this is also 0 then mask is taken from budget thing - init to 0x962E8D55 in constructor void* pPPM0_area; void* pPPM0_or_PPM1_area; uint32_t unk41C; //related to dipsw 0xD2? uint32_t unk420; uint32_t unk424; uint32_t max_fh_count; //maximum number of file handles the process can have open uint32_t max_dir_open_level; //maximum depth a file can be opened at? int32_t unk430; //maybe unsigned int32_t unk434; //maybe unsigned struct _SceProcessObjListEntry { struct _SceProcessObjListEntry* next; struct _SceProcessObjListEntry* prev; struct _SceProcessObjListEntryStruct { int32_t unk0; SceUID unk4; int32_t unk8; int32_t unkC; } list_entry_struct[8]; char process_name[0x20]; } list_entry; } SceProcessObj;
SceProcessmgr
sceKernelLibcTime
Version | NID |
---|---|
0.990-3.60 | 0x0039BE45 |
int sceKernelLibcTime(SceUInt32 *pTime);
sceKernelGetProcessTitleId
Version | NID |
---|---|
0.990 | not present |
1.69-3.60 | 0x03A48771 |
sceKernelGetProcessName
Version | NID |
---|---|
0.990 | not present |
1.69-3.60 | 0x10C52C95 |
sceKernelIsCDialogAvailable
Version | NID |
---|---|
0.990 | not present |
1.69-3.60 | 0x143BC4D6 |
int sceKernelIsCDialogAvailable(void)
sceKernelPowerTick
Version | NID |
---|---|
0.990-3.60 | 0x2252890C |
int sceKernelPowerTick(SceKernelPowerTickType type);
sceKernelGetProcessParam
Version | NID |
---|---|
0.990-3.60 | 0x2BE3E066 |
SceKernelProcessParam *sceKernelGetProcessParam(void);
_sceKernelGetTimer5Reg
Version | NID |
---|---|
0.990 | not present |
1.69-3.60 | 0x2F73D72F |
sceKernelPowerUnlock
Version | NID |
---|---|
0.990-3.60 | 0x466C0CBD |
int sceKernelPowerUnlock(SceKernelPowerTickType type);
sceKernelLibcGettimeofday
Version | NID |
---|---|
0.990-3.60 | 0x4B879059 |
int sceKernelLibcGettimeofday(SceUInt64 *a1, SceUInt64 *a2);
_sceKernelRegisterExitAddress
Version | NID |
---|---|
0.931-0.990 | 0x0278DFB7 |
3.60 | not present |
Used in SceLibKernel module_start.
int _sceKernelRegisterExitAddress(SceUIntUAddr psceKernelExitThread, SceUIntUAddr psceKernelExitDeleteThread, SceUIntUAddr psceKernelExitCallback);
_sceKernelRegisterLibkernelAddresses
Version | NID |
---|---|
0.990 | not present |
1.69-3.60 | 0x56C2E8FF |
int _sceKernelRegisterLibkernelAddresses(SceLibkernelAddresses *pAddresses);
sceKernelRegisterProcessTerminationCallback
Version | NID |
---|---|
0.990-3.60 | 0x5EC77870 |
int sceKernelRegisterProcessTerminationCallback(SceUID pid, void *cb);
sceKernelUnregisterProcessTerminationCallback
Version | NID |
---|---|
0.990-3.60 | 0x973A4527 |
int sceKernelUnregisterProcessTerminationCallback(SceUID pid, void *cb);
sceKernelPowerLock
Version | NID |
---|---|
0.990-3.60 | 0x7AA73378 |
int sceKernelPowerLock(SceKernelPowerTickType type);
sceKernelGetProcessTimeWideCore
Version | NID |
---|---|
0.990-3.60 | 0x89DA0967 |
SceUInt64 sceKernelGetProcessTimeWideCore(void);
sceKernelLibcClock
Version | NID |
---|---|
0.990-3.60 | 0x9E45DA09 |
SceUInt64 sceKernelLibcClock(void);
_sceKernelExitProcessForUser
Version | NID |
---|---|
0.990-3.60 | 0xC053DC6B |
int _sceKernelExitProcessForUser(int status);
sceKernelGetStdin
Version | NID |
---|---|
0.931-3.60 | 0xC1727F59 |
Returns the fd of the current process stdin.
SceUID sceKernelGetStdin(void);
sceKernelGetCurrentProcess
Version | NID |
---|---|
1.69-3.60 | 0xCD248267 |
Wrapper to sceKernelGetProcessIdForDriver.
Returns the process ID.
SceUID sceKernelGetCurrentProcess(void);
sceKernelIsGameBudget
Version | NID |
---|---|
0.990-3.60 | 0xCE0F02F0 |
SceBool sceKernelIsGameBudget(void);
sceKernelGetProcessTimeCore
Version | NID |
---|---|
0.990-3.60 | 0xD37A8437 |
int sceKernelGetProcessTimeCore(SceUInt64 *pTime);
sceKernelGetStdout
Version | NID |
---|---|
0.931-3.60 | 0xE5AA625C |
Returns the fd of the current process stdout.
SceUID sceKernelGetStdout(void);
sceKernelGetRemoteProcessTime
Version | NID |
---|---|
0.990-3.60 | 0xE6E9FCA3 |
int sceKernelGetRemoteProcessTime(SceUID pid, SceUInt64 *pTime);
sceKernelCallAbortHandler
Version | NID |
---|---|
0.990 | not present |
1.69-3.60 | 0xEB6E50BB |
sceKernelGetProcessTimeLowCore
Version | NID |
---|---|
0.990-3.60 | 0xF5D0D4C6 |
int sceKernelGetProcessTimeLowCore(void);
sceKernelGetStderr
Version | NID |
---|---|
0.931-3.60 | 0xFA5E3ADA |
Returns the fd of the current process stderr.
SceUID sceKernelGetStderr(void);
sceKernelCDialogSessionClose
Version | NID |
---|---|
0.990 | not present |
3.60 | 0xDB4CC1D0 |
sceKernelCDialogSetLeaseLimit
Version | NID |
---|---|
0.990 | not present |
3.60 | 0xEC8DDAAD |
sceKernelGetExtraTty
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x2D635A00 |
sceKernelLibcGmtime_r
Version | NID |
---|---|
0.990 | not present |
3.60 | 0xBCA437CD |
sceKernelLibcLocaltime_r
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x94F041ED |
sceKernelLibcMktime
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x890BDC39 |
SceProcessmgrForDriver
sceKernelGetCurrentProcessIdForDriver
Version | NID |
---|---|
0.931 | 0x3D4C250E |
3.60 | not present |
Returns the current process ID.
Wrapper for SceKernelThreadMgr sceKernelGetProcessIdForKernel.
SceUID sceKernelGetCurrentProcessIdForDriver(void);
sceKernelAllocCurrentProcessHeapForDriver
Version | NID |
---|---|
0.990-3.60 | 0x5468892A |
void *sceKernelAllocCurrentProcessHeapForDriver(SceSize size, SceKernelHeapMemoryOpt *pOpt);
sceKernelAllocRemoteProcessHeapForDriver
Version | NID |
---|---|
0.990-3.60 | 0x00B1CA0F |
void *sceKernelAllocRemoteProcessHeapForDriver(SceUID pid, SceSize size, SceKernelHeapMemoryOpt *pOpt);
sceKernelFreeCurrentProcessHeapForDriver
Version | NID |
---|---|
0.990-3.60 | 0xFC2A424E |
int sceKernelFreeCurrentProcessHeapForDriver(void *ptr);
sceKernelFreeRemoteProcessHeapForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9C28EA9A |
int sceKernelFreeRemoteProcessHeapForDriver(SceUID pid, void *ptr);
sceKernelGetProcessInfoForDriver
Version | NID |
---|---|
0.931-3.68 | 0x0AFF3EAE |
Retrieves process information.
int sceKernelGetProcessInfoForDriver(SceUID pid, SceKernelProcessInfo *pInfo);
sceKernelGetProcessStatusForDriver
Version | NID |
---|---|
0.931-3.60 | 0x65B120B8 |
This function queries the status of a given process. Davee is unsure what exactly the bits represent. It seems 0x10 is related to suspension status, but he's not confident in that assumption.
/** * @brief Get the status of a given process. * @param[in] pid The process ID to query. * @param[out] status The bit field status of the process. * @return Zero on success, < 0 on error. */ int sceKernelGetProcessStatusForDriver(SceUID pid, int *status);
sceKernelSetProcessStatusForDriver
Version | NID |
---|---|
0.931-3.60 | 0x1D0F3185 |
int sceKernelSetProcessStatusForDriver(SceUID pid, SceUInt32 status);
sceKernelIsProcessSuspendingForDriver
Version | NID |
---|---|
0.931-3.60 | 0x0CC5B30C |
Return whether the process is suspending or not.
int sceKernelIsProcessSuspendingForDriver(SceUID pid);
sceKernelGetProcessTimeLowCoreForDriver
Version | NID |
---|---|
3.60 | 0x02179E12 |
unsigned int sceKernelGetProcessTimeLowCoreForDriver(void);
sceKernelGetProcessTimeWideCoreForDriver
Version | NID |
---|---|
3.60 | 0x82D94BE9 |
uint64_t sceKernelGetProcessTimeWideCoreForDriver(void);
sceKernelGetProcessTimeCoreForDriver
Version | NID |
---|---|
3.60 | 0xEC283166 |
int sceKernelGetProcessTimeCoreForDriver(uint64_t *pTime);
sceKernelRegisterKPLSForDriver
Version | NID |
---|---|
0.940-3.60 | 0x3801D7D6 |
Temp name was sceKernelCreateProcessLocalStorageForDriver.
Return key.
KPLS cannot create more than 32
int sceKernelRegisterKPLSForDriver(const char *name, SceSize size);
sceKernelGetCurrentKPLSForDriver
Version | NID |
---|---|
0.990-3.60 | 0xEE694840 |
Temp name was sceKernelGetProcessLocalStorageAddrForDriver.
void *sceKernelGetCurrentKPLSForDriver(int key);
sceKernelGetRemoteKPLSForDriver
Version | NID |
---|---|
0.940-3.68 | 0xAF80F39C |
Temp name was sceKernelGetProcessLocalStorageAddrForPidForDriver.
This functions gets Remote Kernel Process Local Storage.
int sceKernelGetRemoteKPLSForDriver(SceUID pid, int key, void **kpls_addr, int force_create);
sceKernelGetRemoteProcessTimeForDriver
Version | NID |
---|---|
3.60 | 0xC074EB31 |
int sceKernelGetRemoteProcessTimeForDriver(SceUID pid, uint64_t *pTime);
sceKernelIsCDialogAvailableForDriver
Version | NID |
---|---|
3.60 | 0x2F6020B7 |
int sceKernelIsCDialogAvailableForDriver(void)
sceKernelIsGameBudgetForDriver
Version | NID |
---|---|
3.60 | 0xF7A8BB25 |
int sceKernelIsGameBudgetForDriver(void);
SceProcessmgrForDriver_C715591F
Version | NID |
---|---|
3.60 | 0xC715591F |
Called by "sceProcessMgrLaunchAppFor" ?to check?.
int SceProcessmgrForDriver_C715591F(void);
sceKernelGetCompiledSdkVersionByPidForDriver
Version | NID |
---|---|
3.60 | 0xD141C076 |
int sceKernelGetCompiledSdkVersionByPidForDriver(SceUID pid, SceUInt32 *puiSdkVer);
sceKernelRegisterCoredumpHandlerForDriver
Version | NID |
---|---|
3.60 | 0x21A6F0EC |
int sceKernelRegisterCoredumpHandlerForDriver(void *handler, SceSize size, void *memblock_addr);
sceKernelUnregisterCoredumpHandlerForDriver
Version | NID |
---|---|
3.60 | 0x33B3D026 |
int sceKernelUnregisterCoredumpHandlerForDriver(void);
SceProcessmgrForDriver_5E882B60
Version | NID |
---|---|
0.990 | 0x5E882B60 |
3.60 | not present |
Registers some callback.
int SceProcessmgrForDriver_5E882B60(void *cb);
SceProcessmgrForDriver_2CEB1C7A
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x2CEB1C7A |
Cleans process memory in range with pseudo random values. Both addres and length must be aligned on 4 bytes. Uses SceSysmem#sceXorshift128ForDriver to update each dword in range.
int SceProcessmgrForDriver_2CEB1C7A(SceUID pid, void *pBase, SceSize length);
SceProcessmgrForKernel
sceKernelCreateProcessForKernel
Version | NID |
---|---|
0.931-3.60 | 0x71CF71FD |
3.65 | 0x68068618 |
Temp name was sceKernelLaunchAppForKernel.
/** * @brief Create a process * @param[in] name Usually TitleId of the application. * @param[in] type Type of the process. * @param[in] path Path of the SELF. * @param[in] pOpt Options of the process. * @return Process ID of the created process on success, < 0 on error. */ SceUID sceKernelCreateProcessForKernel(const char* name, SceKernelProcessType type, const char *path, SceKernelProcessOpt *pOpt);
sceKernelStartProcessForKernel
Version | NID |
---|---|
0.931-3.60 | 0x38FB7BCA |
/** * @brief Start a process * @param[in] pid Process ID. * @param[in] type Type of the process. * @param[in] argSize Size of the arguments block. * @param[in] pArgBlock Arguments block. * @return Return value of the started process on success, < 0 on error. */ int sceKernelStartProcessForKernel(SceUID pid, SceKernelProcessType type, SceSize argSize, const void *pArgBlock);
sceKernelStartProcessExtForKernel
Version | NID |
---|---|
0.990-3.60 | 0x36728B16 |
Temp name was sceKernelStartProcess2ForKernel.
Used by SceAppMgr
/** * @brief Start a process with extended parameters * @param[in] pid Process ID. * @param[in] type Type of the process. * @param[in] argSize Size of the arguments block. * @param[in] pArgBlock Arguments block. * @param[in] process module flags. 1:inhibit shared and load libgxm_dbg_es4.suprx Instead of libgxm_es4.suprx * @return Return value of the started process on success, < 0 on error. */ int sceKernelStartProcessExtForKernel(SceUID pid, SceKernelProcessType type, SceSize argSize, const void *pArgBlock, uint32_t flags);
sceKernelSpawnProcessForKernel
Version | NID |
---|---|
0.931-3.60 | 0x31834C49 |
Calls sceKernelCreateProcessForKernel then sceKernelStartProcessForKernel.
/** * @brief Spawn a process * @param[in] name Usually TitleId of the application. * @param[in] type Type of the process. * @param[in] path Path of the SELF. * @param[in] argSize Size of the arguments block. * @param[in] pArgBlock Arguments block. * @param[in] pOpt Options of the process. * @return Process ID of the spawned process on success, < 0 on error. */ SceUID sceKernelSpawnProcessForKernel(const char *name, SceKernelProcessType type, const char *path, SceSize argSize, const void *pArgBlock, SceKernelProcessOpt *pOpt);
sceKernelSpawnProcessExtForKernel
Version | NID |
---|---|
0.990-3.60 | 0x8F320D2B |
Calls sceKernelCreateProcessForKernel then sceKernelStartProcessExtForKernel.
/** * @brief Spawn a process with extended parameters * @param[in] name Usually TitleId of the application. * @param[in] type Type of the process. * @param[in] path Path of the SELF. * @param[in] argSize Size of the arguments block. * @param[in] pArgBlock Arguments block. * @param[in] pOpt Options of the process. * @param[in] flags Unknown flags. * @return Process ID of the spawned process on success, < 0 on error. */ SceUID sceKernelSpawnProcessExtForKernel(const char *name, SceKernelProcessType type, const char *path, SceSize argSize, const void *pArgBlock, SceKernelProcessOpt *pOpt, SceUInt32 flags);
sceKernelUIDtoProcessForKernel
Version | NID |
---|---|
0.931-3.60 | 0xB9E68092 |
Temp name was sceKernelGetProcessKernelBufForKernel.
Gets the process privileged only buffer.
void *sceKernelUIDtoProcessForKernel(SceUID pid);
sceKernelGetProcessMainThreadForDebuggerForKernel
Version | NID |
---|---|
0.931-3.60 | 0x95F9ED94 |
/** * @brief Get the main thread for a given process. * @param[in] pid The process id to query for. * @return The thread UID on success, else < 0 on error. */ SceUID sceKernelGetProcessMainThreadForDebuggerForKernel(SceUID pid);
sceKernelProcessSuspendForLoadpForKernel
Version | NID |
---|---|
0.931 | 0x3EC5FDF4 |
3.60 | not present |
/** * @brief Resume a suspended process. * @param[in] pid The process to resume. * @return Zero on success, < 0 on error. */ int sceKernelProcessSuspendForLoadpForKernel(SceUID pid);
sceKernelProcessDebugSuspendForKernel
Version | NID |
---|---|
0.990-3.60 | 0x6AECE4CD |
Temp name was sceKernelSuspendProcessForKernel.
/** * @brief Suspend a running process. * @param[in] pid The process to suspend. * @param[in] status The status to set to the process. * @return Zero on success, < 0 on error. */ int sceKernelProcessDebugSuspendForKernel(SceUID pid, int status);
sceKernelProcessDebugResumeForKernel
Version | NID |
---|---|
0.990-3.60 | 0x080CDC59 |
Temp name was sceKernelResumeProcessForKernel.
/** * @brief Resume a suspended process. * @param[in] pid The process to resume. * @return Zero on success, < 0 on error. */ int sceKernelProcessDebugResumeForKernel(SceUID pid);
sceKernelResumeProcessForDebuggerForKernel
Version | NID |
---|---|
0.931-3.60 | 0xB13E3C7B |
/** * @brief Resume a suspended process. * @param[in] pid The process to resume. * @return Zero on success, < 0 on error. */ int sceKernelResumeProcessForDebuggerForKernel(SceUID pid);
sceKernelResumeProcessForKernel
Version | NID |
---|---|
0.931-3.60 | 0xE0A9C9C4 |
/** * @brief Resume a suspended process. * @param[in] pid The process to resume. * @return Zero on success, < 0 on error. */ int sceKernelResumeProcessForKernel(SceUID pid);
sceKernelExitProcessForKernel
Version | NID |
---|---|
0.990-3.60 | 0x4CA7DC42 |
int sceKernelExitProcessForKernel(int status);
sceKernelSetProcessSelfAuthInfoForKernel
Version | NID |
---|---|
0.931-0.990 | 0x5ABA2772 |
3.60 | not present |
int sceKernelSetProcessSelfAuthInfoForKernel(SceUID pid, SceSelfAuthInfo *self_auth_info);
sceKernelGetProcessSelfAuthInfoForKernel
Version | NID |
---|---|
0.931-3.60 | 0xE4C83B0D |
Temp name was sceKernelGetProcessAuthidForKernel.
SceSelfAuthInfo
type is described in sceKernelSysrootGetProcessSelfAuthInfoForKernel.
int sceKernelGetProcessSelfAuthInfoForKernel(SceUID pid, SceSelfAuthInfo *self_auth_info);
sceKernelLibcTimeForKernel
Version | NID |
---|---|
3.60 | 0x9E38C556 |
sceKernelLibcGettimeofdayForKernel
Version | NID |
---|---|
3.60 | 0xDE8B8B5E |
sceKernelGetUIDProcessClassForKernel
Version | NID |
---|---|
3.60 | 0xC6820972 |
Temp name was sceKernelGetClassForUid2ForKernel, sceKernelGetProcessClassForKernel.
SceClass *sceKernelGetUIDProcessClassForKernel(void);
sceKernelKillProcessForDebuggerForKernel
Version | NID |
---|---|
0.931-3.60 | 0x90C27779 |
int sceKernelKillProcessForDebuggerForKernel(SceUID pid);
sceKernelKillProcessForKernel
Version | NID |
---|---|
0.931-3.60 | 0xA1071106 |
3.65 | 0xF388F05C |
int sceKernelKillProcessForKernel(SceUID pid, int status);
sceKernelGetMMUL1InfoForKernel
Version | NID |
---|---|
0.931-0.990 | 0xC526C6F2 |
3.60 | not present |
int sceKernelGetMMUL1InfoForKernel(SceUID pid, const void *addr, void *pInfo);
sceKernelGetMMUL2InfoForKernel
Version | NID |
---|---|
0.931 | 0xE2681221 |
3.60 | not present |
int sceKernelGetMMUL2InfoForKernel(SceUID pid, const void *addr, void *pInfo);
sceKernelWaitProcessEndForKernel
Version | NID |
---|---|
0.931-3.60 | 0x0EE2658E |
int sceKernelWaitProcessEndForKernel(SceUID pid, int *res, SceUInt32 *pTimeout);
sceKernelGetPHWPForKernel
Version | NID |
---|---|
0.931-3.60 | 0xC55BF6C3 |
int sceKernelGetPHWPForKernel(SceUID pid, SceUInt32 a2, int *a3, int *a4);
sceKernelSetPHWPForKernel
Version | NID |
---|---|
0.931-3.60 | 0x54D7B16A |
int sceKernelSetPHWPForKernel(SceUID pid, int a2, int a3, int a4);
sceKernelGetPHBPForKernel
Version | NID |
---|---|
0.931-3.60 | 0xA9C20202 |
int sceKernelGetPHBPForKernel(SceUID pid, SceUInt32 a2, int *a3, int *a4);
sceKernelSetPHBPForKernel
Version | NID |
---|---|
0.931-3.60 | 0x59FA3216 |
int sceKernelSetPHBPForKernel(SceUID pid, int a2, int a3, int a4);
sceKernelGetProcessAppForKernel
Version | NID |
---|---|
0.931-3.60 | 0x34FA9645 |
int sceKernelGetProcessAppForKernel(SceUID pid);
sceKernelGetProcessParentIdForKernel
Version | NID |
---|---|
0.931-3.60 | 0x3C4D2889 |
// returns the parent process PID int sceKernelGetProcessParentIdForKernel(SceUID pid);
sceKernelSuspendProcessForDebuggerForKernel
Version | NID |
---|---|
0.931-3.60 | 0x234A80B6 |
/** * @brief Suspend a running process. * @param[in] pid The process to suspend. * @return Zero on success, < 0 on error. */ int sceKernelSuspendProcessForDebuggerForKernel(SceUID pid);
sceKernelSuspendProcessForKernel
Version | NID |
---|---|
0.990-3.60 | 0xCF83C23B |
/** * @brief Suspend a running process. * @param[in] pid The process to suspend. * @param[in] status The status to set to the process. * @return Zero on success, < 0 on error. */ int sceKernelSuspendProcessForKernel(SceUID pid, int status);
sceKernelGetProcessImageForDebuggerForKernel
Version | NID |
---|---|
0.931-0.990 | 0xCF71D9DD |
Return Process Image on success.
void *sceKernelGetProcessImageForDebuggerForKernel(SceUID pid);
sceKernelProcessAppendForKernel
Version | NID |
---|---|
0.931-0.990 | 0xC4E349D5 |
// if pid2 is not set, current pid is used instead int sceKernelProcessAppendForKernel(SceUID pid1, SceUID pid2);
sceKernelProcessAssocAppForKernel
Version | NID |
---|---|
0.931-3.60 | 0x76C89783 |
int sceKernelProcessAssocAppForKernel(SceUID pid, int unk_in);
sceKernelCreateBudgetForKernel
Version | NID |
---|---|
0.931-3.60 | 0x05F74BAF |
typedef struct SceKernelBudgetOpt { // size is 0x18 on FW 0.931-3.60 SceSize size; // Size of this structure SceBool unk_4; // cdram related SceSize ddrmain_size; SceSize main_size; SceSize cdialog_size; // ddrpcnt SceSize cdram_size; // or maybe budgetId } SceKernelBudgetOpt; int sceKernelCreateBudgetForKernel(const char *appName, SceUInt32 process_type, SceKernelBudgetOpt *pOpt);
sceKernelDeleteBudgetForKernel
Version | NID |
---|---|
0.931-3.60 | 0xE5A60577 |
Delete budget for the current process.
// budget: maybe 0, 1, 2 or 3 int sceKernelDeleteBudgetForKernel(SceUInt32 budget);
sceKernelGetBudgetInfoForDebuggerForKernel
Version | NID |
---|---|
0.990-3.60 | 0xF3C4A83B |
Uses SceSysmem#SceSysmemForKernel_54E85275 to get a 0xB0 bytes buffer.
int sceKernelGetBudgetInfoForDebuggerForKernel(SceUID pid, SceUInt32 attr, SceKernelBudgetInfo *pInfo);
sceKernelGetProcessModuleInfoForKernel
Version | NID |
---|---|
1.03 | not present |
3.60 | 0xC1C91BB2 |
SceKernelProcessModuleInfo *sceKernelGetProcessModuleInfoForKernel(SceUID pid);
sceKernelSetProcessModuleInfoForKernel
Version | NID |
---|---|
3.60 | 0x7D8D7885 |
int sceKernelSetProcessModuleInfoForKernel(SceUID pid, SceKernelProcessModuleInfo *pInfo);
SceProcessmgrForKernel_B75FB970
Version | NID |
---|---|
0.990 | not present |
3.60 | 0xB75FB970 |
Increments Process UID Reference List counter.
// unk_bool depends of the process type int SceProcessmgrForKernel_B75FB970(SceUID pid, SceBool unk_bool);
SceProcessmgrForKernel_0A5A2CF1
Version | NID |
---|---|
0.990 | not present |
3.60 | 0xB75FB970 |
Decrements Process UID Reference List counter.
// unk_bool depends of the process type int SceProcessmgrForKernel_0A5A2CF1(SceUID pid, SceBool unk_bool);
sceKernelFreeRemoteProcessKernelHeapForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x41815DF2 |
Requires DIP switch 210. Used to free memory allocated with sceKernelProcessAllocKernelBudgetHeapMemoryForKernel.
int sceKernelFreeRemoteProcessKernelHeapForKernel(SceUID pid, void *ptr);
sceKernelGetProcessBudgetTypeForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x2ABFB6C1 |
SceKernelBudgetType sceKernelGetProcessBudgetTypeForKernel(SceUID pid);
sceKernelProcessAllocKernelBudgetHeapMemoryForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x3C5E2F08 |
Requires DIP switch 210. Free memory with sceKernelFreeRemoteProcessKernelHeapForKernel.
void* sceKernelProcessAllocKernelBudgetHeapMemoryForKernel(SceUID pid, SceSize size);
SceProcessmgrForKernel_C77C2085
Version | NID |
---|---|
0.990_3.60 | 0xC77C2085 |
Gets something from object class of the specified process or current process if pid = 0.
int SceProcessmgrForKernel_C77C2085(SceUID pid);