SceProcessmgr: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
Line 1,213: Line 1,213:


This is a guessed name. Temp name was sceKernelGetProcessPMCRForDriver.
This is a guessed name. Temp name was sceKernelGetProcessPMCRForDriver.
<source lang="C">int sceKernelGetPMCRForDriver(SceUID pid);</source>


=== sceKernelSetInitialPMUSERENRForDriver ===
=== sceKernelSetInitialPMUSERENRForDriver ===

Revision as of 12:47, 5 June 2023

Process Manager

Module

Version World Privilege
0.940-3.740.011 Non-secure Kernel

Libraries

Known NIDs

Version Name World Visibility NID
1.000.071-3.740.011 SceProcessmgr Non-secure User 0x2DD91812
0.990.000-3.740.011 SceProcessmgrForDriver Non-secure Kernel 0x746EC971
0.990.000-3.610.011 SceProcessmgrForKernel Non-secure Kernel 0x7A69DE86
3.630.000-3.740.011 SceProcessmgrForKernel Non-secure Kernel 0xEB1F8EF7

Types

//Pseudo-UIDs for Budget object
#define SCE_KERNEL_PROCESS_CURRENT_PROCESS_BUDGET 0
#define SCE_KERNEL_PROCESS_FULL_GAME_PROCESS_BUDGET 2
#define SCE_KERNEL_PROCESS_SYSTEM_APPLICATION_PROCESS_BUDGET 3

typedef SceUInt32 SceProcessType;
#define SCE_PROCESS_TYPE_GAME 0x01000000 // Value on old System Software version is 0x01010001
#define SCE_PROCESS_TYPE_MINI_APPLICATION 0x02000000 // Value on old System Software version is 0x02010001
#define SCE_PROCESS_TYPE_SYSTEM_APPLICATION 0x04000000 // Value on old System Software version is 0x04020102
#define SCE_PROCESS_TYPE_KERNEL 0x05000000 // Value on old System Software version is 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 structure
	SceUID pid;             // Process ID
	SceUID addressSpaceId;
	int unk_C;              // processCreationFlags
	int status;             // Process status. ex: suspended = 0x11/0x10011, started = |2.
	SceUID ppid;            // Parent process ID
	SceUID budgetId;
	int cpuAffinity;        // CPU affinity. ex: 7
	int unk_20;             // might be initial priority. ex: 0x7F (127)
	SceUID modid;           // Module ID
	void *entrypoint;       // Process entry point
	SceUInt32 process_type;
	char name[0x20];        // Process name. ProcessObject->loadprocessparam.module_name if non-empty, else copy from sceGUIDGetName2ForDriver if not NULL, else \0
	void *unk_50;           // ?maxFHCount?
	void *unk_54;           // ?EntryHeap_uid?
	SceUID entryHeapId;     // GUID/PUID EntryHeap GUID
	int unk_5C;             // ex: -1
	int unk_60;             // ?module_inhibit_state?
	int unk_64;             // ex: 0x32
	void *KPLS_slots[0x20];
} SceKernelProcessInfo;

// Temp name was SceKernelProcessModuleInfo
typedef struct SceKernelProcessLibdb { // 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;
} SceKernelProcessLibdb;

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-bytes or 0x1C-bytes on FW 0.931, 0x20-bytes 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;

