SceProcessmgr

From Vita Development Wiki
Revision as of 12:08, 19 January 2020 by CelesteBlue (talk | contribs) (→‎Types)
Jump to navigation Jump to search

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

Version Name World Visibility NID
1.69-3.60 SceProcessmgr Non-secure User 0x2DD91812
1.69-3.60 SceProcessmgrForDriver Non-secure Kernel 0x746EC971
1.69-3.60 SceProcessmgrForKernel Non-secure Kernel 0x7A69DE86

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

sceKernelGetExtraTty

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