Difference between revisions of "SceProcessmgr"

From Vita Development Wiki
Jump to navigation Jump to search
 
(108 intermediate revisions by 2 users not shown)
Line 7: Line 7:
 
! Version !! World !! Privilege
 
! Version !! World !! Privilege
 
|-
 
|-
| 1.69-3.60 || Non-secure || Kernel
+
| 0.931.010-3.740.011 || Non-secure || Kernel
 
|}
 
|}
  
Line 18: Line 18:
 
! Version !! Name !! World !! Visibility !! NID
 
! Version !! Name !! World !! Visibility !! NID
 
|-
 
|-
| 1.69-3.73 || [[SceProcessmgr#SceProcessmgr|SceProcessmgr]] || Non-secure || User || 0x2DD91812
+
| 0.931.010-3.740.011 || [[SceProcessmgr#SceProcessmgr|SceProcessmgr]] || Non-secure || User || 0x2DD91812
 
|-
 
|-
| 1.69-3.73 || [[SceProcessmgr#SceProcessmgrForDriver|SceProcessmgrForDriver]] || Non-secure || Kernel || 0x746EC971
+
| 0.931.010-3.740.011 || [[SceProcessmgr#SceProcessmgrForDriver|SceProcessmgrForDriver]] || Non-secure || Kernel || 0x746EC971
 
|-
 
|-
| 1.69-3.61 || [[SceProcessmgr#SceProcessmgrForKernel|SceProcessmgrForKernel]] || Non-secure || Kernel || 0x7A69DE86
+
| 0.931.010-3.610.011 || [[SceProcessmgr#SceProcessmgrForKernel|SceProcessmgrForKernel]] || Non-secure || Kernel || 0x7A69DE86
 
|-
 
|-
| 3.63-3.73 || [[SceProcessmgr#SceProcessmgrForKernel|SceProcessmgrForKernel]] || Non-secure || Kernel || 0xEB1F8EF7
+
| 3.630.000-3.740.011 || [[SceProcessmgr#SceProcessmgrForKernel|SceProcessmgrForKernel]] || Non-secure || Kernel || 0xEB1F8EF7
 
|}
 
|}
  
Line 36: Line 36:
  
 
typedef SceUInt32 SceProcessType;
 
typedef SceUInt32 SceProcessType;
#define SCE_PROCESS_TYPE_GAME 0x01000000 //Old FW value is 0x01010001
+
#define SCE_PROCESS_TYPE_GAME 0x01000000 // Value on old System Software version is 0x01010001
#define SCE_PROCESS_TYPE_MINI_APPLICATION 0x02000000 //Old FW value is 0x02010001
+
#define SCE_PROCESS_TYPE_MINI_APPLICATION 0x02000000 // Value on old System Software version is 0x02010001
#define SCE_PROCESS_TYPE_SYSTEM_APPLICATION 0x04000000 //Old FW value is 0x04020102
+
#define SCE_PROCESS_TYPE_SYSTEM_APPLICATION 0x04000000 // Value on old System Software version is 0x04020102
#define SCE_PROCESS_TYPE_KERNEL 0x05000000 //Old FW value is 0x10030103
+
#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_SYSTEM_CORE 0
Line 47: Line 47:
 
SceSize size;          // Size of this structure
 
SceSize size;          // Size of this structure
 
SceUID pid;            // Process ID
 
SceUID pid;            // Process ID
int AS_uid_maybe;       // Can be got by SceProcessmgrForKernel_C77C2085, used by sceKernelGetMMUL1InfoForKernel
+
SceUID addressSpaceId;
 
int unk_C;              // processCreationFlags
 
int unk_C;              // processCreationFlags
 
int status;            // Process status. ex: suspended = 0x11/0x10011, started = |2.
 
int status;            // Process status. ex: suspended = 0x11/0x10011, started = |2.
 
SceUID ppid;            // Parent process ID
 
SceUID ppid;            // Parent process ID
int unk_18;             // some UID related to budget
+
SceUID budgetId;
 
int cpuAffinity;        // CPU affinity. ex: 7
 
int cpuAffinity;        // CPU affinity. ex: 7
 
int unk_20;            // might be initial priority. ex: 0x7F (127)
 
int unk_20;            // might be initial priority. ex: 0x7F (127)
 
SceUID modid;          // Module ID
 
SceUID modid;          // Module ID
 
void *entrypoint;      // Process entry point
 
void *entrypoint;      // Process entry point
SceUInt32 process_type; // ?good offset (to check)?
+
SceUInt32 process_type;
 
char name[0x20];        // Process name. ProcessObject->loadprocessparam.module_name if non-empty, else copy from sceGUIDGetName2ForDriver if not NULL, else \0
 
char name[0x20];        // Process name. ProcessObject->loadprocessparam.module_name if non-empty, else copy from sceGUIDGetName2ForDriver if not NULL, else \0
int unk_4C;
 
 
void *unk_50;          // ?maxFHCount?
 
void *unk_50;          // ?maxFHCount?
 
void *unk_54;          // ?EntryHeap_uid?
 
void *unk_54;          // ?EntryHeap_uid?
SceUID unk_58;
+
SceUID entryHeapId;     // GUID/PUID EntryHeap GUID
 
int unk_5C;            // ex: -1
 
int unk_5C;            // ex: -1
 
int unk_60;            // ?module_inhibit_state?
 
int unk_60;            // ?module_inhibit_state?
 
int unk_64;            // ex: 0x32
 
int unk_64;            // ex: 0x32
int unk_68;
+
void *KPLS_slots[0x20];
int unk_6C;
 
int unk_70;
 
void *unk_74[4 * 5 + 1];
 
int unk_78[8];
 
 
} SceKernelProcessInfo;
 
} SceKernelProcessInfo;
  
typedef struct SceKernelProcessModuleInfo { // size is 0x24
+
// Temp name was SceKernelProcessModuleInfo
 +
typedef struct SceKernelProcessLibdb { // size is 0x24
 
SceUID pid;
 
SceUID pid;
 
SceModuleLibraryExportInfo_t *lib_export_info;
 
SceModuleLibraryExportInfo_t *lib_export_info;
Line 83: Line 79:
 
void *data_0x1C;
 
void *data_0x1C;
 
int cpu_addr;
 
int cpu_addr;
} SceKernelProcessModuleInfo;
+
} SceKernelProcessLibdb;
  
 
typedef struct SceKernelBudgetInfo { // size is 0x480 on FW 3.60
 
typedef struct SceKernelBudgetInfo { // size is 0x480 on FW 3.60
Line 95: Line 91:
 
} SceKernelBudgetInfo;
 
} SceKernelBudgetInfo;
  
typedef struct SceKernelProcessOpt { // size is 0x14 or 0x1C on FW 0.931, 0x20 on FW 0.990, 0x40 on FW 3.60
+
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
 
   SceSize size; // Size of this structure
 
   SceUInt32 unk_4;
 
   SceUInt32 unk_4;
Line 106: Line 102:
 
} SceKernelProcessOpt;
 
} SceKernelProcessOpt;
  
typedef struct SceKernelProcessOpt_360 { // size is 0x40
+
// 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
 
SceSize size; // Size of this structure
uint32_t some_size;
+
int attr;
int unk_0x08;
+
int initPriority;
 
int unk_0x0C;
 
int unk_0x0C;
 
 
int unk_0x10;
 
int unk_0x10;
 
int unk_0x14;
 
int unk_0x14;
SceUID unk_0x18;
+
int budgetId;
 
SceUID ppid;
 
SceUID ppid;
 
 
int unk_0x20;
 
int unk_0x20;
int unk_0x24;
+
SceAppMgrLaunchParam *unk_0x24;
const void *klicense;
+
const void *klicensee;
 
SceSize file_open_max_num;
 
SceSize file_open_max_num;
 
 
SceSize dir_open_max_level;
 
SceSize dir_open_max_level;
 
int unk_0x34;
 
int unk_0x34;
 
int unk_0x38;
 
int unk_0x38;
 
int unk_0x3C; // some count
 
int unk_0x3C; // some count
} SceKernelProcessOpt_360;
+
} SceKernelProcessOpt_2;
  
 
typedef struct SceKernelBootParam { // size is up to 0x100
 
typedef struct SceKernelBootParam { // size is up to 0x100
Line 137: Line 131:
 
   SceUInt32 unk_1C;
 
   SceUInt32 unk_1C;
 
} SceKernelBootParam;
 
} SceKernelBootParam;
 
typedef struct SceKernelProcessParam {
 
  char[4] magic; // "PSP2"
 
  SceUInt32 unk_4;
 
  SceUInt32 unk_8;
 
  SceUInt32 unk_SceLibKernel_9F793F84; // return value of SceLibKernel_9F793F84 and used by SceShell for PSN auth
 
} SceKernelProcessParam;
 
  
 
typedef struct SceLibkernelAddresses { // size is 0x1C on FW 3.60
 
typedef struct SceLibkernelAddresses { // size is 0x1C on FW 3.60
Line 205: Line 192:
 
   SceKernelModuleProcInfo_t* proc_module_info;
 
   SceKernelModuleProcInfo_t* proc_module_info;
 
   int32_t unkA0; // maybe unsigned
 
   int32_t unkA0; // maybe unsigned
   int8_t[0x10] random_data; // Filled using sceMt19937GlobalUIntInRangeForDriver, then SceKernelUtilsForDriver_B55C69B7 called on it
+
   int8_t random_data[0x10]; // Filled using sceMt19937GlobalUIntInRangeForDriver, then SceKernelUtilsForDriver_B55C69B7 called on it
 
   uint32_t unkA4;
 
   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
 
   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;
 
   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 unk1E4; // maybe unsigned
 
   int32_t unk1E8; // maybe unsigned
 
   int32_t unk1E8; // maybe unsigned
Line 331: Line 326:
 
   } list_entry;
 
   } list_entry;
 
} SceUIDProcessObject;
 
} SceUIDProcessObject;
 +
 +
typedef struct SceKernelTimeval {
 +
SceInt32 sec;
 +
SceInt32 usec;
 +
} SceKernelTimeval;
 +
 +
typedef struct SceKernelTimezone {
 +
SceUInt64 value;
 +
} SceKernelTimezone;
 
</source>
 
</source>
  
Line 340: Line 344:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x0039BE45
+
| 0.931.010-3.740.011 || 0x0039BE45
 
|}
 
|}
  
Line 350: Line 354:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-1.50 || not present
 
|-
 
|-
| 1.69-3.60 || 0x03A48771
+
| 1.600.061-3.740.011 || 0x03A48771
 
|}
 
|}
  
Line 360: Line 364:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-1.50 || not present
 
|-
 
|-
| 1.69-3.60 || 0x10C52C95
+
| 1.600.061-3.740.011 || 0x10C52C95
 
|}
 
|}
  
Line 370: Line 374:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-1.06 || not present
 
|-
 
|-
| 1.69-3.60 || 0x143BC4D6
+
| 1.500.151-3.740.011 || 0x143BC4D6
 
|}
 
|}
  