// This is a temporary name to distinguish from SceKernelProcessOpt of FW 0.990 and earlier
typedef struct SceKernelProcessOpt_2 { // size is 0x3C-bytes on FW 3.50, 0x40_bytes on FW 3.60
	SceSize size; // Size of this structure
	int attr;
	int initPriority;
	int unk_0x0C;
	int unk_0x10;
	int unk_0x14;
	int budgetId;
	SceUID ppid;
	int unk_0x20;
	SceAppMgrLaunchParam *unk_0x24;
	const void *klicensee;
	SceSize file_open_max_num;
	SceSize dir_open_max_level;
	int unk_0x34;
	int unk_0x38;
	int unk_0x3C; // some count
} SceKernelProcessOpt_2;

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 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, SceProcessObj
typedef struct _SceUIDProcessObject { // size is 0x4E0 on FW 3.60
  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;
  int cpu_intr;
  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
  SceProcessType 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 unk58; // some atomic global variable related to affinity_mask
  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 random_data[0x10]; // Filled using sceMt19937GlobalUIntInRangeForDriver, then SceKernelUtilsForDriver_B55C69B7 called on it
  uint32_t 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;
  SceUID stdin_guid; // result of IoOpen("tty0:")
  SceUID stdout_guid; // result of IoOpen("tty0:")
  SceUID stderr_guid; // result of IoOpen("tty1:")
  SceUID tty7_guid; // result of IoOpen("tty7:") - needs dipsw 0xB8 set
  SceUID stdin_puid; // result of scePUIDOpenByGUIDForDriver(pid, stdin_guid)
  SceUID stdout_puid; // result of scePUIDOpenByGUIDForDriver(pid, stdout_guid)
  SceUID stderr_puid; // result of scePUIDOpenByGUIDForDriver(pid, stderr_guid)
  SceUID tty7_puid; // result of scePUIDOpenByGUIDForDriver(pid, tty7_guid)
  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* KPLS_slots[0x20]; // Pointer to memory allocated for KPLS slots of this process - [3] is "display_info" (size maybe 0x1D0-0x1D8), [4] size may be 0x50-0x58, [23] 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
  int32_t unk2B0; // unk
  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

  void *ptr2D0;
  void *ptr2D4; // pointer to SceKernelThreadObject->offset_0xb8
  SceUInt32 unk2D8; // maybe thread number (not have thread attr 0x4000)
  SceUInt32 unk2DC; // maybe thread number (not have thread attr 0x4000)
  SceUInt32 unk2E0; // maybe thread number (have thread attr 0x4000)
  SceUInt32 unk2E4; // maybe thread number (have thread attr 0x4000)
  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 _SceUIDProcessObjectListEntry {
    struct _SceUIDProcessObjectListEntry* next;
    struct _SceUIDProcessObjectListEntry* prev;
    struct _ProcessResourceInfo {
      SceUInt32 interrupt_mtx; //Mutex for SuspendInterrupt
      SceSize max_count; //Maximum number of resources of this type allowed
      SceSize cur_count; //Current number of resources of this type
      SceSize highwater; //Not sure - highest number of resources of this type process had
    } process_resources[8];
    char process_name[0x20];
  } list_entry;
} SceUIDProcessObject;

typedef struct SceKernelTimeval {
	SceInt32 sec;
	SceInt32 usec;
} SceKernelTimeval;

typedef struct SceKernelTimezone {
	SceUInt64 value;
} SceKernelTimezone;

SceProcessmgr

sceKernelLibcTime

Version NID
0.990-3.740.011 0x0039BE45
int sceKernelLibcTime(SceUInt32 *pTime);

sceKernelGetProcessTitleId

Version NID
0.990 not present
1.600.061-3.740.011 0x03A48771

sceKernelGetProcessName

Version NID
0.990 not present
1.600.061-3.740.011 0x10C52C95

sceKernelIsCDialogAvailable

Version NID
0.990 not present
1.500.151-3.740.011 0x143BC4D6
int sceKernelIsCDialogAvailable(void)

sceKernelPowerTick

Version NID
0.990-3.740.011 0x2252890C
int sceKernelPowerTick(SceKernelPowerTickType type);

sceKernelGetProcessParam

Version NID
0.990-3.740.011 0x2BE3E066
SceProcessParam *sceKernelGetProcessParam(void);

_sceKernelGetTimer5Reg

Version NID
0.990 not present
1.000.071-3.65 0x2F73D72F

sceKernelPowerUnlock

Version NID
0.990-3.740.011 0x466C0CBD
int sceKernelPowerUnlock(SceKernelPowerTickType type);

sceKernelLibcGettimeofday

Version NID
0.990-3.740.011 0x4B879059
int sceKernelLibcGettimeofday(SceKernelTimeval *tv, SceKernelTimezone *tz);

_sceKernelRegisterExitAddress

Version NID
0.931-0.990 0x0278DFB7
3.600.011-3.740.011 not present

Used in SceLibKernel module_start.

int _sceKernelRegisterExitAddress(SceUIntUAddr psceKernelExitThread, SceUIntUAddr psceKernelExitDeleteThread, SceUIntUAddr psceKernelExitCallback);

_sceKernelRegisterLibkernelAddresses

Version NID
0.990 not present
1.000.071-3.740.011 0x56C2E8FF
int _sceKernelRegisterLibkernelAddresses(SceLibkernelAddresses *pAddresses);

sceKernelRegisterProcessTerminationCallback

Version NID
0.990-3.65 0x5EC77870
// cbId can be obtained using sceKernelCreateCallback
SceInt32 sceKernelRegisterProcessTerminationCallback(SceUID pid, SceUID cbId);

sceKernelUnregisterProcessTerminationCallback

Version NID
0.990-3.740.011 0x973A4527
// Pass same cbId as previously provided to sceKernelRegisterProcessTerminationCallback
SceInt32 sceKernelUnregisterProcessTerminationCallback(SceUID pid, SceUID cbId);

sceKernelPowerLock

