SceProcessmgr: Difference between revisions
Devnoname120 (talk | contribs) (Swapped Module <-> Library, see revision 1.1 under "Revision History" of "Vita SDK specifications" (https://wiki.henkaku.xyz/vita/File:Vita_SDK_specifications.pdf)) |
|||
(530 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
Process Manager | |||
== Module == | == Module == | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version | ! Version !! World !! Privilege | ||
|- | |- | ||
| | | 0.931.010-3.740.011 || Non-secure || Kernel | ||
|} | |} | ||
Line 17: | Line 18: | ||
! Version !! Name !! World !! Visibility !! NID | ! Version !! Name !! World !! Visibility !! NID | ||
|- | |- | ||
| | | 0.931.010-3.740.011 || [[SceProcessmgr#SceProcessmgr|SceProcessmgr]] || Non-secure || User || 0x2DD91812 | ||
|- | |- | ||
| | | 0.931.010-3.740.011 || [[SceProcessmgr#SceProcessmgrForDriver|SceProcessmgrForDriver]] || Non-secure || Kernel || 0x746EC971 | ||
|- | |- | ||
| | | 0.931.010-3.610.011 || [[SceProcessmgr#SceProcessmgrForKernel|SceProcessmgrForKernel]] || Non-secure || Kernel || 0x7A69DE86 | ||
|- | |||
| 3.630.000-3.740.011 || [[SceProcessmgr#SceProcessmgrForKernel|SceProcessmgrForKernel]] || Non-secure || Kernel || 0xEB1F8EF7 | |||
|} | |} | ||
== Types == | |||
<source lang="C"> | |||
//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; | |||
</source> | |||
== SceProcessmgr == | == SceProcessmgr == | ||
Line 31: | Line 344: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-3.740.011 || 0x0039BE45 | ||
|} | |} | ||
<source lang="C">int sceKernelLibcTime(SceUInt32 *pTime);</source> | |||
=== sceKernelGetProcessTitleId === | === sceKernelGetProcessTitleId === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 38: | Line 354: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1. | | 0.931.010-1.50 || not present | ||
|- | |||
| 1.600.061-3.740.011 || 0x03A48771 | |||
|} | |} | ||
=== sceKernelGetProcessName === | === sceKernelGetProcessName === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 45: | Line 364: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1. | | 0.931.010-1.50 || not present | ||
|- | |||
| 1.600.061-3.740.011 || 0x10C52C95 | |||
|} | |} | ||
=== sceKernelIsCDialogAvailable === | === sceKernelIsCDialogAvailable === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 52: | Line 374: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1. | | 0.931.010-1.06 || not present | ||
|- | |||
| 1.500.151-3.740.011 || 0x143BC4D6 | |||
|} | |} | ||
<source lang="C">int sceKernelIsCDialogAvailable(void)</source> | |||
=== sceKernelPowerTick === | === sceKernelPowerTick === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 59: | Line 386: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010 || not present | ||
|- | |||
| 0.940-3.740.011 || 0x2252890C | |||
|} | |} | ||
<source lang="C">int sceKernelPowerTick(SceKernelPowerTickType type);</source> | |||
=== sceKernelGetProcessParam === | === sceKernelGetProcessParam === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 66: | Line 398: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010 || not present | ||
|- | |||
| 0.940-3.740.011 || 0x2BE3E066 | |||
|} | |} | ||
Gets the process' [[PRX#NONAME_exports|SceProcessParam]]. | |||
<source lang="C">SceProcessParam *sceKernelGetProcessParam(void);</source> | |||
=== _sceKernelGetTimer5Reg === | === _sceKernelGetTimer5Reg === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 73: | Line 412: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1. | | 0.931.010-0.990 || not present | ||
|- | |||
| 1.000.071-3.65 || 0x2F73D72F | |||
|} | |} | ||
=== sceKernelPowerUnlock === | === sceKernelPowerUnlock === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 80: | Line 422: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-3.740.011 || 0x466C0CBD | ||
|} | |} | ||
<source lang="C">int sceKernelPowerUnlock(SceKernelPowerTickType type);</source> | |||
=== sceKernelLibcGettimeofday === | === sceKernelLibcGettimeofday === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 87: | Line 432: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-3.740.011 || 0x4B879059 | ||
|} | |} | ||
<source lang="C">int sceKernelLibcGettimeofday(SceKernelTimeval *tv, SceKernelTimezone *tz);</source> | |||
=== _sceKernelRegisterExitAddress === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-0.990 || 0x0278DFB7 | |||
|- | |||
| 1.000.071-3.740.011 || not present | |||
|} | |||
Used in [[SceLibKernel]] module_start. | |||
<source lang="C">int _sceKernelRegisterExitAddress(SceUIntUAddr psceKernelExitThread, SceUIntUAddr psceKernelExitDeleteThread, SceUIntUAddr psceKernelExitCallback);</source> | |||
=== _sceKernelRegisterLibkernelAddresses === | === _sceKernelRegisterLibkernelAddresses === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 94: | Line 456: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1. | | 0.931.010-0.990 || not present | ||
|- | |||
| 1.000.071-3.740.011 || 0x56C2E8FF | |||
|} | |} | ||
<source lang="C">int _sceKernelRegisterLibkernelAddresses(SceLibkernelAddresses *pAddresses);</source> | |||
=== sceKernelRegisterProcessTerminationCallback === | === sceKernelRegisterProcessTerminationCallback === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 101: | Line 468: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-0.940 || not present | ||
|- | |||
| 0.990-3.740.011 || 0x5EC77870 | |||
|} | |} | ||
=== | |||
<source lang="C"> | |||
// cbId can be obtained using sceKernelCreateCallback | |||
SceInt32 sceKernelRegisterProcessTerminationCallback(SceUID pid, SceUID cbId); | |||
</source> | |||
=== sceKernelUnregisterProcessTerminationCallback === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-0.940 || not present | ||
|- | |||
| 0.990-3.740.011 || 0x973A4527 | |||
|} | |} | ||
=== | |||
<source lang="C"> | |||
// Pass same cbId as previously provided to sceKernelRegisterProcessTerminationCallback | |||
SceInt32 sceKernelUnregisterProcessTerminationCallback(SceUID pid, SceUID cbId); | |||
</source> | |||
=== sceKernelPowerLock === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-3.740.011 || 0x7AA73378 | ||
|} | |} | ||
=== | |||
Lock the process something. | |||
<source lang="C">int sceKernelPowerLock(SceKernelPowerTickType type);</source> | |||
=== sceKernelGetProcessTimeWideCore === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010 || not present | ||
|- | |||
| 0.940-3.740.011 || 0x89DA0967 | |||
|} | |} | ||
<source lang="C">SceUInt64 sceKernelGetProcessTimeWideCore(void);</source> | |||
=== sceKernelLibcClock === | === sceKernelLibcClock === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 129: | Line 522: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010 || not present | ||
|- | |||
| 0.940-3.740.011 || 0x9E45DA09 | |||
|} | |} | ||
<source lang="C">SceUInt64 sceKernelLibcClock(void);</source> | |||
=== _sceKernelExitProcessForUser === | === _sceKernelExitProcessForUser === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 136: | Line 534: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-3.740.011 || 0xC053DC6B | ||
|} | |} | ||
<source lang="C">int _sceKernelExitProcessForUser(int status);</source> | |||
=== sceKernelGetStdin === | === sceKernelGetStdin === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 143: | Line 544: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-3.740.011 || 0xC1727F59 | ||
|} | |} | ||
Returns the file descriptor of the current process stdin. | |||
<source lang="C">SceUID sceKernelGetStdin(void);</source> | |||
=== sceKernelGetCurrentProcess === | === sceKernelGetCurrentProcess === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 150: | Line 556: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-3.740.011 || 0xCD248267 | ||
|} | |} | ||
Wrapper to [[SceKernelThreadMgr#sceKernelGetProcessIdForDriver|sceKernelGetProcessIdForDriver]]. | |||
Returns the process ID. | |||
<source lang="C">SceUID sceKernelGetCurrentProcess(void);</source> | |||
=== sceKernelIsGameBudget === | === sceKernelIsGameBudget === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 157: | Line 570: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-0.940 || not present | ||
|- | |||
| 0.990-3.740.011 || 0xCE0F02F0 | |||
|} | |} | ||
<source lang="C">SceBool sceKernelIsGameBudget(void);</source> | |||
=== sceKernelGetProcessTimeCore === | === sceKernelGetProcessTimeCore === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 164: | Line 582: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010 || not present | ||
|- | |||
| 0.940-3.740.011 || 0xD37A8437 | |||
|} | |} | ||
<source lang="C">int sceKernelGetProcessTimeCore(SceUInt64 *pTime);</source> | |||
=== sceKernelGetStdout === | === sceKernelGetStdout === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 171: | Line 594: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-3.740.011 || 0xE5AA625C | ||
|} | |} | ||
Returns the file descriptor of the current process stdout. | |||
<source lang="C">SceUID sceKernelGetStdout(void);</source> | |||
=== sceKernelGetRemoteProcessTime === | === sceKernelGetRemoteProcessTime === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 178: | Line 606: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010|| not present | ||
|- | |||
| 0.940-3.740.011 || 0xE6E9FCA3 | |||
|} | |} | ||
<source lang="C">int sceKernelGetRemoteProcessTime(SceUID pid, SceUInt64 *pTime);</source> | |||
=== sceKernelCallAbortHandler === | === sceKernelCallAbortHandler === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 185: | Line 618: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1. | | 0.931.010-0.990 || not present | ||
|- | |||
| 1.000.071-3.740.011 || 0xEB6E50BB | |||
|} | |} | ||
=== sceKernelGetProcessTimeLowCore === | === sceKernelGetProcessTimeLowCore === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 192: | Line 628: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010 || not present | ||
|- | |||
| 0.940-3.740.011 || 0xF5D0D4C6 | |||
|} | |} | ||
<source lang="C">int sceKernelGetProcessTimeLowCore(void);</source> | |||
=== sceKernelGetStderr === | === sceKernelGetStderr === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 199: | Line 640: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1. | | 0.931.010-3.740.011 || 0xFA5E3ADA | ||
|} | |||
Returns the file descriptor of the current process stderr. | |||
<source lang="C">SceUID sceKernelGetStderr(void);</source> | |||
=== sceKernelCDialogSessionClose === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || not present | |||
|- | |||
| 1.800.071-3.740.011 || 0xDB4CC1D0 | |||
|} | |||
=== sceKernelCDialogSetLeaseLimit === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.06 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0xEC8DDAAD | |||
|} | |||
=== sceKernelGetExtraTty === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || not present | |||
|- | |||
| 1.800.071-3.740.011 || 0x2D635A00 | |||
|} | |||
=== sceKernelLibcGmtime_r === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.81 || not present | |||
|- | |||
| 2.000.081-3.740.011 || 0xBCA437CD | |||
|} | |||
=== sceKernelLibcLocaltime_r === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.81 || not present | |||
|- | |||
| 2.000.081-3.740.011 || 0x94F041ED | |||
|} | |||
=== sceKernelLibcMktime === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.81 || not present | |||
|- | |||
| 2.000.081-3.740.011 || 0x890BDC39 | |||
|} | |||
=== SceProcessmgr_AAE09BC5 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010 || not present | |||
|- | |||
| 0.940 || 0xAAE09BC5 | |||
|- | |||
| 1.000.071-3.740.011 || not present | |||
|} | |} | ||
Calls [[SceSysmem#sceKernelPowerLockForDriver]]. | |||
<source lang="C">int SceProcessmgr_AAE09BC5(SceKernelPowerTickType type);</source> | |||
=== SceProcessmgr_B2BA89FD === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010 || not present | |||
|- | |||
| 0.940 || 0xB2BA89FD | |||
|- | |||
| 1.000.071-3.740.011 || not present | |||
|} | |||
Calls [[SceSysmem#sceKernelPowerUnlockForDriver]]. | |||
<source lang="C">int SceProcessmgr_B2BA89FD(SceKernelPowerTickType type);</source> | |||
== SceProcessmgrForDriver == | == SceProcessmgrForDriver == | ||
=== | === SceProcessmgrForDriver_C5CF15ED === | ||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xC5CF15ED | |||
|} | |||
Gets some info. | |||
<source lang="C">int SceProcessmgrForDriver_C5CF15ED(SceUInt32 index, void *info);</source> | |||
=== sceKernelGetSyscallTraceFlagForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x54D469E2 | |||
|} | |||
This is a guessed name. | |||
Get current process syscallTraceFlag. | |||
<source lang="C">int sceKernelGetSyscallTraceFlagForDriver(SceUInt32 *value);</source> | |||
=== sceKernelAllocOwnProcessCDialogHeapForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x3B33FFBA | |||
|} | |||
This is a guessed name. | |||
<source lang="C">void *sceKernelAllocOwnProcessCDialogHeapForDriver(SceSize length, void *opt);</source> | |||
=== SceProcessmgrForDriver_1C70501E === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x1C70501E | |||
|} | |||
=== sceKernelFreeOwnProcessCDialogHeapForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x11BEFBBE | |||
|} | |||
This is a guessed name. | |||
<source lang="C">int sceKernelFreeOwnProcessCDialogHeapForDriver(ScePVoid ptr);</source> | |||
=== sceKernelGetProcessInfoListForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0xE8005AFC | |||
|} | |||
This is a guessed name. | |||
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> | |||
=== sceKernelGetProcessInfoList2ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0xBA0A06A4 | |||
|} | |||
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> | |||
=== sceKernelGetBudgetInfoForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x46221964 | |||
|} | |||
Information size is 0x88 bytes. | |||
<source lang="C">int sceKernelGetBudgetInfoForDriver(SceUID pid, void *pInfo);</source> | |||
=== sceKernelRegisterGetProcessTimeFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x4140D633 | |||
|} | |||
This is a guessed name. | |||
<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; | |||
int sceKernelRegisterGetProcessTimeFuncForDriver(const SceProcessTimeFuncTable *pTable); | |||
</source> | |||
=== sceKernelProcessRngForDriver === | |||
{| class="wikitable" | |||
|- | |||
! 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. | |||
<source lang="C">int sceKernelProcessRngForDriver(SceUID pid, void *dst, SceSize length);</source> | |||
=== sceKernelIsProcessCoredumpHandlerRegisteredForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0xA1CF74FA | |||
|} | |||
This is a guessed name. | |||
<source lang="C">int sceKernelIsProcessCoredumpHandlerRegisteredForDriver(SceUID pid);</source> | |||
=== sceKernelCallCoredumpHandlerForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0xB559410A | |||
|} | |||
Temp name was sceKernelInvokeProcessCoredumpHandlerForDriver. | |||
<source lang="C">int sceKernelCallCoredumpHandlerForDriver(SceUID pid);</source> | |||
=== SceProcessmgrForDriver_879153D9 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x879153D9 | |||
|} | |||
Maybe get model bool param. | |||
<source lang="C">int SceProcessmgrForDriver_879153D9(SceUID pid, SceUInt32 a2);</source> | |||
=== SceProcessmgrForDriver_E1A67C86 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0xE1A67C86 | |||
|} | |||
Maybe get some count. | |||
Related to display? | |||
<source lang="C">int SceProcessmgrForDriver_E1A67C86(SceUID pid, SceUInt32 *a2);</source> | |||
=== sceKernelGetProcessActiveTimeForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x5BDA978F | |||
|} | |||
This is a guessed name. | |||
<source lang="C">int sceKernelGetProcessActiveTimeForDriver(SceUID pid, SceUInt64 *pTime);</source> | |||
=== SceProcessmgrForDriver_8CB01675 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x8CB01675 | |||
|} | |||
<source lang="C">int SceProcessmgrForDriver_8CB01675(SceUID pid, SceUInt64 *time, SceUInt64 src_time);</source> | |||
=== sceKernelSetProcessTerminatedHandlerForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.65 || 0x5E882B60 | |||
|} | |||
This is a guessed name. | |||
Set Process Terminated callback. Used by [[SceAppMgr]]. | |||
<source lang="C">int sceKernelSetProcessTerminatedHandlerForDriver(void (* cb)(int a1, int a2));</source> | |||
=== sceKernelGetCurrentProcessIdForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x3D4C250E | |||
|- | |||
| 3.60-3.65 || not present | |||
|} | |||
Returns the current process ID. | |||
Wrapper for SceKernelThreadMgr sceKernelGetProcessIdForKernel. | |||
<source lang="C">SceUID sceKernelGetCurrentProcessIdForDriver(void);</source> | |||
=== sceKernelAllocOwnProcessHeapForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.65 || 0x5468892A | |||
|} | |||
<source lang="C">void *sceKernelAllocOwnProcessHeapForDriver(SceSize size, SceKernelHeapMemoryOpt *pOpt);</source> | |||
=== sceKernelAllocRemoteProcessHeapForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.65 || 0x00B1CA0F | |||
|} | |||
<source lang="C">void *sceKernelAllocRemoteProcessHeapForDriver(SceUID pid, SceSize size, SceKernelHeapMemoryOpt *pOpt);</source> | |||
=== sceKernelFreeCurrentProcessHeapForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.65 || 0xFC2A424E | |||
|} | |||
<source lang="C">int sceKernelFreeCurrentProcessHeapForDriver(void *ptr);</source> | |||
=== sceKernelFreeRemoteProcessHeapForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.65 || 0x9C28EA9A | |||
|} | |||
<source lang="C">int sceKernelFreeRemoteProcessHeapForDriver(SceUID pid, void *ptr);</source> | |||
=== sceKernelGetProcessInfoForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.68 || 0x0AFF3EAE | |||
|} | |||
Retrieves process information. | |||
<source lang="C">int sceKernelGetProcessInfoForDriver(SceUID pid, SceKernelProcessInfo *pInfo);</source> | |||
=== sceKernelGetProcessStatusForDriver === | |||
{| class="wikitable" | |||
|- | |||
! 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. | |||
<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" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.65 || 0x1D0F3185 | |||
|} | |||
<source lang="C">int sceKernelSetProcessStatusForDriver(SceUID pid, SceUInt32 status);</source> | |||
=== sceKernelIsProcessSuspendingForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.65 || 0x0CC5B30C | |||
|} | |||
Return whether the process is suspending or not. | |||
<source lang="C">int sceKernelIsProcessSuspendingForDriver(SceUID pid);</source> | |||
=== sceKernelGetProcessTimeLowCoreForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x02179E12 | |||
|} | |||
<source lang="C">SceUInt32 sceKernelGetProcessTimeLowCoreForDriver(void);</source> | |||
=== sceKernelGetProcessTimeWideCoreForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x82D94BE9 | |||
|} | |||
<source lnag="C">SceUInt64 sceKernelGetProcessTimeWideCoreForDriver(void);</source> | |||
=== sceKernelGetProcessTimeCoreForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0xEC283166 | |||
|} | |||
<source lang="C">int sceKernelGetProcessTimeCoreForDriver(SceUInt64 *pTime);</source> | |||
=== sceKernelRegisterKPLSForDriver === | |||
{| class="wikitable" | |||
|- | |||
! 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. | |||
<source lang="C">int sceKernelRegisterKPLSForDriver(const char *name, SceSize size);</source> | |||
=== sceKernelGetCurrentKPLSForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.65 || 0xEE694840 | |||
|} | |||
Temp name was sceKernelGetProcessLocalStorageAddrForDriver. | |||
<source lang="C">void *sceKernelGetCurrentKPLSForDriver(int key);</source> | |||
=== sceKernelGetRemoteKPLSForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.68 || 0xAF80F39C | |||
|} | |||
Temp name was sceKernelGetProcessLocalStorageAddrForPidForDriver. | |||
This functions gets Remote Kernel Process Local Storage. | |||
<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" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0xC074EB31 | |||
|} | |||
<source lang="C">int sceKernelGetRemoteProcessTimeForDriver(SceUID pid, SceUInt64 *pTime);</source> | |||
=== sceKernelIsCDialogAvailableForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x2F6020B7 | |||
|} | |||
<source lang="C">int sceKernelIsCDialogAvailableForDriver(void)</source> | |||
=== sceKernelIsGameBudgetForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0xF7A8BB25 | |||
|} | |||
<source lang"C">int sceKernelIsGameBudgetForDriver(void);</source> | |||
=== sceKernelHasBusyProcessForDriver === | |||
{| class="wikitable" | |||
|- | |||
! 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. | |||
<source lang="C">SceBool sceKernelHasBusyProcessForDriver(void);</source> | |||
=== sceKernelGetCompiledSdkVersionByPidForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 3.60-3.65 || 0xD141C076 | ||
|} | |} | ||
< | <source lang="C">int sceKernelGetCompiledSdkVersionByPidForDriver(SceUID pid, SceUInt32 *puiSdkVer);</source> | ||
int | |||
</ | |||
=== sceKernelRegisterCoredumpHandlerForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x21A6F0EC | |||
|} | |||
< | <source lang="C">int sceKernelRegisterCoredumpHandlerForDriver(void *handler, SceSize size, void *memblock_addr);</source> | ||
=== sceKernelUnregisterCoredumpHandlerForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x33B3D026 | |||
|} | |||
} | |||
</ | <source lang="C">int sceKernelUnregisterCoredumpHandlerForDriver(void);</source> | ||
=== sceKernelSetSyscallTraceFlagForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x24FA97A5 | |||
|} | |||
<source lang="C">int sceKernelSetSyscallTraceFlagForDriver(SceUID pid, int flag);</source> | |||
=== sceKernelAllocRemoteCDialogHeapForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x8A85FA28 | |||
|} | |||
<source lang="C">void *sceKernelAllocRemoteCDialogHeapForDriver(SceUID pid, SceSize length, void *opt);</source> | |||
=== sceKernelFreeRemoteCDialogHeapForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0xDD0A58D1 | |||
|} | |||
<source lang="C">int sceKernelFreeRemoteCDialogHeapForDriver(SceUID pid, void *ptr);</source> | |||
=== sceKernelGetProcessResourceLimitForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0xB80DBD53 | |||
|} | |||
<source lang="C">int sceKernelGetProcessResourceLimitForDriver(SceUID pid, void *result);</source> | |||
=== sceKernelSetInitialPMCRForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 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.60 || 0x594319C7 | |||
|} | |||
This is a guessed name. Temp name was sceKernelGetProcessPMCRForDriver. | |||
<source lang="C">int sceKernelGetPMCRForDriver(SceUID pid);</source> | |||
=== sceKernelSetInitialPMUSERENRForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0xB1C3EFCA | |||
|} | |||
<source lang="C">int sceKernelSetInitialPMUSERENRForDriver(SceUID pid, SceUInt32 value);</source> | |||
=== sceKernelSetPMUSERENRForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x6599E5D9 | |||
|} | |||
<source lang="C">int sceKernelSetPMUSERENRForDriver(SceUID pid, SceUInt32 value);</source> | |||
== SceProcessmgrForKernel == | == SceProcessmgrForKernel == | ||
=== | === sceKernelChangeProcessCpuAffinityForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 3.60 || 0x0A60B40A | ||
|- | |||
| 3.65 || 0xF013B7F1 | |||
|} | |} | ||
=== sceKernelEnablePHWPForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x20174234 | |||
|- | |||
| 3.65 || 0x9DF739C7 | |||
|} | |||
Gets the process | === sceKernelDisablePHWPForKernel === | ||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x62D048D2 | |||
|- | |||
| 3.65 || 0xA2EE1B7F | |||
|} | |||
=== sceKernelGrowBudgetForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.60 || 0x029378AC | |||
|- | |||
| 3.65 || 0x48DD3348 | |||
|} | |||
<source lang="C">SceInt32 sceKernelGrowBudgetForKernel(SceInt32 budgetId, SceInt32 idx, SceSize size);</source> | |||
=== sceKernelGetPhyMemPartForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xCCB4289B | |||
|- | |||
| 3.65 || 0x923AF3CC | |||
|} | |||
<source lang="C"> | |||
// 1: Kernel | |||
// 2: Tool | |||
// 3: Game | |||
// 4: PhyCont | |||
// 5: Shared | |||
// 6: Game CDialog | |||
// 7: Shell | |||
void *sceKernelGetPhyMemPartForKernel(SceUInt32 type); | |||
</source> | |||
=== sceKernelCreateProcessForKernel === | |||
{| class="wikitable" | |||
|- | |||
! 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. | |||
<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" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x38FB7BCA | |||
|- | |||
| 3.65 || 0x5137B783 | |||
|} | |||
<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> | |||
=== sceKernelStartProcessExtForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x36728B16 | |||
|- | |||
| 3.65 || 0x026F3E87 | |||
|} | |||
Temp name was sceKernelStartProcess2ForKernel. | |||
Used by [[SceAppMgr]] | |||
<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> | |||
=== sceKernelSpawnProcessForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x31834C49 | |||
|- | |||
| 3.65 || 0x1E5B38E5 | |||
|} | |||
Calls sceKernelCreateProcessForKernel then sceKernelStartProcessForKernel. | |||
<source lang="C"> | |||
/** | |||
* @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); | |||
</source> | |||
=== sceKernelSpawnProcessExtForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x8F320D2B | |||
|- | |||
| 3.65 || 0x5A57766C | |||
|} | |||
Calls sceKernelCreateProcessForKernel then sceKernelStartProcessExtForKernel. | |||
<source lang="C"> | |||
/** | |||
* @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" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xB9E68092 | |||
|- | |||
| 3.65 || 0xD991C85E | |||
|} | |||
Temp name was sceKernelGetProcessKernelBufForKernel. | |||
Gets the process object associated to a PID. | |||
<source lang="C">SceUIDProcessObject* sceKernelUIDtoProcessForKernel(ScePID pid);</source> | |||
=== sceKernelGetProcessMainThreadForDebuggerForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x95F9ED94 | |||
|- | |||
| 3.65 || 0xD20553C6 | |||
|} | |||
Temp name was sceKernelGetProcessMainThreadForKernel. | |||
<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" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x3EC5FDF4 | |||
|- | |||
| 3.60-3.74 || not present | |||
|} | |||
<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> | |||
=== sceKernelProcessDebugSuspendForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x6AECE4CD | |||
|- | |||
| 3.65 || 0x93B8E785 | |||
|} | |||
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> | |||
=== sceKernelProcessDebugResumeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x080CDC59 | |||
|- | |||
| 3.65 || 0x6894499C | |||
|} | |||
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> | |||
=== sceKernelResumeProcessForDebuggerForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xB13E3C7B | |||
|- | |||
| 3.65 || 0x8FB7FD50 | |||
|} | |||
<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> | |||
=== sceKernelResumeProcessForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xE0A9C9C4 | |||
|- | |||
| 3.65 || 0xEFBCF15B | |||
|} | |||
<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> | |||
=== sceKernelExitProcessForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x4CA7DC42 | |||
|- | |||
| 3.65 || 0x905621F9 | |||
|} | |||
<source lang ="C">int sceKernelExitProcessForKernel(int status);</source> | |||
=== sceKernelSetProcessSelfAuthInfoForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.120.011 || 0x5ABA2772 | |||
|- | |||
| 2.500.071-3.740.011 || not present | |||
|} | |||
<source lang="C">int sceKernelSetProcessSelfAuthInfoForKernel(SceUID pid, SceSelfAuthInfo *self_auth_info);</source> | |||
=== sceKernelGetProcessSelfAuthInfoForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xE4C83B0D | |||
|- | |||
| 3.65 || 0x324F2B20 | |||
|} | |||
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> | |||
=== sceKernelLibcTimeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x9E38C556 | |||
|- | |||
| 3.65 || 0xB0E076D6 | |||
|} | |||
=== sceKernelLibcGettimeofdayForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xDE8B8B5E | |||
|- | |||
| 3.65 || 0x014F5113 | |||
|} | |||
=== sceKernelGetCurrentTickForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xD17D6110 | |||
|- | |||
| 3.65 || 0xD231AE5B | |||
|} | |||
This is a guessed name. | |||
=== _sceKernelGetCurrentTickForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xACBAAB10 | |||
|- | |||
| 3.65 || 0x3EBC93BB | |||
|} | |||
This is a guessed name. | |||
=== sceKernelGetUIDProcessClassForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xC6820972 | |||
|- | |||
| 3.65 || 0x98AE4BC8 | |||
|} | |||
Temp name was sceKernelGetClassForUid2ForKernel, sceKernelGetProcessClassForKernel. | |||
<source lang="C">SceClass *sceKernelGetUIDProcessClassForKernel(void);</source> | |||
=== sceKernelKillProcessForDebuggerForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 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"> | |||
// option: 0: flag 0x2, 1: flag 0x20, 2: flag 0x40 | |||
int sceKernelKillProcessForKernel(SceUID pid, SceInt32 option); | |||
</source> | |||
=== sceKernelGetMMUL1InfoForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || 0xC526C6F2 | |||
|- | |||
| 3.60-3.74 || not present | |||
|} | |||
<source lang="C">int sceKernelGetMMUL1InfoForKernel(SceUID pid, const void *addr, void *pInfo);</source> | |||
=== sceKernelGetMMUL2InfoForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0xE2681221 | |||
|- | |||
| 3.60-3.74 || not present | |||
|} | |||
<source lang="C">int sceKernelGetMMUL2InfoForKernel(SceUID pid, const void *addr, void *pInfo);</source> | |||
=== sceKernelWaitProcessEndForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x0EE2658E | |||
|- | |||
| 3.65 || 0x0B9BE51B | |||
|} | |||
<source lang="C">int sceKernelWaitProcessEndForKernel(SceUID pid, int *pResult, SceUInt32 *pTimeout);</source> | |||
=== sceKernelWaitProcessEventCompletionForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x6A7FF80A | |||
|- | |||
| 3.65 || 0x0F23A5ED | |||
|} | |||
=== sceKernelGetPHWPForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xC55BF6C3 | |||
|- | |||
| 3.65 || 0x6898F7A7 | |||
|} | |||
<source lang="C">int sceKernelGetPHWPForKernel(SceUID pid, SceUInt32 a2, int *a3, int *a4);</source> | |||
=== sceKernelSetPHWPForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x54D7B16A | |||
|- | |||
| 3.65 || 0xB2421F93 | |||
|} | |||
<source lang="C">int sceKernelSetPHWPForKernel(SceUID pid, int a2, int a3, int a4);</source> | |||
=== sceKernelGetPHBPForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xA9C20202 | |||
|- | |||
| 3.65 || 0x060DA466 | |||
|} | |||
<source lang="C">int sceKernelGetPHBPForKernel(SceUID pid, SceUInt32 a2, int *a3, int *a4);</source> | |||
=== sceKernelSetPHBPForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x59FA3216 | |||
|- | |||
| 3.65 || 0x597E6D2C | |||
|} | |||
<source lang="C">int sceKernelSetPHBPForKernel(SceUID pid, int a2, int a3, int a4);</source> | |||
=== sceKernelGetProcessAppForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x34FA9645 | |||
|- | |||
| 3.65 || 0xE5097B4F | |||
|} | |||
<source lang="C">int sceKernelGetProcessAppForKernel(SceUID pid);</source> | |||
=== sceKernelGetProcessParentIdForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x3C4D2889 | |||
|- | |||
| 3.65 || 0xA5E55217 | |||
|} | |||
Returns the parent process's PID. | |||
<source lang="C">ScePID sceKernelGetProcessParentIdForKernel(SceUID pid);</source> | |||
=== sceKernelSuspendProcessForDebuggerForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x234A80B6 | |||
|- | |||
| 3.65 || 0x4232517A | |||
|} | |||
<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> | |||
=== sceKernelSuspendProcessForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xCF83C23B | |||
|- | |||
| 3.65 || 0x1400A1F8 | |||
|} | |||
<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); | |||
// 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 | |||
|} | |||
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:Modules]] | [[Category:Modules]] | ||
[[Category: | [[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.