Line 382: Line 386:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x2252890C
+
| 0.931.010 || not present
 +
|-
 +
| 0.940-3.740.011 || 0x2252890C
 
|}
 
|}
  
Line 392: Line 398:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x2BE3E066
+
| 0.931.010 || not present
 +
|-
 +
| 0.940-3.740.011 || 0x2BE3E066
 
|}
 
|}
  
<source lang="C">SceKernelProcessParam *sceKernelGetProcessParam(void);</source>
+
Gets the process' [[PRX#NONAME_exports|SceProcessParam]].
 +
 
 +
<source lang="C">SceProcessParam *sceKernelGetProcessParam(void);</source>
  
 
=== _sceKernelGetTimer5Reg ===
 
=== _sceKernelGetTimer5Reg ===
Line 402: Line 412:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-0.990 || not present
 
|-
 
|-
| 1.69-3.60 || 0x2F73D72F
+
| 1.000.071-3.65 || 0x2F73D72F
 
|}
 
|}
  
Line 412: Line 422:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x466C0CBD
+
| 0.931.010-3.740.011 || 0x466C0CBD
 
|}
 
|}
  
Line 422: Line 432:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x4B879059
+
| 0.931.010-3.740.011 || 0x4B879059
 
|}
 
|}
  
<source lang="C">int sceKernelLibcGettimeofday(SceUInt64 *a1, SceUInt64 *a2);</source>
+
<source lang="C">int sceKernelLibcGettimeofday(SceKernelTimeval *tv, SceKernelTimezone *tz);</source>
  
 
=== _sceKernelRegisterExitAddress ===
 
=== _sceKernelRegisterExitAddress ===
Line 432: Line 442:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-0.990 || 0x0278DFB7
+
| 0.931.010-0.990 || 0x0278DFB7
 
|-
 
|-
| 3.60 || not present
+
| 1.000.071-3.740.011 || not present
 
|}
 
|}
  
Line 446: Line 456:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-0.990 || not present
 
|-
 
|-
| 1.69-3.60 || 0x56C2E8FF
+
| 1.000.071-3.740.011 || 0x56C2E8FF
 
|}
 
|}
  
Line 458: Line 468:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.65 || 0x5EC77870
+
| 0.931.010-0.940 || not present
 +
|-
 +
| 0.990-3.740.011 || 0x5EC77870
 
|}
 
|}
  
Line 471: Line 483:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.65 || 0x973A4527
+
| 0.931.010-0.940 || not present
 +
|-
 +
| 0.990-3.740.011 || 0x973A4527
 
|}
 
|}
  
Line 484: Line 498:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x7AA73378
+
| 0.931.010-3.740.011 || 0x7AA73378
 
|}
 
|}
 +
 +
Lock the process something.
  
 
<source lang="C">int sceKernelPowerLock(SceKernelPowerTickType type);</source>
 
<source lang="C">int sceKernelPowerLock(SceKernelPowerTickType type);</source>
Line 494: Line 510:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x89DA0967
+
| 0.931.010 || not present
 +
|-
 +
| 0.940-3.740.011 || 0x89DA0967
 
|}
 
|}
  
Line 504: Line 522:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x9E45DA09
+
| 0.931.010 || not present
 +
|-
 +
| 0.940-3.740.011 || 0x9E45DA09
 
|}
 
|}
  
Line 514: Line 534:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0xC053DC6B
+
| 0.931.010-3.740.011 || 0xC053DC6B
 
|}
 
|}
  
Line 524: Line 544:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xC1727F59
+
| 0.931.010-3.740.011 || 0xC1727F59
 
|}
 
|}
  
Returns the fd of the current process stdin.
+
Returns the file descriptor of the current process stdin.
  
 
<source lang="C">SceUID sceKernelGetStdin(void);</source>
 
<source lang="C">SceUID sceKernelGetStdin(void);</source>
Line 536: Line 556:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 1.69-3.60 || 0xCD248267
+
| 0.931.010-3.740.011 || 0xCD248267
 
|}
 
|}
  
Line 550: Line 570:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0xCE0F02F0
+
| 0.931.010-0.940 || not present
 +
|-
 +
| 0.990-3.740.011 || 0xCE0F02F0
 
|}
 
|}
  
Line 560: Line 582:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0xD37A8437
+
| 0.931.010 || not present
 +
|-
 +
| 0.940-3.740.011 || 0xD37A8437
 
|}
 
|}
  
Line 570: Line 594:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xE5AA625C
+
| 0.931.010-3.740.011 || 0xE5AA625C
 
|}
 
|}
  
Returns the fd of the current process stdout.
+
Returns the file descriptor of the current process stdout.
  
 
<source lang="C">SceUID sceKernelGetStdout(void);</source>
 
<source lang="C">SceUID sceKernelGetStdout(void);</source>
Line 582: Line 606:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0xE6E9FCA3
+
| 0.931.010|| not present
 +
|-
 +
| 0.940-3.740.011 || 0xE6E9FCA3
 
|}
 
|}
  
Line 592: Line 618:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-0.990 || not present
 
|-
 
|-
| 1.69-3.60 || 0xEB6E50BB
+
| 1.000.071-3.740.011 || 0xEB6E50BB
 
|}
 
|}
  
Line 602: Line 628:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0xF5D0D4C6
+
| 0.931.010 || not present
 +
|-
 +
| 0.940-3.740.011 || 0xF5D0D4C6
 
|}
 
|}
  
Line 612: Line 640:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xFA5E3ADA
+
| 0.931.010-3.740.011 || 0xFA5E3ADA
 
|}
 
|}
  
Returns the fd of the current process stderr.
+
Returns the file descriptor of the current process stderr.
  
 
<source lang="C">SceUID sceKernelGetStderr(void);</source>
 
<source lang="C">SceUID sceKernelGetStderr(void);</source>
Line 624: Line 652:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-1.692.000 || not present
 
|-
 
|-
| 3.60 || 0xDB4CC1D0
+
| 1.800.071-3.740.011 || 0xDB4CC1D0
 
|}
 
|}
  
Line 634: Line 662:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-2.06 || not present
 
|-
 
|-
| 3.60 || 0xEC8DDAAD
+
| 2.100.081-3.740.011 || 0xEC8DDAAD
 
|}
 
|}
  
Line 644: Line 672:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-1.692.000 || not present
 
|-
 
|-
| 3.60 || 0x2D635A00
+
| 1.800.071-3.740.011 || 0x2D635A00
 
|}
 
|}
  
Line 654: Line 682:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-1.81 || not present
 
|-
 
|-
| 3.60 || 0xBCA437CD
+
| 2.000.081-3.740.011 || 0xBCA437CD
 
|}
 
|}
  
Line 664: Line 692:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-1.81 || not present
 
|-
 
|-
| 3.60 || 0x94F041ED
+
| 2.000.081-3.740.011 || 0x94F041ED
 
|}
 
|}
  
Line 674: Line 702:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931.010-1.81 || not present
 
|-
 
|-
| 3.60 || 0x890BDC39
+
| 2.000.081-3.740.011 || 0x890BDC39
 
|}
 
|}
  
== SceProcessmgrForDriver ==
+
=== SceProcessmgr_AAE09BC5 ===
 
 
=== sceKernelGetBudgetInfoForDriver ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x46221964
+
| 0.931.010 || not present
 +
|-
 +
| 0.940 || 0xAAE09BC5
 +
|-
 +
| 1.000.071-3.740.011 || not present
 
|}
 
|}
  
Information size is 0x88 bytes.
+
Calls [[SceSysmem#sceKernelPowerLockForDriver]].
  
<source lang="C">int sceKernelGetBudgetInfoForDriver(SceUID pid, void *pInfo);</source>
+
<source lang="C">int SceProcessmgr_AAE09BC5(SceKernelPowerTickType type);</source>
  
=== sceKernelRegisterGetProcessTimeFuncForDriver ===
+
=== SceProcessmgr_B2BA89FD ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x4140D633
+
| 0.931.010 || not present
 +
|-
 +
| 0.940 || 0xB2BA89FD
 +
|-
 +
| 1.000.071-3.740.011 || not present
 
|}
 
|}
  
This is a guessed name.
+
Calls [[SceSysmem#sceKernelPowerUnlockForDriver]].
  
<source lang="C">int sceKernelRegisterGetProcessTimeFuncForDriver(const void *struct_ptr);</source>
+
<source lang="C">int SceProcessmgr_B2BA89FD(SceKernelPowerTickType type);</source>
  
=== sceKernelProcessRngForDriver ===
+
== SceProcessmgrForDriver ==
 +
 
 +
=== SceProcessmgrForDriver_C5CF15ED ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 3.60 || 0xC5CF15ED
|-
 
| 3.60 || 0x2CEB1C7A
 
 
|}
 
|}
  
This is a guessed name.
+
Gets some info.
  
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.
+
<source lang="C">int SceProcessmgrForDriver_C5CF15ED(SceUInt32 index, void *info);</source>
 
 
<source lang="C">int sceKernelProcessRngForDriver(SceUID pid, void *dst, SceSize length);</source>
 
  
=== sceKernelIsProcessCoredumpHandlerRegisteredForDriver ===
+
=== sceKernelGetSyscallTraceFlagForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xA1CF74FA
+
| 3.60 || 0x54D469E2
 
|}
 
|}
  
 
This is a guessed name.
 
This is a guessed name.
  
<source lang="C">int sceKernelIsProcessCoredumpHandlerRegisteredForDriver(SceUID pid);</source>
+
Get current process syscallTraceFlag.
 +
 
 +
<source lang="C">int sceKernelGetSyscallTraceFlagForDriver(SceUInt32 *value);</source>
  
=== sceKernelInvokeProcessCoredumpHandlerForDriver ===
+
=== sceKernelAllocOwnProcessCDialogHeapForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xB559410A
+
| 3.60 || 0x3B33FFBA
 
|}
 
|}
  
 
This is a guessed name.
 
This is a guessed name.
  
<source lang="C">int sceKernelInvokeProcessCoredumpHandlerForDriver(SceUID pid);</source>
+
<source lang="C">void *sceKernelAllocOwnProcessCDialogHeapForDriver(SceSize length, void *opt);</source>
  
=== SceProcessmgrForDriver_879153D9 ===
+
=== SceProcessmgrForDriver_1C70501E ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x879153D9
+
| 3.60 || 0x1C70501E
 
|}
 
|}
  
Maybe get model bool param.
+
=== sceKernelFreeOwnProcessCDialogHeapForDriver ===
 
+
{| class="wikitable"
<source lang="C">int SceProcessmgrForDriver_879153D9(SceUID pid, SceUInt32 a2);</source>
+
|-
 
 
=== SceProcessmgrForDriver_E1A67C86 ===
 
{| class="wikitable"
 
|-
 
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xE1A67C86
+
| 3.60 || 0x11BEFBBE
 
|}
 
|}
  