Version NID
0.931-3.740.011 0x7AA73378
int sceKernelPowerLock(SceKernelPowerTickType type);

sceKernelGetProcessTimeWideCore

Version NID
0.990-3.740.011 0x89DA0967
SceUInt64 sceKernelGetProcessTimeWideCore(void);

sceKernelLibcClock

Version NID
0.990-3.740.011 0x9E45DA09
SceUInt64 sceKernelLibcClock(void);

_sceKernelExitProcessForUser

Version NID
0.990-3.740.011 0xC053DC6B
int _sceKernelExitProcessForUser(int status);

sceKernelGetStdin

Version NID
0.931-3.740.011 0xC1727F59

Returns the file descriptor of the current process stdin.

SceUID sceKernelGetStdin(void);

sceKernelGetCurrentProcess

Version NID
1.000.071-3.740.011 0xCD248267

Wrapper to sceKernelGetProcessIdForDriver.

Returns the process ID.

SceUID sceKernelGetCurrentProcess(void);

sceKernelIsGameBudget

Version NID
0.990-3.740.011 0xCE0F02F0
SceBool sceKernelIsGameBudget(void);

sceKernelGetProcessTimeCore

Version NID
0.990-3.740.011 0xD37A8437
int sceKernelGetProcessTimeCore(SceUInt64 *pTime);

sceKernelGetStdout

Version NID
0.931-3.740.011 0xE5AA625C

Returns the file descriptor of the current process stdout.

SceUID sceKernelGetStdout(void);

sceKernelGetRemoteProcessTime

Version NID
0.990-3.740.011 0xE6E9FCA3
int sceKernelGetRemoteProcessTime(SceUID pid, SceUInt64 *pTime);

sceKernelCallAbortHandler

Version NID
0.990 not present
1.000.071-3.740.011 0xEB6E50BB

sceKernelGetProcessTimeLowCore

Version NID
0.990-3.740.011 0xF5D0D4C6
int sceKernelGetProcessTimeLowCore(void);

sceKernelGetStderr

Version NID
0.931-3.740.011 0xFA5E3ADA

Returns the file descriptor of the current process stderr.

SceUID sceKernelGetStderr(void);

sceKernelCDialogSessionClose

Version NID
0.990 not present
1.800.071-3.740.011 0xDB4CC1D0

sceKernelCDialogSetLeaseLimit

Version NID
0.990 not present
2.100.081-3.740.011 0xEC8DDAAD

sceKernelGetExtraTty

Version NID
0.990 not present
1.800.071-3.740.011 0x2D635A00

sceKernelLibcGmtime_r

Version NID
0.990 not present
2.000.081-3.740.011 0xBCA437CD

sceKernelLibcLocaltime_r

Version NID
0.990 not present
2.000.081-3.740.011 0x94F041ED

sceKernelLibcMktime

Version NID
0.990 not present
2.000.081-3.740.011 0x890BDC39

SceProcessmgrForDriver

SceProcessmgrForDriver_C5CF15ED

Version NID
3.60 0xC5CF15ED

SceProcessmgrForDriver_54D469E2

Version NID
3.60 0x54D469E2
int SceProcessmgrForDriver_54D469E2(SceUInt32 *value);

sceKernelAllocOwnProcessCDialogHeapForDriver

Version NID
3.60 0x3B33FFBA

This is a guessed name.

void *sceKernelAllocOwnProcessCDialogHeapForDriver(SceSize length, void *opt);

SceProcessmgrForDriver_1C70501E

Version NID
3.60 0x1C70501E

sceKernelFreeOwnProcessCDialogHeapForDriver

Version NID
3.60 0x11BEFBBE

This is a guessed name.

int sceKernelFreeOwnProcessCDialogHeapForDriver(ScePVoid ptr);

sceKernelGetProcessInfoListForDriver

Version NID
3.60-3.65 0xE8005AFC

This is a guessed name.

Except if pid == KERNEL_PID.

Wrapper to internal_subroutine(visibilityLevel, pVec, vecSize, puiNum, 0);.

int sceKernelGetProcessInfoListForDriver(SceUInt32 visibilityLevel, SceKernelProcessInfo* pVec, SceSize vecSize, SceUInt32* puiNum);

sceKernelGetProcessInfoList2ForDriver

Version NID
3.60-3.65 0xBA0A06A4

This is a guessed name.

Even if pid == KERNEL_PID.

Wrapper to internal_subroutine(visibilityLevel, pVec, vecSize, puiNum, 1);.

int sceKernelGetProcessInfoList2ForDriver(SceUInt32 visibilityLevel, SceKernelProcessInfo* pVec, SceSize vecSize, SceUInt32* puiNum);

