Difference between revisions of "SceProcessmgr"

From Vita Development Wiki
Jump to navigation Jump to search
Line 44: Line 44:
 
#define SCE_KERNEL_CPU_AFFINITY_FLAG_ALL_USER    8
 
#define SCE_KERNEL_CPU_AFFINITY_FLAG_ALL_USER    8
  
typedef struct SceKernelProcessInfo {
+
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
 
SceSize size;          //!< size of this struct, make sure it's 0xE8
 
SceUID pid;            //!< our process ID
 
SceUID pid;            //!< our process ID
Line 71: Line 71:
 
int unk78[8];
 
int unk78[8];
 
} SceKernelProcessInfo;
 
} SceKernelProcessInfo;
 +
 +
typedef struct SceKernelProcessModuleInfo { // size is ?0x28?
 +
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;
 +
int modid; // ex: 0x1009B
 +
} SceKernelProcessModuleInfo;
  
 
typedef struct SceKernelProcessOpt { // size is 0x14 or 0x1C on FW 0.931, 0x20 on FW 0.990
 
typedef struct SceKernelProcessOpt { // size is 0x14 or 0x1C on FW 0.931, 0x20 on FW 0.990
Line 489: Line 503:
 
Retrieves process information.
 
Retrieves process information.
  
<source lang="C">
+
<source lang="C">int sceKernelGetProcessInfoForDriver(SceUID pid, SceKernelProcessInfo *pInfo);</source>
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);
 
</source>
 
  
 
=== sceKernelGetProcessStatusForDriver ===
 
=== sceKernelGetProcessStatusForDriver ===
Line 1,187: Line 1,189:
 
|}
 
|}
  
 
+
=== sceKernelGetProcessModuleInfoForKernel ===
=== SceProcessmgrForKernel_C1C91BB2 ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 +
|-
 +
| 1.03 || not present
 
|-
 
|-
 
| 3.60 || 0xC1C91BB2
 
| 3.60 || 0xC1C91BB2
 
|}
 
|}
  
<source lang="C">int SceProcessmgrForKernel_C1C91BB2(SceUID pid);</source>
+
<source lang="C">SceKernelProcessModuleInfo *sceKernelGetProcessModuleInfoForKernel(SceUID pid);</source>
  
 
== To find ==
 
== To find ==

Revision as of 03:34, 18 April 2020

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
3.65 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_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;
	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 ?0x28?
	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;
	int modid;				// ex: 0x1009B
} SceKernelProcessModuleInfo;

typedef struct SceKernelProcessOpt { // size is 0x14 or 0x1C on FW 0.931, 0x20 on FW 0.990
  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 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, 0xC
  SceUInt32 unk_1C;
} SceKernelBootParam;

typedef struct SceProcessmgrInfoInternal {
	uint32_t sce_rsv[2];
	uint32_t data_08[2];
	uint32_t data_10;
	SceUID data_14;
	SceUID data_18;
	SceUID data_1C;
	uint32_t data_20[4];
	void *data_30;
	void *data_34;
	uint32_t data_38;
	uint32_t data_3C; // ex:1
	uint32_t data_40; // ex:1
	uint32_t data_44; // ex:0x1D0000
	void *data_48;
	SceUID data_4C;
	uint32_t data_50; // ex:0xFFFFFFFF
	uint32_t data_54; // ex:7
	uint32_t data_58; // ex:1
	SceUID data_5C;
	void *data_60;
	SceUID this_obj_uid;
	SceUID data_68;
	SceUID data_6C;
	uint32_t data_70; // ex:0xFFFFFFFF
	void *data_74;
	SceUID data_78;
	uint32_t data_7C;
	SceUID data_80;
	SceUID data_84;
	SceUID data_88;
	SceUID data_8C;
	SceUID data_90;
	uint32_t data_94;
	uint32_t data_98; // ex:0x7F
	SceKernelModuleProcInfo_t *proc_module_info;
	uint32_t data_A0; // ex:0x40
	uint8_t data_A4[0x10]; // rnd data?
	uint32_t data_B4;
	SceSelfAuthInfo self_auth_info;
	int data_148;
	char thread_name[0x20];
	int thread_priority;
	SceSize stack_size;
	uint8_t data_174[0x4C];
	void *module_proc_param;
	SceUID data_1C4;
	SceUID data_1C8;
	SceUID data_1CC;
	SceUID data_1D0; // ex:-1
	SceUID data_1D4; // for user
	SceUID data_1D8; // for user
	SceUID data_1DC; // for user
	// more
} SceProcessmgrInfoInternal; // size is 0x4E0

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
int sceKernelIsCDialogAvailable(void)

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
int sceKernelFreeRemoteProcessHeapForDriver(SceUID pid, void *ptr);

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.

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
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?.

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".

sceKernelGetCompiledSdkVersionByPidForDriver

Version NID
3.60 0xD141C076
int sceKernelGetCompiledSdkVersionByPidForDriver(SceUID 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

sceKernelGetProcessModuleInfoForKernel

Version NID
1.03 not present
3.60 0xC1C91BB2
SceKernelProcessModuleInfo *sceKernelGetProcessModuleInfoForKernel(SceUID pid);

To find

  • sceKernelPermitProcEvent
  • sceKernelInhibitProcEvent