Maybe get some count.
+
This is a guessed name.
  
<source lang="C">int SceProcessmgrForDriver_E1A67C86(SceUID pid, SceUInt32 *a2);</source>
+
<source lang="C">int sceKernelFreeOwnProcessCDialogHeapForDriver(ScePVoid ptr);</source>
  
=== sceKernelGetProcessActiveTimeForDriver ===
+
=== sceKernelGetProcessInfoListForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x5BDA978F
+
| 3.60-3.65 || 0xE8005AFC
 
|}
 
|}
  
 
This is a guessed name.
 
This is a guessed name.
  
<source lang="C">int sceKernelGetProcessActiveTimeForDriver(SceUID pid, SceUInt64 *pTime);</source>
+
Except if pid == KERNEL_PID.
 +
 
 +
Wrapper to <code>internal_subroutine(visibilityLevel, pVec, vecSize, puiNum, 0);</code>.
 +
 
 +
<source lang="C">int sceKernelGetProcessInfoListForDriver(SceUInt32 visibilityLevel, SceKernelProcessInfo* pVec, SceSize vecSize, SceUInt32* puiNum);</source>
  
=== SceProcessmgrForDriver_8CB01675 ===
+
=== sceKernelGetProcessInfoList2ForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x8CB01675
+
| 3.60-3.65 || 0xBA0A06A4
 
|}
 
|}
  
<source lang="C">int SceProcessmgrForDriver_8CB01675(SceUID pid, SceUInt64 *time, SceUInt64 src_time);</source>
+
This is a guessed name.
 +
 
 +
Even if pid == KERNEL_PID.
 +
 
 +
Wrapper to <code>internal_subroutine(visibilityLevel, pVec, vecSize, puiNum, 1);</code>.
 +
 
 +
<source lang="C">int sceKernelGetProcessInfoList2ForDriver(SceUInt32 visibilityLevel, SceKernelProcessInfo* pVec, SceSize vecSize, SceUInt32* puiNum);</source>
  
=== SceProcessmgrForDriver_5E882B60===
+
=== sceKernelGetBudgetInfoForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x5E882B60
+
| 3.60-3.65 || 0x46221964
 
|}
 
|}
  
Registers some callback.
+
Information size is 0x88 bytes.
  
<source lang="C">int SceProcessmgrForDriver_5E882B60(void (* cb)(int a1, int a2));</source>
+
<source lang="C">int sceKernelGetBudgetInfoForDriver(SceUID pid, void *pInfo);</source>
  
=== sceKernelGetCurrentProcessIdForDriver ===
+
=== sceKernelRegisterGetProcessTimeFuncForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931 || 0x3D4C250E
+
| 3.60-3.65 || 0x4140D633
|-
 
| 3.60 || not present
 
 
|}
 
|}
  
Returns the current process ID.
+
This is a guessed name.
  
Wrapper for SceKernelThreadMgr sceKernelGetProcessIdForKernel.
+
<source lang="C">
 +
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;
  
<source lang="C">SceUID sceKernelGetCurrentProcessIdForDriver(void);</source>
+
int sceKernelRegisterGetProcessTimeFuncForDriver(const SceProcessTimeFuncTable *pTable);
 +
</source>
  
=== sceKernelAllocCurrentProcessHeapForDriver ===
+
=== sceKernelProcessRngForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x5468892A
+
| 0.990 || not present
 +
|-
 +
| 3.60-3.65 || 0x2CEB1C7A
 
|}
 
|}
  
<source lang="C">void *sceKernelAllocCurrentProcessHeapForDriver(SceSize size, SceKernelHeapMemoryOpt *pOpt);</source>
+
This is a guessed name.
  
=== sceKernelAllocRemoteProcessHeapForDriver ===
+
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.
 +
 
 +
<source lang="C">int sceKernelProcessRngForDriver(SceUID pid, void *dst, SceSize length);</source>
 +
 
 +
=== sceKernelIsProcessCoredumpHandlerRegisteredForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.65 || 0x00B1CA0F
+
| 3.60-3.65 || 0xA1CF74FA
 
|}
 
|}
  
<source lang="C">void *sceKernelAllocRemoteProcessHeapForDriver(SceUID pid, SceSize size, SceKernelHeapMemoryOpt *pOpt);</source>
+
This is a guessed name.
 +
 
 +
<source lang="C">int sceKernelIsProcessCoredumpHandlerRegisteredForDriver(SceUID pid);</source>
  
=== sceKernelFreeCurrentProcessHeapForDriver ===
+
=== sceKernelCallCoredumpHandlerForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.65 || 0xFC2A424E
+
| 3.60-3.65 || 0xB559410A
 
|}
 
|}
  
<source lang="C">int sceKernelFreeCurrentProcessHeapForDriver(void *ptr);</source>
+
Temp name was sceKernelInvokeProcessCoredumpHandlerForDriver.
 +
 
 +
<source lang="C">int sceKernelCallCoredumpHandlerForDriver(SceUID pid);</source>
  
=== sceKernelFreeRemoteProcessHeapForDriver ===
+
=== SceProcessmgrForDriver_879153D9 ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.65 || 0x9C28EA9A
+
| 3.60-3.65 || 0x879153D9
 
|}
 
|}
  
<source lang="C">int sceKernelFreeRemoteProcessHeapForDriver(SceUID pid, void *ptr);</source>
+
Maybe get model bool param.
  
=== sceKernelGetProcessInfoForDriver ===
+
<source lang="C">int SceProcessmgrForDriver_879153D9(SceUID pid, SceUInt32 a2);</source>
 +
 
 +
=== SceProcessmgrForDriver_E1A67C86 ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.68 || 0x0AFF3EAE
+
| 3.60-3.65 || 0xE1A67C86
 
|}
 
|}
  
Retrieves process information.
+
Maybe get some count.
 +
 
 +
Related to display?
  
<source lang="C">int sceKernelGetProcessInfoForDriver(SceUID pid, SceKernelProcessInfo *pInfo);</source>
+
<source lang="C">int SceProcessmgrForDriver_E1A67C86(SceUID pid, SceUInt32 *a2);</source>
  
=== sceKernelGetProcessStatusForDriver ===
+
=== sceKernelGetProcessActiveTimeForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x65B120B8
+
| 3.60-3.65 || 0x5BDA978F
 
|}
 
|}
  
This function queries the status of a given process. It seems that 0x10 is related to suspension status.
+
This is a guessed name.
  