sceKernelGetBudgetInfoForDriver

Version NID
3.60-3.65 0x46221964

Information size is 0x88 bytes.

int sceKernelGetBudgetInfoForDriver(SceUID pid, void *pInfo);

sceKernelRegisterGetProcessTimeFuncForDriver

Version NID
3.60-3.65 0x4140D633

This is a guessed name.

typedef struct SceProcessTimeFuncTable { // size is 0x24 on FW 3.60
    SceSize size; // Size of this structure
    void* _sceRtcGetCurrentTick;
    void* sceKernelLibcTime;
    void* sceKernelLibcGettimeofday;
    void* sceKernelLibcGmtime_r;
    void* sceKernelLibcLocaltime_r;
    void* sceKernelLibcMktime;
    void* sceRtcGetCurrentTick;
    void* sceRtcGetCurrentSecureTick;
} SceProcessTimeFuncTable;

int sceKernelRegisterGetProcessTimeFuncForDriver(const SceProcessTimeFuncTable *pTable);

sceKernelProcessRngForDriver

Version NID
0.990 not present
3.60-3.65 0x2CEB1C7A

This is a guessed name.

Cleans process memory in range with pseudo random values. Both address and length must be aligned on 4 bytes (DWORD size). Uses SceSysmem#sceXorshift128ForDriver to update each DWORD in range.

int sceKernelProcessRngForDriver(SceUID pid, void *dst, SceSize length);

sceKernelIsProcessCoredumpHandlerRegisteredForDriver

Version NID
3.60-3.65 0xA1CF74FA

This is a guessed name.

int sceKernelIsProcessCoredumpHandlerRegisteredForDriver(SceUID pid);

sceKernelCallCoredumpHandlerForDriver

Version NID
3.60-3.65 0xB559410A

Temp name was sceKernelInvokeProcessCoredumpHandlerForDriver.

int sceKernelCallCoredumpHandlerForDriver(SceUID pid);

SceProcessmgrForDriver_879153D9

Version NID
3.60-3.65 0x879153D9

Maybe get model bool param.

int SceProcessmgrForDriver_879153D9(SceUID pid, SceUInt32 a2);

SceProcessmgrForDriver_E1A67C86

Version NID
3.60-3.65 0xE1A67C86

Maybe get some count.

int SceProcessmgrForDriver_E1A67C86(SceUID pid, SceUInt32 *a2);

sceKernelGetProcessActiveTimeForDriver

Version NID
3.60-3.65 0x5BDA978F

This is a guessed name.

int sceKernelGetProcessActiveTimeForDriver(SceUID pid, SceUInt64 *pTime);

SceProcessmgrForDriver_8CB01675

Version NID
3.60-3.65 0x8CB01675
int SceProcessmgrForDriver_8CB01675(SceUID pid, SceUInt64 *time, SceUInt64 src_time);

SceProcessmgrForDriver_5E882B60

Version NID
0.990-3.65 0x5E882B60

Registers some callback.

int SceProcessmgrForDriver_5E882B60(void (* cb)(int a1, int a2));

sceKernelGetCurrentProcessIdForDriver

Version NID
0.931 0x3D4C250E
3.60-3.65 not present

Returns the current process ID.

Wrapper for SceKernelThreadMgr sceKernelGetProcessIdForKernel.

SceUID sceKernelGetCurrentProcessIdForDriver(void);

sceKernelAllocOwnProcessHeapForDriver

Version NID
0.931-3.65 0x5468892A
void *sceKernelAllocOwnProcessHeapForDriver(SceSize size, SceKernelHeapMemoryOpt *pOpt);

sceKernelAllocRemoteProcessHeapForDriver

Version NID
0.931-3.65 0x00B1CA0F
void *sceKernelAllocRemoteProcessHeapForDriver(SceUID pid, SceSize size, SceKernelHeapMemoryOpt *pOpt);

sceKernelFreeCurrentProcessHeapForDriver

Version NID
0.931-3.65 0xFC2A424E
int sceKernelFreeCurrentProcessHeapForDriver(void *ptr);

sceKernelFreeRemoteProcessHeapForDriver

Version NID
0.931-3.65 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.65 0x65B120B8

This function queries the status of a given process. It seems that 0x10 is related to suspension status.

/**
 * @brief       Get the status of a given process.
 * @param[in]   pid The process ID to query.
 * @param[out]  pStatus The status of the process (?bit field?).
 * @return      Zero on success, < 0 on error.
 */
int sceKernelGetProcessStatusForDriver(SceUID pid, SceUInt32 *pStatus);

sceKernelSetProcessStatusForDriver

