Process Manager
Module
Known NIDs
Version |
Name |
World |
Privilege |
NID
|
1.69 |
SceProcessmgr |
Non-secure |
Kernel |
0xF019E1DA
|
3.57 |
SceProcessmgr |
Non-secure |
Kernel |
0x19A9C477
|
3.60 |
SceProcessmgr |
Non-secure |
Kernel |
0x8B8A6263
|
Libraries
Known NIDs
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
typedef struct SceKernelProcessOpt { // size is 0x14 or 0x1C on FW 0.931
SceSize size; // Size of this structure
int unk_4;
SceUInt32 cpuAffinityMask;
SceUInt32 initPriority;
SceSize stackSize;
int unk_14;
SceUInt32 budgetId;
} SceKernelProcessOpt;
typedef struct SceKernelBootParam { // size is up to 0x100
uint32_t unk_0; // ex: 0, 1
SceUInt32 cpuAffinityMask; // ex: 0, 2, 8
SceUInt32 initPriority; // ex: 0
SceSize stackSize; // ex: 0x4000, 0x8000
uint32_t unk_10; // ex: 0, 0x12
SceUInt32 budgetId; // ex: 0, 0xC
} SceKernelBootParam;
SceProcessmgr
_sceKernelRegisterExitAddress
Version |
NID
|
0.990 |
0x0278DFB7
|
sceKernelLibcTime
Version |
NID
|
1.69-3.60 |
0x0039BE45
|
sceKernelGetProcessTitleId
Version |
NID
|
1.69-3.60 |
0x03A48771
|
sceKernelGetProcessName
Version |
NID
|
1.69-3.60 |
0x10C52C95
|
sceKernelIsCDialogAvailable
Version |
NID
|
1.69-3.60 |
0x143BC4D6
|
sceKernelPowerTick
Version |
NID
|
1.69-3.60 |
0x2252890C
|
sceKernelGetProcessParam
Version |
NID
|
1.69-3.60 |
0x2BE3E066
|
_sceKernelGetTimer5Reg
Version |
NID
|
1.69-3.60 |
0x2F73D72F
|
sceKernelPowerUnlock
Version |
NID
|
1.69-3.60 |
0x466C0CBD
|
sceKernelLibcGettimeofday
Version |
NID
|
1.69-3.60 |
0x4B879059
|
_sceKernelRegisterLibkernelAddresses
Version |
NID
|
1.69-3.60 |
0x56C2E8FF
|
sceKernelRegisterProcessTerminationCallback
Version |
NID
|
1.69-3.60 |
0x5EC77870
|
sceKernelPowerLock
Version |
NID
|
1.69-3.60 |
0x7AA73378
|
sceKernelGetProcessTimeWideCore
Version |
NID
|
1.69-3.60 |
0x89DA0967
|
sceKernelUnregisterProcessTerminationCallback
Version |
NID
|
1.69-3.60 |
0x973A4527
|
sceKernelLibcClock
Version |
NID
|
1.69-3.60 |
0x9E45DA09
|
_sceKernelExitProcessForUser
Version |
NID
|
1.69-3.60 |
0xC053DC6B
|
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
|
1.69-3.60 |
0xCE0F02F0
|
sceKernelGetProcessTimeCore
Version |
NID
|
1.69-3.60 |
0xD37A8437
|
sceKernelGetStdout
Version |
NID
|
0.931-3.60 |
0xE5AA625C
|
Returns the fd of the current process stdout.
SceUID sceKernelGetStdout(void);
sceKernelGetRemoteProcessTime
Version |
NID
|
1.69-3.60 |
0xE6E9FCA3
|
sceKernelCallAbortHandler
Version |
NID
|
1.69-3.60 |
0xEB6E50BB
|
sceKernelGetProcessTimeLowCore
Version |
NID
|
1.69-3.60 |
0xF5D0D4C6
|
sceKernelGetStderr
Version |
NID
|
0.931-3.60 |
0xFA5E3ADA
|
Returns the fd of the current process stderr.
SceUID sceKernelGetStderr(void);
sceKernelCDialogSessionClose
Version |
NID
|
3.60 |
0xDB4CC1D0
|
sceKernelCDialogSetLeaseLimit
Version |
NID
|
3.60 |
0xEC8DDAAD
|
Version |
NID
|
3.60 |
0x2D635A00
|
sceKernelLibcGmtime_r
Version |
NID
|
3.60 |
0xBCA437CD
|
sceKernelLibcLocaltime_r
Version |
NID
|
3.60 |
0x94F041ED
|
sceKernelLibcMktime
Version |
NID
|
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);
sceKernelAllocRemoteProcessHeapForDriver
Version |
NID
|
0.990-3.60 |
0x00B1CA0F
|
3.60
void *sceKernelAllocRemoteProcessHeapForDriver(SceUID pid, SceSize len, void *pOpt);
sceKernelFreeRemoteProcessHeapForDriver
Version |
NID
|
0.990-3.60 |
0x9C28EA9A
|
sceKernelSetProcessStatusForDriver
Version |
NID
|
0.931-3.60 |
0x1D0F3185
|
int sceKernelSetProcessStatusForDriver(SceUID pid, SceUInt32 status);
sceKernelGetProcessInfoForDriver
Version |
NID
|
0.931-3.68 |
0x0AFF3EAE
|
Retrieves process information.
typedef struct SceKernelProcessInfo { // size is 0x24 or 0x4C on FW 0.931, 0xE8 on FW 3.60
SceSize size; //!< Size of this structure
SceUID pid; //!< Process ID
int unk_8;
int unk_C;
int unk_10;
SceUID ppid; //!< Parent process ID
int unk[0xE8 / 4 - 6]; //!< the rest is unknown
} SceKernelProcessInfo;
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);
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
|
sceKernelGetProcessTimeWideCoreForDriver
Version |
NID
|
3.60 |
0x82D94BE9
|
sceKernelGetProcessTimeCoreForDriver
Version |
NID
|
3.60 |
0xEC283166
|
sceKernelRegisterKPLSForDriver
Version |
NID
|
0.940-3.60 |
0x3801D7D6
|
Temp name was sceKernelCreateProcessLocalStorageForDriver.
Return ?key?.
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
|
sceKernelIsCDialogAvailableForDriver
Version |
NID
|
3.60 |
0x2F6020B7
|
sceKernelIsGameBudgetForDriver
Version |
NID
|
3.60 |
0xF7A8BB25
|
SceProcessmgrForDriver_C715591F
Version |
NID
|
3.60 |
0xC715591F
|
Called by "sceProcessMgrLaunchAppFor".
sceKernelGetCompiledSdkVersionByPidForDriver
Version |
NID
|
3.60 |
0xD141C076
|
int sceKernelGetCompiledSdkVersionByPidForDriver(int pid, int *result);
SceProcessmgrForKernel
sceKernelCreateProcessForKernel
Version |
NID
|
0.931-3.60 |
0x71CF71FD
|
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.
/**
* @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] flags Unknown flags.
* @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
|
sceKernelGetClassForUidForKernel
Version |
NID
|
3.60 |
0xC6820972
|
SceClass* sceKernelGetClassForUidForKernel(SceUID pid);
sceKernelKillProcessForDebuggerForKernel
Version |
NID
|
0.931-3.60 |
0x90C27779
|
int sceKernelKillProcessForDebuggerForKernel(SceUID pid);
sceKernelKillProcessForKernel
Version |
NID
|
0.931-3.60 |
0xA1071106
|
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
SceSize size; // Size of this structure
uint32_t unk_4;
uint32_t unk_8;
uint32_t main_size;
uint32_t cdialog_size;
uint32_t cdram_size;
} 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
|
To find
- sceKernelPermitProcEvent
- sceKernelInhibitProcEvent