<source lang="C">
+
<source lang="C">int sceKernelGetProcessActiveTimeForDriver(SceUID pid, SceUInt64 *pTime);</source>
/**
 
* @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);
 
</source>
 
  
=== sceKernelSetProcessStatusForDriver ===
+
=== SceProcessmgrForDriver_8CB01675 ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.65 || 0x1D0F3185
+
| 3.60-3.65 || 0x8CB01675
 
|}
 
|}
  
<source lang="C">int sceKernelSetProcessStatusForDriver(SceUID pid, SceUInt32 status);</source>
+
<source lang="C">int SceProcessmgrForDriver_8CB01675(SceUID pid, SceUInt64 *time, SceUInt64 src_time);</source>
  
=== sceKernelIsProcessSuspendingForDriver ===
+
=== sceKernelSetProcessTerminatedHandlerForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.65 || 0x0CC5B30C
+
| 0.990-3.65 || 0x5E882B60
 
|}
 
|}
  
Return whether the process is suspending or not.
+
This is a guessed name.
 +
 
 +
Set Process Terminated callback. Used by [[SceAppMgr]].
  
<source lang="C">int sceKernelIsProcessSuspendingForDriver(SceUID pid);</source>
+
<source lang="C">int sceKernelSetProcessTerminatedHandlerForDriver(void (* cb)(int a1, int a2));</source>
  
=== sceKernelGetProcessTimeLowCoreForDriver ===
+
=== sceKernelGetCurrentProcessIdForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x02179E12
+
| 0.931 || 0x3D4C250E
 +
|-
 +
| 3.60-3.65 || not present
 
|}
 
|}
  
<source lang="C">unsigned int sceKernelGetProcessTimeLowCoreForDriver(void);</source>
+
Returns the current process ID.
 +
 
 +
Wrapper for SceKernelThreadMgr sceKernelGetProcessIdForKernel.
  
=== sceKernelGetProcessTimeWideCoreForDriver ===
+
<source lang="C">SceUID sceKernelGetCurrentProcessIdForDriver(void);</source>
 +
 
 +
=== sceKernelAllocOwnProcessHeapForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x82D94BE9
+
| 0.931-3.65 || 0x5468892A
 
|}
 
|}
  
<source lnag="C">uint64_t sceKernelGetProcessTimeWideCoreForDriver(void);</source>
+
<source lang="C">void *sceKernelAllocOwnProcessHeapForDriver(SceSize size, SceKernelHeapMemoryOpt *pOpt);</source>
  
=== sceKernelGetProcessTimeCoreForDriver ===
+
=== sceKernelAllocRemoteProcessHeapForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xEC283166
+
| 0.931-3.65 || 0x00B1CA0F
 
|}
 
|}
  
<source lang="C">int sceKernelGetProcessTimeCoreForDriver(uint64_t *pTime);</source>
+
<source lang="C">void *sceKernelAllocRemoteProcessHeapForDriver(SceUID pid, SceSize size, SceKernelHeapMemoryOpt *pOpt);</source>
  
=== sceKernelRegisterKPLSForDriver ===
+
=== sceKernelFreeCurrentProcessHeapForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.940-3.65 || 0x3801D7D6
+
| 0.931-3.65 || 0xFC2A424E
 
|}
 
|}
  
Temp name was sceKernelCreateProcessLocalStorageForDriver.
+
<source lang="C">int sceKernelFreeCurrentProcessHeapForDriver(void *ptr);</source>
  
Returns allocated KPLS' key on success. Up to 32 KPLS keys can be created.
+
=== sceKernelFreeRemoteProcessHeapForDriver ===
 
+
{| class="wikitable"
<source lang="C">int sceKernelRegisterKPLSForDriver(const char *name, SceSize size);</source>
 
 
 
=== sceKernelGetCurrentKPLSForDriver ===
 
{| class="wikitable"
 
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0xEE694840
+
| 0.931-3.65 || 0x9C28EA9A
 
|}
 
|}
  
Temp name was sceKernelGetProcessLocalStorageAddrForDriver.
+
<source lang="C">int sceKernelFreeRemoteProcessHeapForDriver(SceUID pid, void *ptr);</source>
  
<source lang="C">void *sceKernelGetCurrentKPLSForDriver(int key);</source>
+
=== sceKernelGetProcessInfoForDriver ===
 
 
=== sceKernelGetRemoteKPLSForDriver ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.68 || 0xAF80F39C
+
| 0.931-3.68 || 0x0AFF3EAE
 
|}
 
|}
  
Temp name was sceKernelGetProcessLocalStorageAddrForPidForDriver.
+
Retrieves process information.
  
This functions gets Remote Kernel Process Local Storage.
+
<source lang="C">int sceKernelGetProcessInfoForDriver(SceUID pid, SceKernelProcessInfo *pInfo);</source>
  
<source lang="C">
+
=== sceKernelGetProcessStatusForDriver ===
// 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);
 
</source>
 
 
 
=== sceKernelGetRemoteProcessTimeForDriver ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xC074EB31
+
| 0.931-3.65 || 0x65B120B8
 
|}
 
|}
  
<source lang="C">int sceKernelGetRemoteProcessTimeForDriver(SceUID pid, uint64_t *pTime);</source>
+
This function queries the status of a given process. It seems that 0x10 is related to suspension status.
  
=== sceKernelIsCDialogAvailableForDriver ===
+
<source lang="C">
 +
/**
 +
* @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);
 +
</source>
 +
 
 +
=== sceKernelSetProcessStatusForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x2F6020B7
+
| 0.931-3.65 || 0x1D0F3185
 
|}
 
|}
  
<source lang="C">int sceKernelIsCDialogAvailableForDriver(void)</source>
+
<source lang="C">int sceKernelSetProcessStatusForDriver(SceUID pid, SceUInt32 status);</source>
  
=== sceKernelIsGameBudgetForDriver ===
+
=== sceKernelIsProcessSuspendingForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xF7A8BB25
+
| 0.931-3.65 || 0x0CC5B30C
 
|}
 
|}
  
<source lang"C">int sceKernelIsGameBudgetForDriver(void);</source>
+
Return whether the process is suspending or not.
 +
 
 +
<source lang="C">int sceKernelIsProcessSuspendingForDriver(SceUID pid);</source>
  
=== SceProcessmgrForDriver_C715591F ===
+
=== sceKernelGetProcessTimeLowCoreForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xC715591F
+
| 3.60-3.65 || 0x02179E12
 
|}
 
|}
  
Called by "sceProcessMgrLaunchAppFor" ?to check?.
+
<source lang="C">SceUInt32 sceKernelGetProcessTimeLowCoreForDriver(void);</source>
  
<source lang="C">int SceProcessmgrForDriver_C715591F(void);</source>
+
=== sceKernelGetProcessTimeWideCoreForDriver ===
 
 
=== sceKernelGetCompiledSdkVersionByPidForDriver ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60-3.65 || 0xD141C076
+
| 3.60-3.65 || 0x82D94BE9
 
|}
 
|}
  
<source lang="C">int sceKernelGetCompiledSdkVersionByPidForDriver(SceUID pid, SceUInt32 *puiSdkVer);</source>
+
<source lnag="C">SceUInt64 sceKernelGetProcessTimeWideCoreForDriver(void);</source>
  
=== sceKernelRegisterCoredumpHandlerForDriver ===
+
=== sceKernelGetProcessTimeCoreForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x21A6F0EC
+
| 3.60-3.65 || 0xEC283166
 
|}
 
|}
  
<source lang="C">int sceKernelRegisterCoredumpHandlerForDriver(void *handler, SceSize size, void *memblock_addr);</source>
+
<source lang="C">int sceKernelGetProcessTimeCoreForDriver(SceUInt64 *pTime);</source>
  
=== sceKernelUnregisterCoredumpHandlerForDriver ===
+
=== sceKernelRegisterKPLSForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x33B3D026
+
| 0.940-3.65 || 0x3801D7D6
 
|}
 
|}
  
<source lang="C">int sceKernelUnregisterCoredumpHandlerForDriver(void);</source>
+
Temp name was sceKernelCreateProcessLocalStorageForDriver.
 +
 
 +
Returns allocated KPLS' key on success. Up to 32 KPLS keys can be created.
 +
 
 +
<source lang="C">int sceKernelRegisterKPLSForDriver(const char *name, SceSize size);</source>
  
=== sceKernelSetSyscallTraceFlagForDriver ===
+
=== sceKernelGetCurrentKPLSForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x24FA97A5
+
| 0.990-3.65 || 0xEE694840
 
|}
 
|}
  
=== sceKernelSetPMUSERENRForDriver ===
+
Temp name was sceKernelGetProcessLocalStorageAddrForDriver.
 +
 
 +
<source lang="C">void *sceKernelGetCurrentKPLSForDriver(int key);</source>
 +
 
 +
=== sceKernelGetRemoteKPLSForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x6599E5D9
+
| 0.931-3.68 || 0xAF80F39C
 
|}
 
|}
  
=== sceKernelAllocRemoteCDialogHeapForDriver ===
+
Temp name was sceKernelGetProcessLocalStorageAddrForPidForDriver.
{| class="wikitable"
 
|-
 
! Version !! NID
 
|-
 
| 3.60 || 0x8A85FA28
 
|}
 
  
== SceProcessmgrForKernel ==
+
This functions gets Remote Kernel Process Local Storage.
  
=== sceKernelGrowBudgetForKernel ===
+
<source lang="C">
 +
// 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);
 +
</source>
 +
 
 +
=== sceKernelGetRemoteProcessTimeForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.940-3.60 || 0x029378AC
+
| 3.60-3.65 || 0xC074EB31
|-
 
| 3.65 || 0x48DD3348
 
 
|}
 
|}
  
<source lang="C">SceInt32 sceKernelGrowBudgetForKernel(SceInt32 budgetId, SceInt32 idx, SceSize size);</source>
+
<source lang="C">int sceKernelGetRemoteProcessTimeForDriver(SceUID pid, SceUInt64 *pTime);</source>
 
 
=== sceKernelGetPhyMemPart ===
 
  
 +
=== sceKernelIsCDialogAvailableForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xCCB4289B
+
| 3.60 || 0x2F6020B7
 
|}
 
|}
  
<source lang="C">
+
<source lang="C">int sceKernelIsCDialogAvailableForDriver(void)</source>
// 1: Kernel
 
// 2: Tool
 
// 3: Game
 
// 4: PhyCont
 
// 5: Shared
 
// 6: Game CDialog
 
// 7: Shell
 
  
void *sceKernelGetPhyMemPart(SceUInt32 type);
+
=== sceKernelIsGameBudgetForDriver ===
</source>
 
 
 
=== sceKernelCreateProcessForKernel ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x71CF71FD
+
| 3.60-3.65 || 0xF7A8BB25
 +
|}
 +
 
 +
<source lang"C">int sceKernelIsGameBudgetForDriver(void);</source>
 +
 
 +
=== sceKernelHasBusyProcessForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.931.010-1.06 || not present
 
|-
 
|-
| 3.65 || 0x68068618
+
| 1.500.151-3.740.011 || 0xC715591F
 
|}
 
|}
  
Temp name was sceKernelLaunchAppForKernel.
+
This is a guessed name.
 +
 
 +
Returns SCE_TRUE if there exists at least one usermode process that is busy, else returns SCE_FALSE.
 +
 
 +
Called by "sceProcessMgrLaunchAppFor" ?to check?. Called before system suspend.
  
<source lang="C">
+
<source lang="C">SceBool sceKernelHasBusyProcessForDriver(void);</source>
/**
 
* @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);
 
</source>
 
  
=== sceKernelStartProcessForKernel ===
+
=== sceKernelGetCompiledSdkVersionByPidForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x38FB7BCA
+
| 3.60-3.65 || 0xD141C076
 
|}
 
|}
  
<source lang="C">
+
<source lang="C">int sceKernelGetCompiledSdkVersionByPidForDriver(SceUID pid, SceUInt32 *puiSdkVer);</source>
/**
 
* @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);
 
</source>
 
  
=== sceKernelStartProcessExtForKernel ===
+
=== sceKernelRegisterCoredumpHandlerForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x36728B16
+
| 3.60-3.65 || 0x21A6F0EC
 
|}
 
|}
  
Temp name was sceKernelStartProcess2ForKernel.
+
<source lang="C">int sceKernelRegisterCoredumpHandlerForDriver(void *handler, SceSize size, void *memblock_addr);</source>
 +
 
 +
=== sceKernelUnregisterCoredumpHandlerForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60-3.65 || 0x33B3D026
 +
|}
  
Used by [[SceAppMgr]]
+
<source lang="C">int sceKernelUnregisterCoredumpHandlerForDriver(void);</source>
  
<source lang="C">
+
=== sceKernelSetSyscallTraceFlagForDriver ===
/**
+
{| class="wikitable"
* @brief      Start a process with extended parameters
+
|-
* @param[in]  pid Process ID.
+
! Version !! NID
* @param[in]  type Type of the process.
+
|-
* @param[in]  argSize Size of the arguments block.
+
| 3.60-3.65 || 0x24FA97A5
* @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.
+
<source lang="C">int sceKernelSetSyscallTraceFlagForDriver(SceUID pid, int flag);</source>
*/
 
int sceKernelStartProcessExtForKernel(SceUID pid, SceKernelProcessType type, SceSize argSize, const void *pArgBlock, uint32_t flags);
 
</source>
 
  
=== sceKernelSpawnProcessForKernel ===
+
=== sceKernelAllocRemoteCDialogHeapForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x31834C49
+
| 3.60-3.65 || 0x8A85FA28
 
|}
 
|}
  
Calls sceKernelCreateProcessForKernel then sceKernelStartProcessForKernel.
+
<source lang="C">void *sceKernelAllocRemoteCDialogHeapForDriver(SceUID pid, SceSize length, void *opt);</source>
  