Version NID
0.931-3.65 0x1D0F3185
int sceKernelSetProcessStatusForDriver(SceUID pid, SceUInt32 status);

sceKernelIsProcessSuspendingForDriver

Version NID
0.931-3.65 0x0CC5B30C

Return whether the process is suspending or not.

int sceKernelIsProcessSuspendingForDriver(SceUID pid);

sceKernelGetProcessTimeLowCoreForDriver

Version NID
3.60-3.65 0x02179E12
SceUInt32 sceKernelGetProcessTimeLowCoreForDriver(void);

sceKernelGetProcessTimeWideCoreForDriver

Version NID
3.60-3.65 0x82D94BE9
SceUInt64 sceKernelGetProcessTimeWideCoreForDriver(void);

sceKernelGetProcessTimeCoreForDriver

Version NID
3.60-3.65 0xEC283166
int sceKernelGetProcessTimeCoreForDriver(SceUInt64 *pTime);

sceKernelRegisterKPLSForDriver

Version NID
0.940-3.65 0x3801D7D6

Temp name was sceKernelCreateProcessLocalStorageForDriver.

Returns allocated KPLS' key on success. Up to 32 KPLS keys can be created.

int sceKernelRegisterKPLSForDriver(const char *name, SceSize size);

sceKernelGetCurrentKPLSForDriver

Version NID
0.990-3.65 0xEE694840

Temp name was sceKernelGetProcessLocalStorageAddrForDriver.

void *sceKernelGetCurrentKPLSForDriver(int key);

sceKernelGetRemoteKPLSForDriver

Version NID
0.931-3.68 0xAF80F39C

Temp name was sceKernelGetProcessLocalStorageAddrForPidForDriver.

This functions gets Remote Kernel Process Local Storage.

// key: index between 0 and 0x1F
// kpls_addr: pointer to area to store address of remote KPLS
// force_create: if set to true and if KPLS does not exist, it is created
int sceKernelGetRemoteKPLSForDriver(SceUID pid, SceUInt32 key, void **kpls_addr, SceBool force_create);

sceKernelGetRemoteProcessTimeForDriver

Version NID
3.60-3.65 0xC074EB31
int sceKernelGetRemoteProcessTimeForDriver(SceUID pid, SceUInt64 *pTime);

sceKernelIsCDialogAvailableForDriver

Version NID
3.60 0x2F6020B7
int sceKernelIsCDialogAvailableForDriver(void)

sceKernelIsGameBudgetForDriver

Version NID
3.60-3.65 0xF7A8BB25
int sceKernelIsGameBudgetForDriver(void);

SceProcessmgrForDriver_C715591F

Version NID
3.60-3.65 0xC715591F

Called by "sceProcessMgrLaunchAppFor" ?to check?.

int SceProcessmgrForDriver_C715591F(void);

sceKernelGetCompiledSdkVersionByPidForDriver

Version NID
3.60-3.65 0xD141C076
int sceKernelGetCompiledSdkVersionByPidForDriver(SceUID pid, SceUInt32 *puiSdkVer);

sceKernelRegisterCoredumpHandlerForDriver

Version NID
3.60-3.65 0x21A6F0EC
int sceKernelRegisterCoredumpHandlerForDriver(void *handler, SceSize size, void *memblock_addr);

sceKernelUnregisterCoredumpHandlerForDriver

Version NID
3.60-3.65 0x33B3D026
int sceKernelUnregisterCoredumpHandlerForDriver(void);

sceKernelSetSyscallTraceFlagForDriver

Version NID
3.60-3.65 0x24FA97A5
int sceKernelSetSyscallTraceFlagForDriver(SceUID pid, int flag);

sceKernelAllocRemoteCDialogHeapForDriver

Version NID
3.60-3.65 0x8A85FA28

sceKernelFreeRemoteCDialogHeapForDriver

Version NID
3.60-3.65 0xDD0A58D1

sceKernelGetProcessResourceLimitForDriver

Version NID
3.60-3.65 0xB80DBD53

sceKernelSetInitialPMCRForDriver

Version NID
3.60-3.65 0x61B9B6FA

Temp name was sceKernelSetProcessPMCRForDriver.

sceKernelGetPMCRForDriver

Version NID
3.60 0x594319C7

This is a guessed name. Temp name was sceKernelGetProcessPMCRForDriver.

int sceKernelGetPMCRForDriver(SceUID pid);

sceKernelSetInitialPMUSERENRForDriver

Version NID
3.60-3.65 0xB1C3EFCA

sceKernelSetPMUSERENRForDriver

Version NID
3.60-3.65 0x6599E5D9

SceProcessmgrForKernel

sceKernelChangeProcessCpuAffinityForKernel

