SceProcessmgr

From Vita Development Wiki
Jump to navigation Jump to search

Process Manager

Contents

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.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_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 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 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; // heap uid for RemoteKPLS?
	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
3.60 not present
int _sceKernelRegisterExitAddress(int a1, int a2, int a3);

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
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
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);

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, int *result);

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);

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

sceKernelGetProcessClassForKernel

Version NID
3.60 0xC6820972

Temp name was sceKernelGetClassForUid2ForKernel.

SceClass *sceKernelGetProcessClassForKernel(void);

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

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);

To find

  • sceKernelPermitProcEvent
  • sceKernelInhibitProcEvent