<source lang="C">
+
=== sceKernelFreeRemoteCDialogHeapForDriver ===
/**
+
{| class="wikitable"
* @brief      Spawn a process
+
|-
* @param[in]  name Usually TitleId of the application.
+
! Version !! NID
* @param[in]  type Type of the process.
+
|-
* @param[in]  path Path of the SELF.
+
| 3.60-3.65 || 0xDD0A58D1
* @param[in]  argSize Size of the arguments block.
+
|}
* @param[in]  pArgBlock Arguments block.
+
 
* @param[in]  pOpt Options of the process.
+
<source lang="C">int sceKernelFreeRemoteCDialogHeapForDriver(SceUID pid, void *ptr);</source>
* @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);
 
</source>
 
  
=== sceKernelSpawnProcessExtForKernel ===
+
=== sceKernelGetProcessResourceLimitForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x8F320D2B
+
| 3.60-3.65 || 0xB80DBD53
 
|}
 
|}
  
Calls sceKernelCreateProcessForKernel then sceKernelStartProcessExtForKernel.
+
<source lang="C">int sceKernelGetProcessResourceLimitForDriver(SceUID pid, void *result);</source>
  
<source lang="C">
+
=== sceKernelSetInitialPMCRForDriver ===
/**
 
* @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);
 
</source>
 
 
 
=== sceKernelUIDtoProcessForKernel ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xB9E68092
+
| 3.60-3.65 || 0x61B9B6FA
 +
|}
 +
 
 +
Temp name was sceKernelSetProcessPMCRForDriver.
 +
 
 +
<source lang="C">int sceKernelSetInitialPMCRForDriver(SceUID pid, SceUInt32 value);</source>
 +
 
 +
=== sceKernelGetPMCRForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 
|-
 
|-
| 3.65 || 0xD991C85E
+
| 3.60 || 0x594319C7
 
|}
 
|}
  
Temp name was sceKernelGetProcessKernelBufForKernel.
+
This is a guessed name. Temp name was sceKernelGetProcessPMCRForDriver.
  
Gets the process object associated to a PID.
+
<source lang="C">int sceKernelGetPMCRForDriver(SceUID pid);</source>
  
<source lang="C">SceUIDProcessObject* sceKernelUIDtoProcessForKernel(ScePID pid);</source>
+
=== sceKernelSetInitialPMUSERENRForDriver ===
 
 
=== sceKernelGetProcessMainThreadForDebuggerForKernel ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x95F9ED94
+
| 3.60-3.65 || 0xB1C3EFCA
 
|}
 
|}
  
<source lang="C">
+
<source lang="C">int sceKernelSetInitialPMUSERENRForDriver(SceUID pid, SceUInt32 value);</source>
/**
 
* @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);
 
</source>
 
  
=== sceKernelProcessSuspendForLoadpForKernel ===
+
=== sceKernelSetPMUSERENRForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931 || 0x3EC5FDF4
+
| 3.60-3.65 || 0x6599E5D9
|-
 
| 3.60 || not present
 
 
|}
 
|}
  
<source lang="C">
+
<source lang="C">int sceKernelSetPMUSERENRForDriver(SceUID pid, SceUInt32 value);</source>
/**
+
 
* @brief      Resume a suspended process.
+
== SceProcessmgrForKernel ==
* @param[in]  pid The process to resume.
 
* @return      Zero on success, < 0 on error.
 
*/
 
int sceKernelProcessSuspendForLoadpForKernel(SceUID pid);
 
</source>
 
  
=== sceKernelProcessDebugSuspendForKernel ===
+
=== sceKernelChangeProcessCpuAffinityForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x6AECE4CD
+
| 3.60 || 0x0A60B40A
 
|-
 
|-
| 3.65 || 0x93B8E785
+
| 3.65 || 0xF013B7F1
 
|}
 
|}
  
Temp name was sceKernelSuspendProcessForKernel.
+
=== sceKernelEnablePHWPForKernel ===
 
 
<source lang ="C">
 
/**
 
* @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);
 
</source>
 
 
 
=== sceKernelProcessDebugResumeForKernel ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x080CDC59
+
| 3.60 || 0x20174234
 +
|-
 +
| 3.65 || 0x9DF739C7
 
|}
 
|}
  
Temp name was sceKernelResumeProcessForKernel.
+
=== sceKernelDisablePHWPForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x62D048D2
 +
|-
 +
| 3.65 || 0xA2EE1B7F
 +
|}
  
<source lang ="C">
+
=== sceKernelGrowBudgetForKernel ===
/**
 
* @brief      Resume a suspended process.
 
* @param[in]  pid The process to resume.
 
* @return      Zero on success, < 0 on error.
 
*/
 
int sceKernelProcessDebugResumeForKernel(SceUID pid);
 
</source>
 
 
 
=== sceKernelResumeProcessForDebuggerForKernel ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xB13E3C7B
+
| 0.940-3.60 || 0x029378AC
 +
|-
 +
| 3.65 || 0x48DD3348
 
|}
 
|}
  
<source lang ="C">
+
<source lang="C">SceInt32 sceKernelGrowBudgetForKernel(SceInt32 budgetId, SceInt32 idx, SceSize size);</source>
/**
+
 
* @brief      Resume a suspended process.
+
=== sceKernelGetPhyMemPartForKernel ===
* @param[in]  pid The process to resume.
 
* @return      Zero on success, < 0 on error.
 
*/
 
int sceKernelResumeProcessForDebuggerForKernel(SceUID pid);
 
</source>
 
  
=== sceKernelResumeProcessForKernel ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xE0A9C9C4
+
| 3.60 || 0xCCB4289B
 +
|-
 +
| 3.65 || 0x923AF3CC
 
|}
 
|}
  
<source lang ="C">
+
<source lang="C">
/**
+
// 1: Kernel
* @brief      Resume a suspended process.
+
// 2: Tool
* @param[in]  pid The process to resume.
+
// 3: Game
* @return      Zero on success, < 0 on error.
+
// 4: PhyCont
*/
+
// 5: Shared
int sceKernelResumeProcessForKernel(SceUID pid);
+
// 6: Game CDialog
 +
// 7: Shell
 +
 
 +
void *sceKernelGetPhyMemPartForKernel(SceUInt32 type);
 
</source>
 
</source>
  
=== sceKernelExitProcessForKernel ===
+
=== sceKernelCreateProcessForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0x4CA7DC42
+
| 0.931-3.60 || 0x71CF71FD
 +
|-
 +
| 3.65 || 0x68068618
 
|}
 
|}
  
<source lang ="C">int sceKernelExitProcessForKernel(int status);</source>
+
Temp name was sceKernelLaunchAppForKernel.
 +
 
 +
Loads the ProcessImage after preparing the process's stuff (ProcCB, Budget, AddressSpace) then opens the tty console.
  
=== sceKernelSetProcessSelfAuthInfoForKernel ===
+
<source lang="C">
 +
/**
 +
* @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);
 +
</source>
 +
 
 +
=== sceKernelStartProcessForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-0.990 || 0x5ABA2772
+
| 0.931-3.60 || 0x38FB7BCA
 
|-
 
|-
| 3.60 || not present
+
| 3.65 || 0x5137B783
 
|}
 
|}
  
<source lang="C">int sceKernelSetProcessSelfAuthInfoForKernel(SceUID pid, SceSelfAuthInfo *self_auth_info);</source>
+
<source lang="C">
 +
/**
 +
* @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);
 +
</source>
  
=== sceKernelGetProcessSelfAuthInfoForKernel ===
+
=== sceKernelStartProcessExtForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xE4C83B0D
+
| 0.990-3.60 || 0x36728B16
 
|-
 
|-
| 3.65 || 0x324F2B20
+
| 3.65 || 0x026F3E87
 
|}
 
|}
  
Temp name was sceKernelGetProcessAuthidForKernel.
+
Temp name was sceKernelStartProcess2ForKernel.
  
<code>SceSelfAuthInfo</code> type is described in [[SceSblSsSmComm#Types]].
+
Used by [[SceAppMgr]]
  
<source lang="C">int sceKernelGetProcessSelfAuthInfoForKernel(SceUID pid, SceSelfAuthInfo *self_auth_info);</source>
+
<source lang="C">
 +
/**
 +
* @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);
 +
</source>
  
=== sceKernelLibcTimeForKernel ===
+
=== sceKernelSpawnProcessForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0x9E38C556
+
| 0.931-3.60 || 0x31834C49
 +
|-
 +
| 3.65 || 0x1E5B38E5
 
|}
 
|}
  
=== sceKernelLibcGettimeofdayForKernel ===
+
Calls sceKernelCreateProcessForKernel then sceKernelStartProcessForKernel.
{| class="wikitable"
+
 
|-
+
<source lang="C">
! Version !! NID
+
/**
|-
+
* @brief      Spawn a process
| 3.60 || 0xDE8B8B5E
+
* @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);
 +
</source>
  
=== sceKernelGetUIDProcessClassForKernel ===
+
=== sceKernelSpawnProcessExtForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xC6820972
+
| 0.990-3.60 || 0x8F320D2B
 
|-
 
|-
| 3.65 || 0x98AE4BC8
+
| 3.65 || 0x5A57766C
 
|}
 
|}
  
Temp name was sceKernelGetClassForUid2ForKernel, sceKernelGetProcessClassForKernel.
+
Calls sceKernelCreateProcessForKernel then sceKernelStartProcessExtForKernel.
  
<source lang="C">SceClass *sceKernelGetUIDProcessClassForKernel(void);</source>
+
<source lang="C">
 
+
/**
=== sceKernelKillProcessForDebuggerForKernel ===
+
* @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);
 +
</source>
 +
 
 +
=== sceKernelUIDtoProcessForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x90C27779
+
| 0.931-3.60 || 0xB9E68092
 +
|-
 +
| 3.65 || 0xD991C85E
 
|}
 
|}
  
<source lang="C">int sceKernelKillProcessForDebuggerForKernel(SceUID pid);</source>
+
Temp name was sceKernelGetProcessKernelBufForKernel.
 +
 
 +
Gets the process object associated to a PID.
 +
 
 +
<source lang="C">SceUIDProcessObject* sceKernelUIDtoProcessForKernel(ScePID pid);</source>
  
=== sceKernelKillProcessForKernel ===
+
=== sceKernelGetProcessMainThreadForDebuggerForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xA1071106
+
| 0.931-3.60 || 0x95F9ED94
 
|-
 
|-
| 3.65 || 0xF388F05C
+
| 3.65 || 0xD20553C6
 
|}
 
|}
  
<source lang="C">int sceKernelKillProcessForKernel(SceUID pid, int status);</source>
+
Temp name was sceKernelGetProcessMainThreadForKernel.
  
=== sceKernelGetMMUL1InfoForKernel ===
+
<source lang="C">
 +
/**
 +
* @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);
 +
</source>
 +
 
 +
=== sceKernelProcessSuspendForLoadpForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-0.990 || 0xC526C6F2
+
| 0.931 || 0x3EC5FDF4
 
|-
 
|-
| 3.60 || not present
+
| 3.60-3.74 || not present
 
|}
 
|}
  
<source lang="C">int sceKernelGetMMUL1InfoForKernel(SceUID pid, const void *addr, void *pInfo);</source>
+
<source lang="C">
 +
/**
 +
* @brief      Resume a suspended process.
 +
* @param[in]  pid The process to resume.
 +
* @return      Zero on success, < 0 on error.
 +
*/
 +
int sceKernelProcessSuspendForLoadpForKernel(SceUID pid);
 +
</source>
  
=== sceKernelGetMMUL2InfoForKernel ===
+
=== sceKernelProcessDebugSuspendForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931 || 0xE2681221
+
| 0.990-3.60 || 0x6AECE4CD
 
|-
 
|-
| 3.60 || not present
+
| 3.65 || 0x93B8E785
 
|}
 
|}
  
<source lang="C">int sceKernelGetMMUL2InfoForKernel(SceUID pid, const void *addr, void *pInfo);</source>
+
Temp name was sceKernelSuspendProcessForKernel.
 +
 
 +
<source lang ="C">
 +