Version NID
3.60 0x0A60B40A
3.65 0xF013B7F1

sceKernelEnablePHWPForKernel

Version NID
3.60 0x20174234
3.65 0x9DF739C7

sceKernelDisablePHWPForKernel

Version NID
3.60 0x62D048D2
3.65 0xA2EE1B7F

sceKernelGrowBudgetForKernel

Version NID
0.940-3.60 0x029378AC
3.65 0x48DD3348
SceInt32 sceKernelGrowBudgetForKernel(SceInt32 budgetId, SceInt32 idx, SceSize size);

sceKernelGetPhyMemPartForKernel

Version NID
3.60 0xCCB4289B
3.65 0x923AF3CC
// 1: Kernel
// 2: Tool
// 3: Game
// 4: PhyCont
// 5: Shared
// 6: Game CDialog
// 7: Shell

void *sceKernelGetPhyMemPartForKernel(SceUInt32 type);

sceKernelCreateProcessForKernel

Version NID
0.931-3.60 0x71CF71FD
3.65 0x68068618

Temp name was sceKernelLaunchAppForKernel.

Loads the ProcessImage after preparing the process's stuff (ProcCB, Budget, AddressSpace) then opens the tty console.

/**
 * @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
3.65 0x5137B783
/**
 * @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
3.65 0x026F3E87

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
3.65 0x1E5B38E5

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
3.65 0x5A57766C

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
3.65 0xD991C85E

Temp name was sceKernelGetProcessKernelBufForKernel.

Gets the process object associated to a PID.

SceUIDProcessObject* sceKernelUIDtoProcessForKernel(ScePID pid);

sceKernelGetProcessMainThreadForDebuggerForKernel

Version NID
0.931-3.60 0x95F9ED94
3.65 0xD20553C6

Temp name was sceKernelGetProcessMainThreadForKernel.

/**
 * @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-3.74 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
3.65 0x93B8E785

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
3.65 0x6894499C

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
3.65 0x8FB7FD50
/**
 * @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
3.65 0xEFBCF15B
/**
 * @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
3.65 0x905621F9
int sceKernelExitProcessForKernel(int status);

sceKernelSetProcessSelfAuthInfoForKernel

Version NID
0.931.010-2.120.011 0x5ABA2772
2.500.071-3.740.011 not present
int sceKernelSetProcessSelfAuthInfoForKernel(SceUID pid, SceSelfAuthInfo *self_auth_info);

sceKernelGetProcessSelfAuthInfoForKernel

Version NID
0.931-3.60 0xE4C83B0D
3.65 0x324F2B20

Temp name was sceKernelGetProcessAuthidForKernel.

SceSelfAuthInfo type is described in SceSblSsSmComm#Types.

int sceKernelGetProcessSelfAuthInfoForKernel(SceUID pid, SceSelfAuthInfo *self_auth_info);

sceKernelLibcTimeForKernel

Version NID
3.60 0x9E38C556
3.65 0xB0E076D6

sceKernelLibcGettimeofdayForKernel

Version NID
3.60 0xDE8B8B5E
3.65 0x014F5113

sceKernelGetCurrentTickForKernel

Version NID
3.60 0xD17D6110
3.65 0xD231AE5B

This is a guessed name.

_sceKernelGetCurrentTickForKernel

Version NID
3.60 0xACBAAB10
3.65 0x3EBC93BB

This is a guessed name.

sceKernelGetUIDProcessClassForKernel

Version NID
3.60 0xC6820972
3.65 0x98AE4BC8

Temp name was sceKernelGetClassForUid2ForKernel, sceKernelGetProcessClassForKernel.

SceClass *sceKernelGetUIDProcessClassForKernel(void);

sceKernelKillProcessForDebuggerForKernel

Version NID
0.931-3.60 0x90C27779
3.65 0x148E23E3
int sceKernelKillProcessForDebuggerForKernel(SceUID pid);

sceKernelKillProcessForKernel

Version NID
0.931-3.60 0xA1071106
3.65 0xF388F05C
// option: 0: flag 0x2, 1: flag 0x20, 2: flag 0x40
int sceKernelKillProcessForKernel(SceUID pid, SceInt32 option);

sceKernelGetMMUL1InfoForKernel

Version NID
0.931-0.990 0xC526C6F2
3.60-3.74 not present
int sceKernelGetMMUL1InfoForKernel(SceUID pid, const void *addr, void *pInfo);

sceKernelGetMMUL2InfoForKernel

Version NID
0.931 0xE2681221
3.60-3.74 not present
int sceKernelGetMMUL2InfoForKernel(SceUID pid, const void *addr, void *pInfo);

sceKernelWaitProcessEndForKernel

Version NID
0.931-3.60 0x0EE2658E
3.65 0x0B9BE51B
int sceKernelWaitProcessEndForKernel(SceUID pid, int *pResult, SceUInt32 *pTimeout);

sceKernelWaitProcessEventCompletionForKernel

Version NID
3.60 0x6A7FF80A
3.65 0x0F23A5ED

sceKernelGetPHWPForKernel

Version NID
0.931-3.60 0xC55BF6C3
3.65 0x6898F7A7
int sceKernelGetPHWPForKernel(SceUID pid, SceUInt32 a2, int *a3, int *a4);

sceKernelSetPHWPForKernel

Version NID
0.931-3.60 0x54D7B16A
3.65 0xB2421F93
int sceKernelSetPHWPForKernel(SceUID pid, int a2, int a3, int a4);

sceKernelGetPHBPForKernel

Version NID
0.931-3.60 0xA9C20202
3.65 0x060DA466
int sceKernelGetPHBPForKernel(SceUID pid, SceUInt32 a2, int *a3, int *a4);

sceKernelSetPHBPForKernel

Version NID
0.931-3.60 0x59FA3216
3.65 0x597E6D2C
int sceKernelSetPHBPForKernel(SceUID pid, int a2, int a3, int a4);

sceKernelGetProcessAppForKernel

Version NID
0.931-3.60 0x34FA9645
3.65 0xE5097B4F
int sceKernelGetProcessAppForKernel(SceUID pid);

sceKernelGetProcessParentIdForKernel

Version NID
0.931-3.60 0x3C4D2889
3.65 0xA5E55217

Returns the parent process's PID.

ScePID sceKernelGetProcessParentIdForKernel(SceUID pid);

sceKernelSuspendProcessForDebuggerForKernel

Version NID
0.931-3.60 0x234A80B6
3.65 0x4232517A
/**
 * @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.931-3.60 0xCF83C23B
3.65 0x1400A1F8
// FW 0.931 define
/**
 * @brief       Suspend a running process.
 * @param[in]   pid The process to suspend.
 * @return      Zero on success, < 0 on error.
 */
int sceKernelSuspendProcessForKernel(SceUID pid);

// FW 3.60 define
/**
 * @brief       Suspend a running process.
 * @param[in]   pid The process to suspend.
 * @param[in]   status The status to set to the process.
 * @param[out]  pTimeout Maybe the time spent to suspend the process.
 * @return      Zero on success, < 0 on error.
 */
int sceKernelSuspendProcessForKernel(SceUID pid, int status, int *pTimeout);

sceKernelGetProcessImageForDebuggerForKernel

Version NID
0.931-0.990 0xCF71D9DD
3.60-3.74 not present

Returns Process Image on success.

void *sceKernelGetProcessImageForDebuggerForKernel(SceUID pid);

sceKernelProcessAppendForKernel

Version NID
0.931-0.990 0xC4E349D5
3.60-3.74 not present
// if pid2 is not set, current pid is used instead
int sceKernelProcessAppendForKernel(SceUID pid1, SceUID pid2);

sceKernelProcessAssocAppForKernel

Version NID
0.931-3.60 0x76C89783
3.65 0x00DBA872
int sceKernelProcessAssocAppForKernel(SceUID pid, int unk_in);

sceKernelCreateBudgetForKernel

Version NID
0.931-3.60 0x05F74BAF
3.65 0xDC18FCEF
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
3.65 0x459A223B

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
3.65 0xCF9EC344

Uses SceSysmem#SceSysmemForKernel_54E85275 to get a 0xB0 bytes buffer.

int sceKernelGetBudgetInfoForDebuggerForKernel(SceUID budgetId, SceUInt32 level, SceKernelBudgetInfo *pInfo);

sceKernelGetProcessLibdbForKernel

Version NID
1.03-2.06 not present
2.10-3.61 0xC1C91BB2
3.65 0x3AF6B088

Temp name was sceKernelGetProcessModuleInfoForKernel.

SceKernelProcessLibdb* sceKernelGetProcessLibdbForKernel(SceUID pid);

sceKernelSetProcessLibdbForKernel

Version NID
2.10-3.60 0x7D8D7885
3.65 0x72F25C14

Temp name was sceKernelSetProcessModuleInfoForKernel.

int sceKernelSetProcessLibdbForKernel(SceUID pid, SceKernelProcessLibdb *pLibdb);

SceProcessmgrForKernel_B75FB970

Version NID
0.931.010-2.120.011 not present
2.500.071-3.610.011 0xB75FB970
3.630.000-3.740.011 0x8B4086AF

Increments Process UID Reference List counter.

Theoretically, it seems that up to 159 or 160 modules can be loaded.