/**
 +
* @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);
 +
</source>
  
=== sceKernelWaitProcessEndForKernel ===
+
=== sceKernelProcessDebugResumeForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x0EE2658E
+
| 0.990-3.60 || 0x080CDC59
 +
|-
 +
| 3.65 || 0x6894499C
 
|}
 
|}
  
<source lang="C">int sceKernelWaitProcessEndForKernel(SceUID pid, int *pResult, SceUInt32 *pTimeout);</source>
+
Temp name was sceKernelResumeProcessForKernel.
 +
 
 +
<source lang ="C">
 +
/**
 +
* @brief      Resume a suspended process.
 +
* @param[in]  pid The process to resume.
 +
* @return      Zero on success, < 0 on error.
 +
*/
 +
int sceKernelProcessDebugResumeForKernel(SceUID pid);
 +
</source>
  
=== sceKernelGetPHWPForKernel ===
+
=== sceKernelResumeProcessForDebuggerForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xC55BF6C3
+
| 0.931-3.60 || 0xB13E3C7B
 +
|-
 +
| 3.65 || 0x8FB7FD50
 
|}
 
|}
  
<source lang="C">int sceKernelGetPHWPForKernel(SceUID pid, SceUInt32 a2, int *a3, int *a4);</source>
+
<source lang ="C">
 +
/**
 +
* @brief      Resume a suspended process.
 +
* @param[in]  pid The process to resume.
 +
* @return      Zero on success, < 0 on error.
 +
*/
 +
int sceKernelResumeProcessForDebuggerForKernel(SceUID pid);
 +
</source>
  
=== sceKernelSetPHWPForKernel ===
+
=== sceKernelResumeProcessForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x54D7B16A
+
| 0.931-3.60 || 0xE0A9C9C4
 +
|-
 +
| 3.65 || 0xEFBCF15B
 
|}
 
|}
  
<source lang="C">int sceKernelSetPHWPForKernel(SceUID pid, int a2, int a3, int a4);</source>
+
<source lang ="C">
 +
/**
 +
* @brief      Resume a suspended process.
 +
* @param[in]  pid The process to resume.
 +
* @return      Zero on success, < 0 on error.
 +
*/
 +
int sceKernelResumeProcessForKernel(SceUID pid);
 +
</source>
  
=== sceKernelGetPHBPForKernel ===
+
=== sceKernelExitProcessForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xA9C20202
+
| 0.990-3.60 || 0x4CA7DC42
 +
|-
 +
| 3.65 || 0x905621F9
 
|}
 
|}
  
<source lang="C">int sceKernelGetPHBPForKernel(SceUID pid, SceUInt32 a2, int *a3, int *a4);</source>
+
<source lang ="C">int sceKernelExitProcessForKernel(int status);</source>
  
=== sceKernelSetPHBPForKernel ===
+
=== sceKernelSetProcessSelfAuthInfoForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x59FA3216
+
| 0.931.010-2.120.011 || 0x5ABA2772
 +
|-
 +
| 2.500.071-3.740.011 || not present
 
|}
 
|}
  
<source lang="C">int sceKernelSetPHBPForKernel(SceUID pid, int a2, int a3, int a4);</source>
+
<source lang="C">int sceKernelSetProcessSelfAuthInfoForKernel(SceUID pid, SceSelfAuthInfo *self_auth_info);</source>
  
=== sceKernelGetProcessAppForKernel ===
+
=== sceKernelGetProcessSelfAuthInfoForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x34FA9645
+
| 0.931-3.60 || 0xE4C83B0D
 
|-
 
|-
| 3.65 || 0xE5097B4F
+
| 3.65 || 0x324F2B20
 
|}
 
|}
  
<source lang="C">int sceKernelGetProcessAppForKernel(SceUID pid);</source>
+
Temp name was sceKernelGetProcessAuthidForKernel.
 +
 
 +
<code>SceSelfAuthInfo</code> type is described in [[SceSblSsSmComm#Types]].
 +
 
 +
<source lang="C">int sceKernelGetProcessSelfAuthInfoForKernel(SceUID pid, SceSelfAuthInfo *self_auth_info);</source>
  
=== sceKernelGetProcessParentIdForKernel ===
+
=== sceKernelLibcTimeForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x3C4D2889
+
| 3.60 || 0x9E38C556
 
|-
 
|-
| 3.65 || 0xA5E55217
+
| 3.65 || 0xB0E076D6
 
|}
 
|}
  
<source lang="C">
+
=== sceKernelLibcGettimeofdayForKernel ===
// returns the parent process PID
+
{| class="wikitable"
ScePID sceKernelGetProcessParentIdForKernel(SceUID pid);
+
|-
</source>
+
! Version !! NID
 +
|-
 +
| 3.60 || 0xDE8B8B5E
 +
|-
 +
| 3.65 || 0x014F5113
 +
|}
  
=== sceKernelSuspendProcessForDebuggerForKernel ===
+
=== sceKernelGetCurrentTickForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x234A80B6
+
| 3.60 || 0xD17D6110
 +
|-
 +
| 3.65 || 0xD231AE5B
 
|}
 
|}
  
<source lang ="C">
+
This is a guessed name.
/**
 
* @brief      Suspend a running process.
 
* @param[in]  pid The process to suspend.
 
* @return      Zero on success, < 0 on error.
 
*/
 
int sceKernelSuspendProcessForDebuggerForKernel(SceUID pid);
 
</source>
 
  
=== sceKernelSuspendProcessForKernel ===
+
=== _sceKernelGetCurrentTickForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xCF83C23B
+
| 3.60 || 0xACBAAB10
 
|-
 
|-
| 3.65 || 0x1400A1F8
+
| 3.65 || 0x3EBC93BB
 
|}
 
|}
  
<source lang ="C">
+
This is a guessed name.
// FW 0.931 define
+
 
/**
+
=== sceKernelGetUIDProcessClassForKernel ===
* @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);
 
</source>
 
 
 
=== sceKernelGetProcessImageForDebuggerForKernel ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-0.990 || 0xCF71D9DD
+
| 3.60 || 0xC6820972
 +
|-
 +
| 3.65 || 0x98AE4BC8
 
|}
 
|}
  
Return Process Image on success.
+
Temp name was sceKernelGetClassForUid2ForKernel, sceKernelGetProcessClassForKernel.
  
<source lang="C">void *sceKernelGetProcessImageForDebuggerForKernel(SceUID pid);</source>
+
<source lang="C">SceClass *sceKernelGetUIDProcessClassForKernel(void);</source>
  
=== sceKernelProcessAppendForKernel ===
+
=== sceKernelKillProcessForDebuggerForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-0.990 || 0xC4E349D5
+
| 0.931-3.60 || 0x90C27779
 +
|-
 +
| 3.65 || 0x148E23E3
 +
|}
 +
 
 +
<source lang="C">int sceKernelKillProcessForDebuggerForKernel(SceUID pid);</source>
 +
 
 +
=== sceKernelKillProcessForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.931-3.60 || 0xA1071106
 +
|-
 +
| 3.65 || 0xF388F05C
 
|}
 
|}
  
 
<source lang="C">
 
<source lang="C">
// if pid2 is not set, current pid is used instead
+
// option: 0: flag 0x2, 1: flag 0x20, 2: flag 0x40
int sceKernelProcessAppendForKernel(SceUID pid1, SceUID pid2);
+
int sceKernelKillProcessForKernel(SceUID pid, SceInt32 option);
 
</source>
 
</source>
  
=== sceKernelProcessAssocAppForKernel ===
+
=== sceKernelGetMMUL1InfoForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x76C89783
+
| 0.931-0.990 || 0xC526C6F2
 +
|-
 +
| 3.60-3.74 || not present
 
|}
 
|}
  
<source lang="C">int sceKernelProcessAssocAppForKernel(SceUID pid, int unk_in);</source>
+
<source lang="C">int sceKernelGetMMUL1InfoForKernel(SceUID pid, const void *addr, void *pInfo);</source>
  
=== sceKernelCreateBudgetForKernel ===
+
=== sceKernelGetMMUL2InfoForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0x05F74BAF
+
| 0.931 || 0xE2681221
 +
|-
 +
| 3.60-3.74 || not present
 
|}
 
|}
  
<source lang="C">
+
<source lang="C">int sceKernelGetMMUL2InfoForKernel(SceUID pid, const void *addr, void *pInfo);</source>
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);
+
=== sceKernelWaitProcessEndForKernel ===
</source>
 
 
 
=== sceKernelDeleteBudgetForKernel ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xE5A60577
+
| 0.931-3.60 || 0x0EE2658E
 +
|-
 +
| 3.65 || 0x0B9BE51B
 
|}
 
|}
  
Delete budget for the current process.
+
<source lang="C">int sceKernelWaitProcessEndForKernel(SceUID pid, int *pResult, SceUInt32 *pTimeout);</source>
 
 
<source lang="C">
 
// budget: maybe 0, 1, 2 or 3
 
int sceKernelDeleteBudgetForKernel(SceUInt32 budget);
 
</source>
 
  
=== sceKernelGetBudgetInfoForDebuggerForKernel ===
+
=== sceKernelWaitProcessEventCompletionForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990-3.60 || 0xF3C4A83B
+
| 3.60 || 0x6A7FF80A
 +
|-
 +
| 3.65 || 0x0F23A5ED
 
|}
 
|}
  
Uses [[SceSysmem#SceSysmemForKernel_54E85275]] to get a 0xB0 bytes buffer.
+
=== sceKernelGetPHWPForKernel ===
 
+
{| class="wikitable"
<source lang="C">int sceKernelGetBudgetInfoForDebuggerForKernel(SceUID pid, SceUInt32 attr, SceKernelBudgetInfo *pInfo);</source>
 
 
 
=== sceKernelGetProcessModuleInfoForKernel ===
 
{| class="wikitable"
 
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 1.03-2.06 || not present
+
| 0.931-3.60 || 0xC55BF6C3
|-
 
| 2.10-3.61 || 0xC1C91BB2
 
 
|-
 
|-
| 3.65 || 0x3AF6B088
+
| 3.65 || 0x6898F7A7
 
|}
 
|}
  
<source lang="C">SceKernelProcessModuleInfo *sceKernelGetProcessModuleInfoForKernel(SceUID pid);</source>
+
<source lang="C">int sceKernelGetPHWPForKernel(SceUID pid, SceUInt32 a2, int *a3, int *a4);</source>
  
=== sceKernelSetProcessModuleInfoForKernel ===
+
=== sceKernelSetPHWPForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 2.10-3.60 || 0x7D8D7885
+
| 0.931-3.60 || 0x54D7B16A
 +
|-
 +
| 3.65 || 0xB2421F93
 
|}
 
|}
  
<source lang="C">int sceKernelSetProcessModuleInfoForKernel(SceUID pid, SceKernelProcessModuleInfo *pInfo);</source>
+
<source lang="C">int sceKernelSetPHWPForKernel(SceUID pid, int a2, int a3, int a4);</source>
  
=== SceProcessmgrForKernel_B75FB970 ===
+
=== sceKernelGetPHBPForKernel ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931-3.60 || 0xA9C20202
 
|-
 
|-
| 3.60 || 0xB75FB970
+
| 3.65 || 0x060DA466
 
|}
 
|}
  
Increments Process UID Reference List counter.
+
<source lang="C">int sceKernelGetPHBPForKernel(SceUID pid, SceUInt32 a2, int *a3, int *a4);</source>
  
<source lang="C">
+
=== sceKernelSetPHBPForKernel ===
// unk_bool depends of the process type
 
int SceProcessmgrForKernel_B75FB970(SceUID pid, SceBool unk_bool);
 
</source>
 
 
 
=== SceProcessmgrForKernel_0A5A2CF1 ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931-3.60 || 0x59FA3216
 
|-
 
|-
| 3.60 || 0xB75FB970
+
| 3.65 || 0x597E6D2C
 
|}
 
|}
  
Decrements Process UID Reference List counter.
+
<source lang="C">int sceKernelSetPHBPForKernel(SceUID pid, int a2, int a3, int a4);</source>
  
<source lang="C">
+
=== sceKernelGetProcessAppForKernel ===
// unk_bool depends of the process type
 
int SceProcessmgrForKernel_0A5A2CF1(SceUID pid, SceBool unk_bool);
 
</source>
 
 
 
=== sceKernelGetProcessTypeForKernel ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931-3.60 || 0x34FA9645
 
|-
 
|-
| 3.60 || 0x2ABFB6C1
+
| 3.65 || 0xE5097B4F
|-
 
| 3.65 || 0xB631C93B
 
 
|}
 
|}
  
Temp name was sceKernelGetProcessBudgetTypeForKernel.
+
<source lang="C">int sceKernelGetProcessAppForKernel(SceUID pid);</source>
  
<source lang="C">SceProcessType sceKernelGetProcessTypeForKernel(ScePID process);</source>
+
=== sceKernelGetProcessParentIdForKernel ===
 
 
=== sceKernelAllocRemoteToolHeapMemoryForKernel ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.940-1.50 || not present
+
| 0.931-3.60 || 0x3C4D2889
 
|-
 
|-
| 3.60 || 0x3C5E2F08
+
| 3.65 || 0xA5E55217
|-
 
| 3.65 || 0x51AF6FE6
 
 
|}
 
|}
  
This is a guessed name. Temp name was sceKernelProcessAllocKernelBudgetHeapMemoryForKernel.
+
Returns the parent process's PID.
  
Requires DIP switch 210. Allocates memory in target process' "tool" heap. Free memory with [[SceProcessmgr#sceKernelFreeRemoteProcessKernelHeapForKernel|sceKernelFreeRemoteToolHeapForKernel]].
+
<source lang="C">ScePID sceKernelGetProcessParentIdForKernel(SceUID pid);</source>
  
<source lang="C">void* sceKernelAllocRemoteToolHeapMemoryForKernel(SceUID pid, SceSize size);</source>
+
=== sceKernelSuspendProcessForDebuggerForKernel ===
 
 
=== sceKernelFreeRemoteToolHeapMemoryForKernel ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.990 || not present
+
| 0.931-3.60 || 0x234A80B6
|-
 
| 3.60 || 0x41815DF2
 
 
|-
 
|-
| 3.65 || 0x2755CEDD
+
| 3.65 || 0x4232517A
 
|}
 
|}
  
This is a guessed name. Temp name was sceKernelFreeRemoteProcessKernelHeapForKernel.
+
<source lang ="C">
 +
/**
 +
* @brief      Suspend a running process.
 +
* @param[in]  pid The process to suspend.
 +
* @return      Zero on success, < 0 on error.
 +
*/
 +