// unk_bool depends of the process type
int SceProcessmgrForKernel_B75FB970(SceUID pid, SceBool unk_bool);

SceProcessmgrForKernel_0A5A2CF1

Version NID
0.931.010-2.120.011 not present
2.500.071-3.610.011 0x0A5A2CF1
3.630.000-3.740.011 0xF160B4D8

Decrements Process UID Reference List counter.

// unk_bool depends of the process type
int SceProcessmgrForKernel_0A5A2CF1(SceUID pid, SceBool unk_bool);

sceKernelGetProcessTypeForKernel

Version NID
0.990 not present
3.60 0x2ABFB6C1
3.65 0xB631C93B

Temp name was sceKernelGetProcessBudgetTypeForKernel.

SceProcessType sceKernelGetProcessTypeForKernel(SceUID pid);

sceKernelAllocRemoteToolHeapForKernel

Version NID
0.940-1.50 not present
3.60 0x3C5E2F08
3.65 0x51AF6FE6

Temp name was sceKernelAllocRemoteToolHeapMemoryForKernel, sceKernelProcessAllocKernelBudgetHeapMemoryForKernel.

Requires DIP switch 210. Allocates memory in target process' "tool" heap. Free memory with sceKernelFreeRemoteToolHeapForKernel.

void* sceKernelAllocRemoteToolHeapForKernel(SceUID pid, SceSize size);

sceKernelFreeRemoteToolHeapForKernel

Version NID
0.990 not present
3.60 0x41815DF2
3.65 0x2755CEDD

Temp name was sceKernelFreeRemoteToolHeapMemoryForKernel, sceKernelFreeRemoteProcessKernelHeapForKernel.

Requires DIP switch 210. Frees memory allocated with sceKernelAllocRemoteToolHeapMemoryForKernel.

SceInt32 sceKernelFreeRemoteToolHeapForKernel(SceUID pid, void* addr);

sceKernelGetProcessAddressSpaceForKernel

Version NID
0.931-3.60 0xC77C2085
3.65 0x9BC44974

This is a guessed name.

Returns specified process' Address Space object UID.

SceUID sceKernelGetProcessAddressSpaceForKernel(SceUID pid);

sceKernelResetGameBudgetForKernel

Version NID
3.60 0x15A93CD2
3.65 0x56657302

SceProcessmgrForKernel_E7174A8D

Version NID
3.60 0xE7174A8D
3.65 0x23EF9D8E

SceProcessmgrForKernel_381818A1

Version NID
3.60 0x381818A1
3.65 0xBC110987

SceProcessmgrForKernel_9321D0E5

Version NID
3.60 0x9321D0E5
3.65 0x9FA66773

SceProcessmgrForKernel_B7C91F6C

Version NID
3.60 0xB7C91F6C
3.65 0xDDE282CF

SceProcessmgrForKernel_1423FA86

Version NID
3.60 0x1423FA86
3.65 0xE025F5A9

Gets the value set by #SceProcessmgrForKernel_915AB8D6.

SceProcessmgrForKernel_915AB8D6

Version NID
3.60 0x915AB8D6
3.65 0xFC80A606

Sets a value to ProcessCB->data_0x288.

SceProcessmgrForKernel_89A0A910

Version NID
3.60 0x89A0A910
3.65 0x6DEC45C3

Gets the value set by #SceProcessmgrForKernel_F7FFECF3.

SceProcessmgrForKernel_F7FFECF3

Version NID
3.60 0xF7FFECF3
3.65 0x1197DB8A

SceProcessmgrForKernel_8729DE79

Version NID
3.60 0x8729DE79
3.65 0x344DDE0B

Calls SceSysmem#SceSysrootForDriver_51F9C118 and SceSysmem#SceSysrootForDriver_582616EC.

sceKernelGetProcessIdListForKernel

Version NID
3.60 0xC031BFE0
3.65 0xEFFF2975

This is a guessed name.

Wrapper to internal_subroutine(visibilityLevel, pVec, vecSize, puiNum, 2);.

int sceKernelGetProcessIdListForKernel(SceUInt32 visibilityLevel, SceUID* pVec, SceSize vecSize, SceUInt32* puiNum);

SceProcessmgrForKernel_5AC72C5A

Version NID
3.60 0x5AC72C5A
3.65 0xD5DF895D

Same as #SceProcessmgrForKernel_C7E75A8C but signals sema instead of waiting sema.

SceProcessmgrForKernel_C7E75A8C

Version NID
3.60 0xC7E75A8C
3.65 0x8321B827

Same as #SceProcessmgrForKernel_5AC72C5A but waits sema instead of signaling sema.