int sceKernelSuspendProcessForDebuggerForKernel(SceUID pid);
 +
</source>
  
Requires DIP switch 210. Frees memory allocated with [[SceProcessmgr#sceKernelProcessAllocKernelBudgetHeapMemoryForKernel|sceKernelAllocRemoteToolHeapMemoryForKernel]].
+
=== sceKernelSuspendProcessForKernel ===
 
 
<source lang="C">SceInt32 sceKernelFreeRemoteToolHeapForKernel(SceUID pid, void *ptr);</source>
 
 
 
=== SceProcessmgrForKernel_C77C2085 ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.931-3.60 || 0xC77C2085
+
| 0.931-3.60 || 0xCF83C23B
 
|-
 
|-
| 3.65 || 0x9BC44974
+
| 3.65 || 0x1400A1F8
 
|}
 
|}
  
Returns specified process' Address Space object UID.
+
<source lang ="C">
 +
// 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);
  
<source lang="C">SceUID SceProcessmgrForKernel_C77C2085(SceUID pid);</source>
+
// 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);
 +
</source>
  
 +
=== sceKernelGetProcessImageForDebuggerForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.931-0.990 || 0xCF71D9DD
 +
|-
 +
| 3.60-3.74 || not present
 +
|}
  
[[Category:Modules]]
+
Returns Process Image on success.
 +
 
 +
<source lang="C">void *sceKernelGetProcessImageForDebuggerForKernel(SceUID pid);</source>
 +
 
 +
=== sceKernelProcessAppendForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.931-0.990 || 0xC4E349D5
 +
|-
 +
| 3.60-3.74 || not present
 +
|}
 +
 
 +
<source lang="C">
 +
// if pid2 is not set, current pid is used instead
 +
int sceKernelProcessAppendForKernel(SceUID pid1, SceUID pid2);
 +
</source>
 +
 
 +
=== sceKernelProcessAssocAppForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.931-3.60 || 0x76C89783
 +
|-
 +
| 3.65 || 0x00DBA872
 +
|}
 +
 
 +
<source lang="C">int sceKernelProcessAssocAppForKernel(SceUID pid, int unk_in);</source>
 +
 
 +
=== sceKernelCreateBudgetForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.931-3.60 || 0x05F74BAF
 +
|-
 +
| 3.65 || 0xDC18FCEF
 +
|}
 +
 
 +
<source lang="C">
 +
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);
 +
</source>
 +
 
 +
=== sceKernelDeleteBudgetForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.931-3.60 || 0xE5A60577
 +
|-
 +
| 3.65 || 0x459A223B
 +
|}
 +
 
 +
Delete budget for the current process.
 +
 
 +
<source lang="C">
 +
// budget: maybe 0, 1, 2 or 3
 +
int sceKernelDeleteBudgetForKernel(SceUInt32 budget);
 +
</source>
 +
 
 +
=== sceKernelGetBudgetInfoForDebuggerForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.990-3.60 || 0xF3C4A83B
 +
|-
 +
| 3.65 || 0xCF9EC344
 +
|}
 +
 
 +
Uses [[SceSysmem#SceSysmemForKernel_54E85275]] to get a 0xB0 bytes buffer.
 +
 
 +
<source lang="C">int sceKernelGetBudgetInfoForDebuggerForKernel(SceUID budgetId, SceUInt32 level, SceKernelBudgetInfo *pInfo);</source>
 +
 
 +
=== sceKernelGetProcessLibdbForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 1.03-2.06 || not present
 +
|-
 +
| 2.10-3.61 || 0xC1C91BB2
 +
|-
 +
| 3.65 || 0x3AF6B088
 +
|}
 +
 
 +
Temp name was sceKernelGetProcessModuleInfoForKernel.
 +
 
 +
<source lang="C">SceKernelProcessLibdb* sceKernelGetProcessLibdbForKernel(SceUID pid);</source>
 +
 
 +
=== sceKernelSetProcessLibdbForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 2.10-3.60 || 0x7D8D7885
 +
|-
 +
| 3.65 || 0x72F25C14
 +
|}
 +
 
 +
Temp name was sceKernelSetProcessModuleInfoForKernel.
 +
 
 +
<source lang="C">int sceKernelSetProcessLibdbForKernel(SceUID pid, SceKernelProcessLibdb *pLibdb);</source>
 +
 
 +
=== SceProcessmgrForKernel_B75FB970 ===
 +
{| class="wikitable"
 +
|-
 +
! 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.
 +
 
 +
<source lang="C">
 +
// unk_bool depends of the process type
 +
int SceProcessmgrForKernel_B75FB970(SceUID pid, SceBool unk_bool);
 +
</source>
 +
 
 +
=== SceProcessmgrForKernel_0A5A2CF1 ===
 +
{| class="wikitable"
 +
|-
 +
! 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.
 +
 
 +
<source lang="C">
 +
// unk_bool depends of the process type
 +
int SceProcessmgrForKernel_0A5A2CF1(SceUID pid, SceBool unk_bool);
 +
</source>
 +
 
 +
=== sceKernelGetProcessTypeForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.990 || not present
 +
|-
 +
| 3.60 || 0x2ABFB6C1
 +
|-
 +
| 3.65 || 0xB631C93B
 +
|}
 +
 
 +
Temp name was sceKernelGetProcessBudgetTypeForKernel.
 +
 
 +
<source lang="C">SceProcessType sceKernelGetProcessTypeForKernel(SceUID pid);</source>
 +
 
 +
=== sceKernelAllocRemoteToolHeapForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! 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 [[SceProcessmgr#sceKernelFreeRemoteProcessKernelHeapForKernel|sceKernelFreeRemoteToolHeapForKernel]].
 +
 
 +
<source lang="C">void* sceKernelAllocRemoteToolHeapForKernel(SceUID pid, SceSize size);</source>
 +
 
 +
=== sceKernelFreeRemoteToolHeapForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! 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 [[SceProcessmgr#sceKernelProcessAllocKernelBudgetHeapMemoryForKernel|sceKernelAllocRemoteToolHeapMemoryForKernel]].
 +
 
 +
<source lang="C">SceInt32 sceKernelFreeRemoteToolHeapForKernel(SceUID pid, void* addr);</source>
 +
 
 +
=== sceKernelGetProcessAddressSpaceForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.931-3.60 || 0xC77C2085
 +
|-
 +
| 3.65 || 0x9BC44974
 +
|}
 +
 
 +
This is a guessed name.
 +
 
 +
Returns specified process' Address Space object UID.
 +
 
 +
<source lang="C">SceUID sceKernelGetProcessAddressSpaceForKernel(SceUID pid);</source>
 +
 
 +
=== sceKernelResetGameBudgetForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x15A93CD2
 +
|-
 +
| 3.65 || 0x56657302
 +
|}
 +
 
 +
=== SceProcessmgrForKernel_E7174A8D ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xE7174A8D
 +
|-
 +
| 3.65 || 0x23EF9D8E
 +
|}
 +
 
 +
=== SceProcessmgrForKernel_381818A1 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x381818A1
 +
|-
 +
| 3.65 || 0xBC110987
 +
|}
 +
 
 +
=== SceProcessmgrForKernel_9321D0E5 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x9321D0E5
 +
|-
 +
| 3.65 || 0x9FA66773
 +
|}
 +
 
 +
=== SceProcessmgrForKernel_B7C91F6C ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xB7C91F6C
 +
|-
 +
| 3.65 || 0xDDE282CF
 +
|}
 +
 
 +
=== SceProcessmgrForKernel_1423FA86 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x1423FA86
 +
|-
 +
| 3.65 || 0xE025F5A9
 +
|}
 +
 
 +
Gets the value set by [[#SceProcessmgrForKernel_915AB8D6]].
 +
 
 +
=== SceProcessmgrForKernel_915AB8D6 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x915AB8D6
 +
|-
 +
| 3.65 || 0xFC80A606
 +
|}
 +
 
 +
Sets a value to ProcessCB->data_0x288.
 +
 
 +
=== SceProcessmgrForKernel_89A0A910 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x89A0A910
 +
|-
 +
| 3.65 || 0x6DEC45C3
 +
|}
 +
 
 +
Gets the value set by [[#SceProcessmgrForKernel_F7FFECF3]].
 +
 
 +
=== SceProcessmgrForKernel_F7FFECF3 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xF7FFECF3
 +
|-
 +
| 3.65 || 0x1197DB8A
 +
|}
 +
 
 +
=== SceProcessmgrForKernel_8729DE79 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x8729DE79
 +
|-
 +
| 3.65 || 0x344DDE0B
 +
|}
 +
 
 +
Calls [[SceSysmem#SceSysrootForDriver_51F9C118]] and [[SceSysmem#SceSysrootForDriver_582616EC]].
 +
 
 +
=== sceKernelGetProcessIdListForKernel ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xC031BFE0
 +
|-
 +
| 3.65 || 0xEFFF2975
 +
|}
 +
 
 +
This is a guessed name.
 +
 
 +
Wrapper to <code>internal_subroutine(visibilityLevel, pVec, vecSize, puiNum, 2);</code>.
 +
 
 +
<source lang="C">int sceKernelGetProcessIdListForKernel(SceUInt32 visibilityLevel, SceUID* pVec, SceSize vecSize, SceUInt32* puiNum);</source>
 +
 
 +
=== SceProcessmgrForKernel_5AC72C5A ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x5AC72C5A
 +
|-
 +
| 3.65 || 0xD5DF895D
 +
|}
 +
 
 +
Same as [[#SceProcessmgrForKernel_C7E75A8C]] but signals sema instead of waiting sema.
 +
 
 +
=== SceProcessmgrForKernel_C7E75A8C ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xC7E75A8C
 +
|-
 +
| 3.65 || 0x8321B827
 +
|}
 +
 
 +
Same as [[#SceProcessmgrForKernel_5AC72C5A]] but waits sema instead of signaling sema.
 +
 
 +
[[Category:ARM]]
 
[[Category:Kernel]]
 
[[Category:Kernel]]
 +
[[Category:Modules]]
 +
[[Category:Library]]

Latest revision as of 05:12, 13 February 2024

Process Manager

Module

Version World Privilege
0.931.010-3.740.011 Non-secure Kernel

Libraries

Known NIDs

Version Name World Visibility NID
0.931.010-3.740.011 SceProcessmgr Non-secure User 0x2DD91812
0.931.010-3.740.011 SceProcessmgrForDriver Non-secure Kernel 0x746EC971
0.931.010-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.931.010-3.740.011 0x0039BE45
int sceKernelLibcTime(SceUInt32 *pTime);

sceKernelGetProcessTitleId

Version NID
0.931.010-1.50 not present
1.600.061-3.740.011 0x03A48771

sceKernelGetProcessName

Version NID
0.931.010-1.50 not present
1.600.061-3.740.011 0x10C52C95

sceKernelIsCDialogAvailable

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

sceKernelPowerTick

Version NID
0.931.010 not present
0.940-3.740.011 0x2252890C
int sceKernelPowerTick(SceKernelPowerTickType type);

sceKernelGetProcessParam

Version NID
0.931.010 not present
0.940-3.740.011 0x2BE3E066

Gets the process' SceProcessParam.

SceProcessParam *sceKernelGetProcessParam(void);

_sceKernelGetTimer5Reg

Version NID
0.931.010-0.990 not present
1.000.071-3.65 0x2F73D72F

sceKernelPowerUnlock

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

sceKernelLibcGettimeofday

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

_sceKernelRegisterExitAddress

Version NID
0.931.010-0.990 0x0278DFB7
1.000.071-3.740.011 not present

Used in SceLibKernel module_start.

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

_sceKernelRegisterLibkernelAddresses

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

sceKernelRegisterProcessTerminationCallback

Version NID
0.931.010-0.940 not present
0.990-3.740.011 0x5EC77870
// cbId can be obtained using sceKernelCreateCallback
SceInt32 sceKernelRegisterProcessTerminationCallback(SceUID pid, SceUID cbId);

sceKernelUnregisterProcessTerminationCallback

Version NID
0.931.010-0.940 not present
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.010-3.740.011 0x7AA73378

Lock the process something.

int sceKernelPowerLock(SceKernelPowerTickType type);

sceKernelGetProcessTimeWideCore

Version NID
0.931.010 not present
0.940-3.740.011 0x89DA0967
SceUInt64 sceKernelGetProcessTimeWideCore(void);

sceKernelLibcClock

Version NID
0.931.010 not present
0.940-3.740.011 0x9E45DA09
SceUInt64 sceKernelLibcClock(void);

_sceKernelExitProcessForUser

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

sceKernelGetStdin

Version NID
0.931.010-3.740.011 0xC1727F59

Returns the file descriptor of the current process stdin.

SceUID sceKernelGetStdin(void);

sceKernelGetCurrentProcess

Version NID
0.931.010-3.740.011 0xCD248267

Wrapper to sceKernelGetProcessIdForDriver.

Returns the process ID.

SceUID sceKernelGetCurrentProcess(void);

sceKernelIsGameBudget

Version NID
0.931.010-0.940 not present
0.990-3.740.011 0xCE0F02F0
SceBool sceKernelIsGameBudget(void);

sceKernelGetProcessTimeCore

Version NID
0.931.010 not present
0.940-3.740.011 0xD37A8437
int sceKernelGetProcessTimeCore(SceUInt64 *pTime);

sceKernelGetStdout

Version NID
0.931.010-3.740.011 0xE5AA625C

Returns the file descriptor of the current process stdout.

SceUID sceKernelGetStdout(void);

sceKernelGetRemoteProcessTime

Version NID
0.931.010 not present
0.940-3.740.011 0xE6E9FCA3
int sceKernelGetRemoteProcessTime(SceUID pid, SceUInt64 *pTime);

sceKernelCallAbortHandler

Version NID
0.931.010-0.990 not present
1.000.071-3.740.011 0xEB6E50BB

sceKernelGetProcessTimeLowCore

Version NID
0.931.010 not present
0.940-3.740.011 0xF5D0D4C6
int sceKernelGetProcessTimeLowCore(void);

sceKernelGetStderr

Version NID
0.931.010-3.740.011 0xFA5E3ADA

Returns the file descriptor of the current process stderr.

SceUID sceKernelGetStderr(void);

sceKernelCDialogSessionClose

Version NID
0.931.010-1.692.000 not present
1.800.071-3.740.011 0xDB4CC1D0

sceKernelCDialogSetLeaseLimit

Version NID
0.931.010-2.06 not present
2.100.081-3.740.011 0xEC8DDAAD

sceKernelGetExtraTty

Version NID
0.931.010-1.692.000 not present
1.800.071-3.740.011 0x2D635A00

sceKernelLibcGmtime_r

Version NID
0.931.010-1.81 not present
2.000.081-3.740.011 0xBCA437CD

sceKernelLibcLocaltime_r

Version NID
0.931.010-1.81 not present
2.000.081-3.740.011 0x94F041ED

sceKernelLibcMktime

Version NID
0.931.010-1.81 not present
2.000.081-3.740.011 0x890BDC39

SceProcessmgr_AAE09BC5

Version NID
0.931.010 not present
0.940 0xAAE09BC5
1.000.071-3.740.011 not present

Calls SceSysmem#sceKernelPowerLockForDriver.

int SceProcessmgr_AAE09BC5(SceKernelPowerTickType type);

SceProcessmgr_B2BA89FD

Version NID
0.931.010 not present
0.940 0xB2BA89FD
1.000.071-3.740.011 not present

Calls SceSysmem#sceKernelPowerUnlockForDriver.

int SceProcessmgr_B2BA89FD(SceKernelPowerTickType type);

SceProcessmgrForDriver

SceProcessmgrForDriver_C5CF15ED

Version NID
3.60 0xC5CF15ED

Gets some info.

int SceProcessmgrForDriver_C5CF15ED(SceUInt32 index, void *info);

sceKernelGetSyscallTraceFlagForDriver

Version NID
3.60 0x54D469E2

This is a guessed name.

Get current process syscallTraceFlag.

int sceKernelGetSyscallTraceFlagForDriver(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.

Related to display?

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

sceKernelSetProcessTerminatedHandlerForDriver

Version NID
0.990-3.65 0x5E882B60

This is a guessed name.

Set Process Terminated callback. Used by SceAppMgr.

int sceKernelSetProcessTerminatedHandlerForDriver(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);

sceKernelHasBusyProcessForDriver

Version NID
0.931.010-1.06 not present
1.500.151-3.740.011 0xC715591F

This is a guessed name.

Returns SCE_TRUE if there exists at least one usermode process that is busy, else returns SCE_FALSE.

Called by "sceProcessMgrLaunchAppFor" ?to check?. Called before system suspend.

SceBool sceKernelHasBusyProcessForDriver(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
void *sceKernelAllocRemoteCDialogHeapForDriver(SceUID pid, SceSize length, void *opt);

sceKernelFreeRemoteCDialogHeapForDriver

Version NID
3.60-3.65 0xDD0A58D1
int sceKernelFreeRemoteCDialogHeapForDriver(SceUID pid, void *ptr);

sceKernelGetProcessResourceLimitForDriver

Version NID
3.60-3.65 0xB80DBD53
int sceKernelGetProcessResourceLimitForDriver(SceUID pid, void *result);

sceKernelSetInitialPMCRForDriver

Version NID
3.60-3.65 0x61B9B6FA

Temp name was sceKernelSetProcessPMCRForDriver.

int sceKernelSetInitialPMCRForDriver(SceUID pid, SceUInt32 value);

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
int sceKernelSetInitialPMUSERENRForDriver(SceUID pid, SceUInt32 value);

sceKernelSetPMUSERENRForDriver

Version NID
3.60-3.65 0x6599E5D9
int sceKernelSetPMUSERENRForDriver(SceUID pid, SceUInt32 value);

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.