SceKernelThreadMgr

From Vita Development Wiki
Jump to navigation Jump to search

PSVita supports multi-threading in the non-secure kernel but not the secure kernel. There is no user/POSIX threads; all threads are implemented as kernel threads and processes are the functionally the same as threads. Threads can be specified to run on a specific core with the CPU affinity mask option when creating the thread and by default, threads can run on any core. The kernel process can also run on any core. Additionally, the secure kernel can also run on any core.

Module

This module exists only in non-secure world. The SELF can be found in os0:kd/threadmgr.skprx.

Known NIDs

Version Name World Privilege NID
1.69 SceKernelThreadMgr Non-secure Kernel 0xA09CFA5C
3.57 SceKernelThreadMgr Non-secure Kernel 0x21530BE9
3.60 SceKernelThreadMgr Non-secure Kernel 0xF46ED7B2
3.65 SceKernelThreadMgr Non-secure Kernel 0x23A1B482

Libraries

This module is accessible by usermode.

Known NIDs

Version Name World Visibility NID
1.69-3.60 SceThreadmgrForDriver Non-secure Kernel 0xE2C40624
1.69-3.60 SceThreadmgrForKernel Non-secure Kernel 0xA8CA0EFD
3.65-3.67 SceThreadmgrForKernel Non-secure Kernel 0x7F8593BA
3.60 SceThreadmgrCoredumpTime Non-secure User 0x5E8D0E22
1.69-3.60 SceThreadmgr Non-secure User 0x859A24B1

Types

/** @name	Basic thread functions
 */
/*@{*/

/** 
 * @defgroup	Thread attributes
 * Defining thread attributes
 * Specified in attr argument of sceKernelCreateThread ()
 */
/*@{*/
#define SCE_KERNEL_THREAD_ATTR_NOUSE_VFP		(0x01000000U)		/**< Do not use VFP */
/*@}*/

/** 
 * @defgroup	Thread priority
 * Defining thread priorities
 */
/*@{*/
#define SCE_KERNEL_HIGHEST_PRIORITY_USER		(64)		/**< Highest priority */
#define SCE_KERNEL_LOWEST_PRIORITY_USER			(191)		/**< Lowest priority */

#define SCE_KERNEL_DEFAULT_PRIORITY			((SceInt32)0x10000100)			/**< Default priority (whole system) */

/**
 * Default priority (for users)
 * The default priority for game applications is converted to 160 internally.
 * You can also specify the default value ± offset (SCE_KERNEL_DEFAULT_PRIORITY_USER-10).
 */
#define SCE_KERNEL_DEFAULT_PRIORITY_USER		SCE_KERNEL_DEFAULT_PRIORITY

#define SCE_KERNEL_CURRENT_THREAD_PRIORITY		(0)		/**< The priority of the currently executing thread */
/*@}*/

/** 
 * @defgroup	Thread stack size
 * Defining thread stack size
 */
/*@{*/
#define SCE_KERNEL_STACK_SIZE_MAX			SCE_KERNEL_1MiB			/**< Maximum stack size */
#define SCE_KERNEL_STACK_SIZE_MIN			SCE_KERNEL_4KiB			/**< Minimum stack size */

#define SCE_KERNEL_STACK_SIZE_DEFAULT			SCE_KERNEL_STACK_SIZE_MIN	/**< Default stack size */
#define SCE_KERNEL_STACK_SIZE_DEFAULT_USER_MAIN		(0x00040000)			/**< Default stack size of user main thread (byte) */
/*@}*/

/** 
 * @defgroup	Thread state
 * Defining thread state
 */
/*@{*/
#define SCE_KERNEL_THREAD_STATUS_RUNNING		(0x00000001)	/**< RUNNING status */
#define SCE_KERNEL_THREAD_STATUS_READY			(0x00000002)	/**< READY status */
#define SCE_KERNEL_THREAD_STATUS_STANDBY		(0x00000004)	/**< STANDBY status */
#define SCE_KERNEL_THREAD_STATUS_WAITING		(0x00000008)	/**< WAITING status */
#define SCE_KERNEL_THREAD_STATUS_DORMANT		(0x00000010)	/**< DORMANT status */
#define SCE_KERNEL_THREAD_STATUS_DELETED		(0x00000020)	/**< DELETED status */
#define SCE_KERNEL_THREAD_STATUS_DEAD			(0x00000040)	/**< DEAD status */
#define SCE_KERNEL_THREAD_STATUS_STAGNANT		(0x00000080)	/**< STAGNANT status */
#define SCE_KERNEL_THREAD_STATUS_SUSPENDED		(0x00000100)	/**< SUSPENDED status */

#define SCE_KERNEL_THREAD_STATUS_MASK			(0x0000ffff)	/**< Valid thread state mask */
/*@}*/

/** 
 * @defgroup	Thread wait type
 * Defining thread wait types
 */
/*@{*/
#define SCE_KERNEL_WAITTYPE_DELAY			(0x00000001)	/**< Thread delay */
#define SCE_KERNEL_WAITTYPE_WAITTHEND			(0x00000002)	/**< End of thread */
#define SCE_KERNEL_WAITTYPE_EVENTFLAG			(0x00000004)	/**< Event flag */
#define SCE_KERNEL_WAITTYPE_MUTEX			(0x00000008)	/**< Mutex */
#define SCE_KERNEL_WAITTYPE_FAST_MUTEX			(0x00000010)	/**< Fast mutex */
#define SCE_KERNEL_WAITTYPE_FAST_MUTEX_SPIN		(0x00000020)	/**< High-speed mutex (spin) */
#define SCE_KERNEL_WAITTYPE_SEMAPHORE			(0x00000040)	/**< Semaphore */
#define SCE_KERNEL_WAITTYPE_EVENT			(0x00000080)	/**< Single event */
#define SCE_KERNEL_WAITTYPE_COND			(0x00000100)	/**< Condition variable */
#define SCE_KERNEL_WAITTYPE_MSG_PIPE			(0x00000200)	/**< Message pipe */
#define	SCE_KERNEL_WAITTYPE_RW_LOCK			(0x00000400)	/**< Reader / writer lock */
#define SCE_KERNEL_WAITTYPE_SIGNAL			(0x00000800)	/**< Signal */
#define SCE_KERNEL_WAITTYPE_LW_MUTEX			(0x00001000)	/**< Lightweight mutex */
#define SCE_KERNEL_WAITTYPE_LW_COND			(0x00002000)	/**< Lightweight condition variable */
#define SCE_KERNEL_WAITTYPE_MP_EVENTS			(0x00008000)	/**< Event multiplexing */

#define SCE_KERNEL_WAITTYPE_DELAY_CB			(0x00010001)	/**< With thread delay and callback check */
#define SCE_KERNEL_WAITTYPE_WAITTHEND_CB		(0x00010002)	/**< With thread termination and callback check */
#define SCE_KERNEL_WAITTYPE_EVENTFLAG_CB		(0x00010004)	/**< With event flag and callback check */
#define SCE_KERNEL_WAITTYPE_MUTEX_CB			(0x00010008)	/**< With mutex callback check */
#define SCE_KERNEL_WAITTYPE_FAST_MUTEX_CB		(0x00010010)	/**< With fast mutex callback check */
#define SCE_KERNEL_WAITTYPE_FAST_MUTEX_SPIN_CB		(0x00010020)	/**< High-speed mutex (spin) with callback check */
#define SCE_KERNEL_WAITTYPE_SEMAPHORE_CB		(0x00010040)	/**< With semaphore callback check */
#define SCE_KERNEL_WAITTYPE_EVENT_CB			(0x00010080)	/**< With single event and callback check */
#define SCE_KERNEL_WAITTYPE_COND_CB			(0x00010100)	/**< With condition variable and callback check */
#define SCE_KERNEL_WAITTYPE_MSG_PIPE_CB			(0x00010200)	/**< With message pipe callback check */
#define	SCE_KERNEL_WAITTYPE_RW_LOCK_CB			(0x00010400)	/**< With reader / writer lock and callback check */
#define SCE_KERNEL_WAITTYPE_SIGNAL_CB			(0x00010800)	/**< With signal callback check */
#define SCE_KERNEL_WAITTYPE_LW_MUTEX_CB			(0x00011000)	/**< With lightweight mutex callback check */
#define SCE_KERNEL_WAITTYPE_LW_COND_CB			(0x00012000)	/**< With lightweight condition variable and callback check */
#define SCE_KERNEL_WAITTYPE_MP_EVENTS_CB		(0x00018000)	/**< With event multiplexing and callback check */
/*@}*/

/** 
 * @defgroup	UID
 * Thread ID definition
 */
/*@{*/
#define SCE_KERNEL_THREAD_ID_SELF			(0)	/**< UID representing own thread */
/*@}*/

/** 
 * @defgroup	UID class
 * Class definition of UID managed by thread manager (for User)
 */
/*@{*/
#define SCE_KERNEL_THREADMGR_UID_CLASS_THREAD		(1)	/**< Thread class */
#define SCE_KERNEL_THREADMGR_UID_CLASS_SEMA		(2)	/**< Semaphore class */
#define SCE_KERNEL_THREADMGR_UID_CLASS_EVENT_FLAG	(3)	/**< Event flag class */
#define SCE_KERNEL_THREADMGR_UID_CLASS_MUTEX		(4)	/**< Mutex class */
#define SCE_KERNEL_THREADMGR_UID_CLASS_COND		(5)	/**< Condition variable class */
#define SCE_KERNEL_THREADMGR_UID_CLASS_TIMER		(6)	/**< Timer class */
#define SCE_KERNEL_THREADMGR_UID_CLASS_MSG_PIPE		(7)	/**< Message pipe class */
#define SCE_KERNEL_THREADMGR_UID_CLASS_CALLBACK		(8)	/**< Callback class */
#define SCE_KERNEL_THREADMGR_UID_CLASS_THREAD_EVENT	(9)	/**< Thread event class */
/*@}*/

/** 
 * @defgroup	CPU affinity mask
 * CPU affinity mask definition
 */
/*@{*/
/**
 * @brief Default CPU affinity mask
 *
 * If the default CPU affinity mask is specified for a thread,
 * the CPU affinity mask specified for the process to which it belongs is inherited.
 */
#define SCE_KERNEL_THREAD_CPU_AFFINITY_MASK_DEFAULT	(0)
/*@}*/

/**
 * @brief Thread entry type
 *
 * Thread entry function type. Specify to sceKernelCreateThread().
 * The argument block of the thread given by the argument of sceKernelStartThread() is copied onto the
 * stack of the started thread, and is received from the started thread through the argument of the entry function.
 *
 * When a thread entry function is terminated with return, the thread terminates,
 * and the return value of the entry function becomes the termination status of that thread.
 * The thread exit status can be obtained with sceKernelWaitThreadEnd() or
 * sceKernelGetThreadExitStatus() if the thread is not deleted.
 *
 * @param	argSize		The argument size given by sceKernelStartThread() is passed.
 * @param	pArgBlock	The address on the stack where the argument block given by sceKernelStartThread() is copied is passed.
 * @return	Thread exit status
 */
typedef SceInt32	(*SceKernelThreadEntry)(SceSize argSize, void *pArgBlock);

/**
 * @brief Thread additional data
 *
 * This structure is used to store additional data given when creating a thread with sceKernelCreateThread().
 *
 * Provided for future expansion.
 *
 */
typedef struct _SceKernelThreadOptParam {
	SceSize				size;			/**< Size of this structure (sizeof(SceKernelThreadOptParam)) */
	SceUInt32			attr;			/**< A bit pattern that specifies valid members in a structure */
} SceKernelThreadOptParam;

/**
 * @brief Thread information structure
 *
 * A structure used to store thread information with sceKernelGetThreadInfo().
 */
typedef struct _SceKernelThreadInfo {
	SceSize				size;				/**< Size of this structure (sizeof(SceKernelThreadInfo)) */
	SceUID				processId;			/**< Process ID to which the thread belongs */
	char				name[SCE_UID_NAMELEN+1];	/**< Thread name */
	SceUInt32			attr;				/**< Thread attributes */
	SceUInt32			status;				/**< Thread state */
	SceKernelThreadEntry		entry;				/**< Thread entry function address */
	void				*pStack;			/**< Thread stack address (bottom) */
	SceSize				stackSize;			/**< Thread stack size */
	SceInt32			initPriority;			/**< Thread initial priority */
	SceInt32			currentPriority;		/**< Thread current priority */
	SceInt32			initCpuAffinityMask;		/**< Thread initial CPU affinity mask */
	SceInt32			currentCpuAffinityMask;		/**< Thread current CPU affinity mask */
	SceInt32			currentCpuId;			/**< CPU number to which the thread currently belongs */
	SceInt32			lastExecutedCpuId;		/**< CPU number to which the thread was last executed */
	SceUInt32			waitType;			/**< Type when the thread is waiting */
	SceUID				waitId;				/**< UID of the target synchronization object when the thread is waiting */
	SceInt32			exitStatus;			/**< Thread exit status */
	SceKernelSysClock		runClocks;			/**< Time (in microseconds) executed since the thread was created */
	SceUInt32			intrPreemptCount;		/**< Number of times the thread was preempted by interrupt handling */
	SceUInt32			threadPreemptCount;		/**< Number of times the thread has been preempted by other thread operations */
	SceUInt32			threadReleaseCount;		/**< Number of times the thread has relinquished execution */
	SceInt32			changeCpuCount;			/**< Number of CPUs to which the thread is moved */
	SceInt32			fNotifyCallback;		/**< A flag indicating whether the thread is notified of the callback */
	SceInt32			reserved;			/**< Reserved area */
} SceKernelThreadInfo;

/**
 * @brief Thread operating status on each CPU
 *
 * This structure is used by sceKernelGetThreadRunStatus() to obtain the operating status of threads on each CPU.
 *
 */
typedef struct _SceKernelThreadRunStatus {
	SceSize		size;			/**< Size of this structure (sizeof(SceKernelThreadRunStatus)) */
	struct {
		SceUID		processId;		/**< Process ID to which the running thread belongs */
		SceUID		threadId;		/**< Thread ID being executed */
		SceInt32	priority;		/**< Priority of the running thread */
	} cpuInfo[SCE_KERNEL_MAX_CPU];		/**< Information about individual CPUs */
} SceKernelThreadRunStatus;

/**
 * @brief System state
 *
 * This structure is used to get the system status with sceKernelGetSystemInfo().
 *
 */
typedef struct _SceKernelSystemInfo {
	SceSize			size;				/**< Size of this structure (sizeof(SceKernelSystemInfo)) */
	SceUInt32		activeCpuMask;			/**< Currently available CPU mask */
	struct	{
		SceKernelSysClock	idleClock;			/**< Time when there was no thread to execute */
		SceUInt32		comesOutOfIdleCount;		/**< Number of transitions from a state where there is no thread to execute to another state */
		SceUInt32		threadSwitchCount;		/**< Number of context switches that occurred */
	} cpuInfo[SCE_KERNEL_MAX_CPU];				/**< Information about individual CPUs */
} SceKernelSystemInfo;

/**
 * @name	Mutex
 */
/*@{*/

/** 
 * @defgroup	Mutex attribute
 * Definition of attributes to be specified when creating a mutex
 */
/*@{*/
#define SCE_KERNEL_MUTEX_ATTR_TH_FIFO		SCE_KERNEL_ATTR_TH_FIFO		/**< Mutex wait thread queuing is FIFO */
#define SCE_KERNEL_MUTEX_ATTR_TH_PRIO		SCE_KERNEL_ATTR_TH_PRIO		/**< Mutes waiting threads are queued in order of thread priority */
#define SCE_KERNEL_MUTEX_ATTR_RECURSIVE		(0x00000002)			/**< Mutex can be recursively locked */
#define SCE_KERNEL_MUTEX_ATTR_CEILING		(0x00000004)			/**< Use the mutex priority sealing function */
/*@}*/

/**
 * @brief Mutex additional data
 *
 * This structure is used to store additional data given when creating mutexes with sceKernelCreateMutex().
 *
 * Provided for future expansion.
 *
 */
typedef struct _SceKernelMutexOptParam {
	SceSize		size;			/**< Size of this structure (sizeof(SceKernelMutexOptParam)) */
	SceInt32	ceilingPriority;	/**< Priority ceiling priority */
} SceKernelMutexOptParam;

/**
 * @brief Mutex state
 *
 * This structure is used to get the mutex status with sceKernelGetMutexInfo().
 *
 */
typedef struct _SceKernelMutexInfo {
	SceSize		size;					/**< Size of this structure (sizeof(SceKernelMutexInfo)) */
	SceUID		mutexId;				/**< Mutex identifier */
	char		name[SCE_UID_NAMELEN + 1];		/**< Name of the mutex specified by sceKernelCreateMutex() */
	SceUInt32	attr;					/**< Mutex attributes specified with sceKernelCreateMutex() */
	SceInt32	initCount;				/**< Initial lock count of mutex specified by sceKernelCreateMutex() */
	SceInt32	currentCount;				/**< Current number of mutex locks */
	SceUID		currentOwnerId;				/**< Identifier of the thread that currently owns the mutex */
	SceInt32	numWaitThreads;				/**< Number of threads waiting for the mutex */
} SceKernelMutexInfo;

Possible function names according to SceTestBridge

sceTestBridgeThreadMgrCallCoredumpHandler -> ??
sceTestBridgeThreadMgrClearThreadMgrTestMode -> ??
sceTestBridgeThreadMgrDeleteStopThreadEvf -> ??
sceTestBridgeThreadMgrExitDeleteThreadInSyscall -> sceKernelExitDeleteThread
sceTestBridgeThreadMgrFastMutexLockUnlock -> ??
sceTestBridgeThreadMgrFastMutexShowStat -> ??
sceTestBridgeThreadMgrFastMutexStart -> ??
sceTestBridgeThreadMgrFastMutexStop -> ??
sceTestBridgeThreadMgrGetLwMutexInfoAll -> looks like _sceKernelGetLwMutexInfoById
sceTestBridgeThreadMgrIsCoredumpHandlerRegistered
sceTestBridgeThreadMgrRegisterCoredumpHandler -> sceCoredumpRegisterCoredumpHandler
sceTestBridgeThreadMgrResumeThread -> sceKernelResumeThreadForVM
sceTestBridgeThreadMgrRunningInSyscall -> ??
sceTestBridgeThreadMgrSetAndDeleteSuspendThreadEvf -> ??
sceTestBridgeThreadMgrSetThreadMgrTestMode -> ??
sceTestBridgeThreadMgrSpawnPriorityThread -> ??
sceTestBridgeThreadMgrStopThread -> sceKernelStopThreadForKernel
sceTestBridgeThreadMgrSuspendThread -> sceKernelSuspendThreadForVM
sceTestBridgeThreadMgrUnregisterCoredumpHandler -> sceCoredumpUnregisterCoredumpHandler
sceTestBridgeThreadMgrWaitInSyscall -> ??
sceTestBridgeThreadMgrWaitInSyscall2 -> ??
sceTestbridgeApi -> ??

SceThreadmgrForDriver

sceKernelWaitThreadEndCBForDriver

Version NID
3.60 0x9EF4F62C

sceKernelWaitThreadEndForDriver

Version NID
3.60 0x3E20216F

sceKernelWaitEventFlagCBForDriver

Version NID
3.60 0x8A35F714

sceKernelWaitEventFlagForDriver

Version NID
3.60 0x0C1D3F20

sceKernelWaitEventCBForDriver

Version NID
3.60 0x360C655C

sceKernelWaitEventForDriver

Version NID
3.60 0xC529EA32

sceKernelUnregisterThreadEventHandlerForDriver

Version NID
3.60 0x2C8ED6F0

sceKernelUnregisterCallbackFromEventAllForDriver

Version NID
3.60 0x8DADBD16

sceKernelUnregisterCallbackFromEventForDriver

Version NID
3.60 0x2E48D81C

sceKernelUnlockWriteRWLockForDriver

Version NID
3.60 0x94A73797

sceKernelUnlockReadRWLockForDriver

Version NID
3.60 0xDE1B9EEE

sceKernelTryLockWriteRWLockForDriver

Version NID
3.60 0xA96F2E5A

sceKernelTryLockReadRWLockForDriver

Version NID
3.60 0xFC2B5A50

sceKernelStopTimerForDriver

Version NID
3.60 0x474F214B

sceKernelStartTimerForDriver

Version NID
3.60 0x84C4CE4D

sceKernelSignalSemaForDriver

Version NID
3.60 0xD270498B

sceKernelSignalCondAllForDriver

Version NID
3.60 0x6EC78CD0

sceKernelSetTimerTimeWideForDriver

Version NID
3.60 0x85195A16

sceKernelSetEventFlagForDriver

Version NID
3.60 0xD4780C3E

sceKernelSetEventForDriver

Version NID
3.60 0x9EA3A45C

sceKernelRunWithStackForDriver

Version NID
3.60 0xE54FD746

This takes a function and runs it exclusively on the current core on its own stack.

// stack_size should be 0x2000
int sceKernelRunWithStackForDriver(int stack_size, void *func, void *args);

sceKernelRunWithStack2ForDriver

Version NID
3.60 0xA2C801A5
// stack_size should be 0x2000
int sceKernelRunWithStack2ForDriver(int stack_size, void *func, void *args);

sceKernelRegisterCallbackToEventForDriver

Version NID
3.60 0x832A7E0C

sceKernelPulseEventWithNotifyCallbackForDriver

Version NID
3.60 0x714A107A

sceKernelPulseEventForDriver

Version NID
3.60 0x2427C81B

sceKernelPollSemaForDriver

Version NID
3.60 0x4FDDFE24

sceKernelPollEventFlagForDriver

Version NID
3.60 0x76C6555B

sceKernelNotifyCallbackForDriver

Version NID
3.60 0xC3E00919

sceKernelGetTimerTimeWideForDriver

Version NID
3.60 0xC1286004

sceKernelGetTimerBaseWideForDriver

Version NID
3.60 0xA6D11DD3

sceKernelGetThreadmgrUIDClassForDriver

Version NID
3.60 0x0A20775A

sceKernelGetThreadTLSAddrForDriver

Version NID
3.60 0x66EEA46A

sceKernelGetThreadStackFreeSizeForDriver

Version NID
3.60 0x7B278A0B

sceKernelGetThreadCpuAffinityMaskForDriver

Version NID
3.60 0x83DC703D

sceKernelGetCallbackCountForDriver

Version NID
3.60 0x0892D8DF

sceKernelEnqueueWorkQueueForDriver

Version NID
3.60 0xE50E1185

sceKernelDeleteThreadForDriver

Version NID
3.60 0xAC834F3F

sceKernelDeleteSemaForDriver

Version NID
3.60 0x16A35E58

sceKernelDeleteMutexForDriver

Version NID
3.60 0x0A912340
int sceKernelDeleteMutexForDriver(SceUID mutexid);

sceKernelDeleteEventFlagForDriver

Version NID
3.60 0x71ECB352

sceKernelCreateThreadForDriver

Version NID
3.60 0xC6674E7D

sceKernelCreateSimpleEventForDriver

Version NID
3.60 0x357A8177

sceKernelCreateMutexForDriver

Version NID
3.60 0xFBAA026E
SceUID sceKernelCreateMutexForDriver(const char *pName, SceUInt attr, int initCount, const SceKernelMutexOptParam *pOptParam);

sceKernelCreateEventFlagForDriver

Version NID
3.60 0x4336BAA4

sceKernelClearEventFlagForDriver

Version NID
3.60 0x4F1DA3BE

sceKernelClearEventForDriver

Version NID
3.60 0x9C335818

sceKernelChangeThreadPriorityForDriver

Version NID
3.60 0x63DAB420

sceKernelCancelCallbackForDriver

Version NID
3.60 0xC040EC1C

sceKernelCancelMsgPipeForDriver

Version NID
3.60 0x9D6A2311

sceKernelCreateMsgPipeForDriver

Version NID
3.60 0xBF631145

sceKernelDeleteMsgPipeForDriver

Version NID
3.60 0xB3453F88

sceKernelSendMsgPipeVectorForDriver

Version NID
3.60 0x67DD3BAD

sceKernelTryReceiveMsgPipeVectorForDriver

Version NID
3.60 0xCE09221A

sceKernelTrySendMsgPipeVectorForDriver

Version NID
3.60 0x4CF1BE58

sceKernelIsThreadDebugSuspendedForDriver

Version NID
0.990-3.60 0xA0B1AB21

It seems to be used to get the cause state at the time of process crash.

used By SceCoredump.

/**
 * @param[in]   thid        thread id (kernel uid)
 * @return      suspend state, else < 0 on error.
 */
int sceKernelIsThreadDebugSuspendedForDriver(SceUID thid);

sceKernelDebugResumeThreadForDriver

Version NID
0.990-3.60 0xEC8343DF

sceKernelResumeThreadForDriver

Version NID
0.990-3.60 0xE3CE20AA

sceKernelCreateRemoteThreadForDriver

Version NID
0.990-3.60 0xC8E57BB4

sceKernelGetThreadIdListForDriver

Version NID
3.60 0xEA7B8AEF

This function is used to query and obtain the number of thread within a process.

/**
 * @brief       Retreive a list of all threads belonging to a process.
 * @param[in]   pid         The process to query.
 * @param[out]  ids         The list of thread ids. Can be NULL if output is not required.
 * @param[in]   n           The max number of thread ids to copy out.
 * @param[out]  copy_count  The number of thread ids copied.
 * @return      The number of threads within the process, else < 0 on error.
 */
int sceKernelGetThreadIdListForDriver(SceUID pid, SceUID *ids, int n, int *copy_count);

sceKernelGetThreadCpuRegistersForDriver

Version NID
3.60 0x5022689D

This function is used to get the state of the registers for a SUSPENDED thread. It returns the registers in a two part structure. It's uncertian what the difference is between the two parts. It seems like its a user/kernel separation, but it's uncertain. It could also be a current/exception difference, but it is unconvincing. In normal usage on a suspended thread it seems to be the user aspect that contains valid values. When you query a suspended thread that has no had the opportunity to start yet, the kernel side is filled.

/** Structure representing all ARM registers */
typedef struct ArmCpuRegisters
{
    uint32_t    r0;
    uint32_t    r1;
    uint32_t    r2;
    uint32_t    r3;
    uint32_t    r4;
    uint32_t    r5;
    uint32_t    r6;
    uint32_t    r7;
    uint32_t    r8;
    uint32_t    r9;
    uint32_t    r10;
    uint32_t    r11;
    uint32_t    r12;
    uint32_t    sp;
    uint32_t    lr;
    uint32_t    pc;
    uint32_t    cpsr;
    uint32_t    unk;
} ArmCpuRegisters;

/** Structure containing a threads register states. */
typedef struct ThreadCpuRegisters
{
    /** Set of registers used for user mode. */
    ArmCpuRegisters user;
     /** Set of registers used for kernel mode. */
    ArmCpuRegisters kernel;
} ThreadCpuRegisters;

/**
 * @brief       Query the state of the registers for a suspended thread.
 *
 * The registers returned are the user/kernel set for the requested thread.
 * It's not certain that user/kernel is correct representation, instead it could be current/exception.
 * The thread provided must be suspended for this function to succeed.
 *
 * @param[in]   thid        The thread to query.
 * @param[out]  registers   The set of registers belonging to the thread.
 * @return      Zero on success, else < 0 on error.
 */
int sceKernelGetThreadCpuRegistersForDriver(SceUID thid, ThreadCpuRegisters *registers);

sceKernelChangeThreadSuspendStatusForDriver

Version NID
3.60 0x04C6764B

This function allows you to change the status of a suspended thread. Most of the valid suspend bits are unknown, but some can be used to prevent the kernel rethrowing exceptions or pull threads into the running/ready state.

/**
 * @brief       Change the thread suspension status to another value.
 *
 * More research needs to be done to find out exactly what each status actually means. Some examples of useful scenarios:
 * When handling an exception changing the status to 0x1002 (on a newly suspended thread) will stop the kernel rethrowing the same exception.
 * When resuming a suspended thread changing the status to 2 will allow it to resume.
 *
 * @param[in]   thid    The thread to change.
 * @param[in]   status  The new status for suspension.
 * @return      Zero on success, else < 0 on error.
 */
int sceKernelChangeThreadSuspendStatusForDriver(SceUID thid, int status);

sceKernelChangeActiveCpuMaskForDriver

Version NID
1.69-3.60 0x001173F8

sceKernelGetThreadCurrentPriorityForDriver

Version NID
1.69-3.60 0x01414F0B

sceKernelCreateCallbackForDriver

Version NID
1.69-3.60 0x1C41614C

sceKernelWaitThreadEndCB_089ForDriver

Version NID
1.69 0x0373C5E3
3.60 not present

sceKernelDeleteCallbackForDriver

Version NID
1.69-3.60 0x3A7E17F6

sceKernelExitThreadForDriver

Version NID
1.69-3.60 0x0C8A38E1

sceKernelLockMutex_089ForDriver

Version NID
1.69-3.60 0x16AC80C5
int sceKernelLockMutex_089ForDriver(SceUID mutex_id, int unk1, int unk2);

sceKernelExitDeleteThreadForDriver

Version NID
1.69-3.60 0x1D17DECF

sceKernelUnlockMutex_089ForDriver

Version NID
1.69-3.60 0x1E82E5D0
int sceKernelUnlockMutex_089ForDriver(SceUID mutex_id, int unk1);

sceKernelStartThread_089ForDriver

Version NID
1.69-3.60 0x21F5419B

sceKernelTryLockMutex_089ForDriver

Version NID
1.69-3.60 0x270993A6

sceKernelGetSystemTimeLowForDriver

Version NID
1.69-3.60 0x47F6DE49

sceKernelDelayThreadForDriver

Version NID
1.69-3.60 0x4B675D05

sceKernelGetMutexInfo_089ForDriver

Version NID
1.69-3.60 0x69B78A12
int sceKernelGetMutexInfo_089ForDriver(SceUID mutexid, SceKernelMutexInfo *info);

sceKernelCancelMutex_089ForDriver

Version NID
1.69-3.60 0x7204B846

sceKernelChangeCurrentThreadAttrForDriver

Version NID
1.69-3.60 0x751C9B7A

sceKernelDelayThreadCBForDriver

Version NID
1.69-3.60 0x9C0180E1

sceKernelLockMutexCB_089ForDriver

Version NID
1.69-3.60 0xD06F2886

sceKernelCheckWaitableStatusForDriver

Version NID
1.69-3.60 0xD9BD74EB

sceKernelCheckCallbackForDriver

Version NID
1.69-3.60 0xE53E41F6

sceKernelWaitThreadEnd_089ForDriver

Version NID
1.69 0xF3489EF4
3.60 not present

sceKernelGetSystemTimeWideForDriver

Version NID
1.69-3.60 0xF4EE4FA9

sceKernelGetThreadInfoForDriver

Version NID
0.990-3.60 0x283807E2
int sceKernelGetThreadInfoForDriver(SceUID thid, SceKernelThreadInfo *info)

sceKernelInitializeFastMutexForDriver

Version NID
1.69-3.60 0xAF8E1266
int sceKernelInitializeFastMutexForDriver(void* mutex, const char* name, int unk0, int unk1)

sceKernelLockFastMutexForDriver

Version NID
1.69-3.60 0x70627F3A
int sceKernelLockFastMutexForDriver(void* mutex)

sceKernelUnlockFastMutexForDriver

Version NID
1.69-3.60 0xDB395782
int sceKernelUnlockFastMutexForDriver(void* mutex)

sceKernelDeleteFastMutexForDriver

Version NID
1.69-3.60 0x11FE84A1
int sceKernelDeleteFastMutexForDriver(void* mutex)

sceKernelSignalCondToForDriver

Version NID
1.69-3.60 0x61533DA9
int sceKernelSignalCondToForDriver(SceUID condId, SceUID threadId)

sceKernelCreateCondForDriver

Version NID
1.69-3.60 0xDB6CD34A
SceUID sceKernelCreateCondForDriver(const char *name, SceUInt attr, SceUID mutexId, const SceKernelCondOptParam *option)

sceKernelWaitCondForDriver

Version NID
1.69-3.60 0xCC7E027D
int sceKernelWaitCondForDriver(SceUID condId, unsigned int *timeout)

sceKernelReceiveMsgPipeVectorForDriver

Version NID
1.69-3.60 0xDA1F256B

sceKernelReceiveMsgPipeVectorCBForDriver

Version NID
1.69-3.60 0xDA5C9AC6

sceKernelGetThreadIdForDriver

Version NID
1.69-3.60 0x59D06540
SceUID sceKernelGetThreadIdForDriver(void);

sceKernelDeleteCondForDriver

Version NID
1.69-3.60 0xAEE0D27C
int sceKernelDeleteCondForDriver(SceUID cid);

sceKernelCreateSemaForDriver

Version NID
1.69-3.60 0x30E93C31
/**
 * Creates a new semaphore
 *
 * @par Example:
 * @code
 * int semaid;
 * semaid = sceKernelCreateSemaForDriver("MySema", 0, 1, 1, 0);
 * @endcode
 *
 * @param name - Specifies the name of the sema
 * @param attr - Sema attribute flags (normally set to 0)
 * @param initVal - Sema initial value
 * @param maxVal - Sema maximum value
 * @param option - Sema options (normally set to 0)
 * @return A semaphore id
 */
SceUID sceKernelCreateSemaForDriver(const char *name, SceUInt attr, int initVal, int maxVal, SceKernelSemaOptParam *option);

sceKernelWaitSemaCBForDriver

Version NID
1.69-3.60 0xF55E4D86
/**
 * Lock a semaphore
 *
 * @par Example:
 * @code
 * sceKernelWaitSemaCBForDriver(sema_id, 1, 0);
 * @endcode
 *
 * @param sema_id - The sema id returned from ::sceKernelCreateSemaForDriver
 * @param signal - The value to wait for (i.e. if 1 then wait till reaches a signal state of 1)
 * @param timeout - Timeout in microseconds (assumed).
 *
 * @return < 0 on error.
 */
int sceKernelWaitSemaCBForDriver(SceUID sema_id, int signal, SceUInt *timeout);

sceKernelWaitSemaForDriver

Version NID
1.69-3.60 0x3C8B55A9
/**
 * Lock a semaphore
 *
 * @par Example:
 * @code
 * sceKernelWaitSemaForDriver(sema_id, 1, 0);
 * @endcode
 *
 * @param sema_id - The sema id returned from ::sceKernelCreateSemaForDriver
 * @param signal - The value to wait for (i.e. if 1 then wait till reaches a signal state of 1)
 * @param timeout - Timeout in microseconds (assumed).
 *
 * @return < 0 on error.
 */
int sceKernelWaitSemaForDriver(SceUID sema_id, int signal, SceUInt *timeout);

sceKernelSignalCondForDriver

Version NID
1.69-3.60 0xAC616150
int sceKernelSignalCondForDriver(SceUID condId);

sceKernelChangeThreadCpuAffinityMaskForDriver

Version NID
1.69-3.60 0x6D0733A8

derived from sceKernelChangeThreadCpuAffinityMask

// uid - thread uid
int sceKernelChangeThreadCpuAffinityMaskForDriver(SceUID uid, int mask);

sceKernelSetPermissionForDriver

Version NID
1.69-3.60 0x02EEDF17
// return value is previous value
int sceKernelSetPermissionForDriver(int value);

sceKernelGetProcessIdForDriver

Version NID
1.69-3.60 0x9DCB4B7A

Returns the process ID.

SceUID sceKernelGetProcessIdForDriver(void);

sceKernelSetProcessIdToTLSForDriver

Version NID
1.69-3.60 0x0486F239

Sets given pid into TLS.

// return value is previous value
SceUID sceKernelSetProcessIdToTLSForDriver(SceUID pid);

sceKernelGetProcessIdFromTLSForDriver

Version NID
1.69-3.60 0xFA54D49A

Gets pid from TLS.

// return value is previous value
SceUID sceKernelGetProcessIdFromTLSForDriver();

sceKernelRegisterTimerForDriver

Version NID
3.60 0xC58DF384

// seen: unk = 2 so maybe UDCD bus

int sceKernelRegisterTimerForDriver(char *name, void *function, int unk);

SceThreadmgrForKernel

sceKernelLockMutex_089ForKernel

Version NID
1.69-3.60 0x16AC80C5
int sceKernelLockMutex_089ForKernel(SceUID mutex_id, int unk1, int unk2);

sceKernelUnlockMutex_089ForKernel

Version NID
1.69-3.60 0x1E82E5D0
int sceKernelUnlockMutex_089ForKernel(SceUID mutex_id, int unk1);

sceKernelLockMutexCB_089ForKernel

Version NID
1.69 0xD06F2886
3.60 not present, but exists in ForDriver

sceKernelTryLockMutex_089ForKernel

Version NID
1.69 0x270993A6
3.60 not present, but exists in ForDriver

sceKernelCreateMutexForKernel

Version NID
1.69-3.60 0xFBAA026E
SceUID sceKernelCreateMutexForKernel(const char *pName, SceUInt attr, int initCount, const SceKernelMutexOptParam *pOpt);

sceKernelDeleteMutexForKernel

Version NID
1.69-3.60 0x0A912340
int sceKernelDeleteMutexForKernel(SceUID mutexid);

sceKernelGetMutexInfo_089ForKernel

Version NID
1.69 0x69B78A12
3.60 not present, but exists in ForDriver
int sceKernelGetMutexInfo_089ForKernel(SceUID mutexid, SceKernelMutexInfo *info);

sceKernelCancelMutex_089ForKernel

Version NID
1.69 0x7204B846
3.60 not present, but exists in ForDriver

sceKernelSetPermissionForKernel

Version NID
3.60 0x02EEDF17
// return value is previous value
int sceKernelSetPermissionForKernel(int value);

sceKernelCreateSemaForKernel

Version NID
3.60 0x30E93C31
/**
 * Creates a new semaphore
 *
 * @par Example:
 * @code
 * int semaid;
 * semaid = sceKernelCreateSemaForKernel("MySema", 0, 1, 1, 0);
 * @endcode
 *
 * @param name - Specifies the name of the sema
 * @param attr - Sema attribute flags (normally set to 0)
 * @param initVal - Sema initial value
 * @param maxVal - Sema maximum value
 * @param option - Sema options (normally set to 0)
 * @return A semaphore id
 */
SceUID sceKernelCreateSemaForKernel(const char *name, SceUInt attr, int initVal, int maxVal, SceKernelSemaOptParam *option);

sceKernelSignalSemaForKernel

Version NID
3.60 0xD270498B

sceKernelWaitSemaForKernel

Version NID
3.60 0x3C8B55A9
/**
 * Lock a semaphore
 *
 * @par Example:
 * @code
 * sceKernelWaitSemaForKernel(sema_id, 1, 0);
 * @endcode
 *
 * @param sema_id - The sema id returned from ::sceKernelCreateSemaForKernel
 * @param signal - The value to wait for (i.e. if 1 then wait till reaches a signal state of 1)
 * @param timeout - Timeout in microseconds (assumed).
 *
 * @return < 0 on error.
 */
int sceKernelWaitSemaForKernel(SceUID sema_id, int signal, SceUInt *timeout);

sceKernelDeleteSemaForKernel

Version NID
0.990-3.60 0x16A35E58

sceKernelStartThread_089ForKernel

Version NID
1.69 0x21F5419B
3.60 not present, but exists in ForDriver

sceKernelWaitThreadEnd_089ForKernel

Version NID
1.69 0xF3489EF4
3.60 not present

sceKernelDelayThreadForKernel

Version NID
1.69 0x4B675D05
3.60 not present, but exists in ForDriver

sceKernelStopThreadForKernel

Version NID
0.990-3.60 0x150AEF74

sceKernelSuspendThreadForKernel

Version NID
0.990-3.60 0xAEEE955F

sceKernelWaitThreadEndCB_089ForKernel

Version NID
1.69 0x0373C5E3
3.60 not present

sceKernelExitThreadForKernel

Version NID
1.69 0x0C8A38E1
3.60 not present, but exists in ForDriver

sceKernelExitDeleteThreadForKernel

Version NID
1.69 0x1D17DECF
3.60 not present, but exists in ForDriver

sceKernelDelayThreadCBForKernel

Version NID
1.69 0x9C0180E1
3.60 not present, but exists in ForDriver

sceKernelGetThreadCurrentPriorityForKernel

Version NID
1.69 0x01414F0B
3.60 not present, but exists in ForDriver

sceKernelChangeCurrentThreadAttrForKernel

Version NID
1.69 0x751C9B7A
3.60 not present, but exists in ForDriver

sceKernelCpuScanThreadForProcessmgrForKernel

Version NID
0.990-3.60 0x3B4B8293

sceKernelGetProcessIdForKernel

Version NID
1.69 0x9DCB4B7A
3.60 not present, but exists in ForDriver

Returns the process ID.

SceUID sceKernelGetProcessIdForKernel(void);

sceKernelChangeActiveCpuMaskForKernel

Version NID
1.69 0x001173F8
3.60 not present, but exists in ForDriver

sceKernelCheckWaitableStatusForKernel

Version NID
1.69 0xD9BD74EB
3.60 not present, but exists in ForDriver

sceKernelCheckCallbackForKernel

Version NID
1.69 0xE53E41F6
3.60 not present, but exists in ForDriver

sceKernelRunWithStackForKernel

Version NID
1.69-3.60 0xE54FD746

This takes a function and runs it exclusively on the current core on its own stack.

// stack_size should be 0x2000
int sceKernelRunWithStackForKernel(int stack_size, void *func, void *args);

sceKernelRunWithStack2ForKernel

Version NID
1.69 0xA2C801A5
3.60 not present, but exists in ForDriver
// stack_size should be 0x2000
int sceKernelRunWithStack2ForKernel(int stack_size, void *func, void *args);

sceKernelGetFaultingProcessForKernel

Version NID
3.60 0xD8B9AC8D
3.65-3.67 0x6C1F092F

sceKernelDeleteEventFlagForKernel

Version NID
0.990 0x71ECB352
3.60 not present but exists in ForDriver

SceThreadmgrForKernel_E0833C77

Version NID
3.57 not present, added on 3.60
3.60 0xE0833C77

SceThreadmgr

_sceKernelCloseTimer

Version NID
1.69 0x22605E63
3.60 not present

_sceKernelCloseMutex

Version NID
1.69 0x21716C81
3.60 not present

_sceKernelPollSema

Version NID
1.69 0x20AF286A
3.60 not present

_sceKernelCancelCallback

Version NID
1.69 0x19A0C1B6
3.60 not present

_sceKernelOpenMsgPipe

Version NID
1.69 0x16EC5B7C
3.60 not present

_sceKernelDeleteEventFlag

Version NID
1.69 0x16C93704
3.60 not present

_sceKernelDeleteThread

Version NID
1.69 0x151E0020
3.60 not present

_sceKernelUnlockMutex

Version NID
1.69 0x12948A63
3.60 not present

sceKernelGetActiveCpuMask

Version NID
1.69 0x0C3CBB8B
3.60 not present

_sceKernelSignalCondAll

Version NID
1.69 0x0F11545D
3.60 not present

sceKernelUnregisterThreadEventHandler

Version NID
3.60 0x2C8ED6F0

sceKernelChangeActiveCpuMask

Version NID
1.69-3.60 0x001173F8

sceKernelGetThreadCurrentPriority

Version NID
1.69-3.60 0x01414F0B

sceKernelWaitThreadEndCB_089

Version NID
1.69-3.60 0x0373C5E3

sceKernelGetCallbackCount

Version NID
1.69-3.60 0x038644D5

_sceKernelTryReceiveMsgPipeVector

Version NID
1.69-3.60 0x03CFCF00

sceKernelCloseMutex

Version NID
1.69-3.60 0x03E23AF6

_sceKernelGetSemaInfo

Version NID
1.69-3.60 0x0402C633

_sceKernelWaitCond

Version NID
1.69-3.60 0x040795C7

_sceKernelWaitMultipleEventsCB

Version NID
1.69-3.60 0x0558B7C1

_sceKernelGetCondInfo

Version NID
1.69-3.60 0x05C51CE1

_sceKernelSignalLwCondAll

Version NID
1.69-3.60 0x07D2584A

sceKernelExitThread

Version NID
1.69-3.60 0x0C8A38E1

_sceKernelCreateSema

Version NID
1.69-3.60 0x0D76458E

sceKernelOpenMsgPipe

Version NID
1.69-3.60 0x0E1CB9F6

_sceKernelGetEventFlagInfo

Version NID
1.69-3.60 0x106C216F

_sceKernelSetEventWithNotifyCallback

Version NID
1.69-3.60 0x118F646E

sceKernelSignalCondTo

Version NID
1.69-3.60 0x1269F4EC

sceKernelCloseMsgPipe

Version NID
1.69-3.60 0x1305A065

_sceKernelCancelTimer

Version NID
1.69-3.60 0x13117B21

sceKernelChangeThreadCpuAffinityMask

Version NID
1.69-3.60 0x15129174

sceKernelCloseCond

Version NID
1.69-3.60 0x15C690E0

sceKernelLockMutex_089

Version NID
1.69-3.60 0x16AC80C5
int sceKernelLockMutex_089(SceUID mutex_id, int unk1, int unk2);

sceKernelUnregisterCallbackFromEvent

Version NID
1.69-3.60 0x18462B11

_sceKernelWaitLwCond

Version NID
1.69-3.60 0x18C65756

sceKernelUnlockMutex

Version NID
1.69-3.60 0x1A372EC8

_sceKernelCancelMutex

Version NID
1.69-3.60 0x1B74CB89

sceKernelDeleteThread

Version NID
1.69-3.60 0x1BBDE3D9

_sceKernelCancelSema

Version NID
1.69-3.60 0x1CAF805D

sceKernelExitDeleteThread

Version NID
1.69-3.60 0x1D17DECF

sceKernelUnlockMutex_089

Version NID
1.69-3.60 0x1E82E5D0
int sceKernelUnlockMutex_089(SceUID mutex_id, int unk1);

_sceKernelWaitMultipleEvents

Version NID
1.69-3.60 0x200CC503

sceKernelTryLockWriteRWLock

Version NID
1.69-3.60 0x206CBB66

sceKernelDeleteSimpleEvent

Version NID
1.69-3.60 0x208CFE28

_sceKernelGetThreadCpuAffinityMask

Version NID
1.69-3.60 0x212E6C35

_sceKernelGetTimerEventRemainingTime

Version NID
1.69-3.60 0x215FD24D

_sceKernelPollEvent

Version NID
1.69-3.60 0x21C7913E

sceKernelStartThread_089

Version NID
1.69-3.60 0x21F5419B

_sceKernelExitCallback

Version NID
1.69 0x2682E6ED

sceKernelTryLockMutex_089

Version NID
1.69-3.60 0x270993A6

sceKernelSetTimerTimeWide

Version NID
1.69 0x273B4A4D

_sceKernelOpenCond

Version NID
1.69 0x27DD11EA

_sceKernelGetThreadmgrUIDClass

Version NID
1.69 0x27EE191B

sceKernelOpenMutex_089

Version NID
1.69 0x2928D2EC

_sceKernelCancelEvent

Version NID
1.69 0x29483405

_sceKernelCreateMsgPipeWithLR

Version NID
1.69 0x2AAC8BFD

_sceKernelUnlockLwMutex

Version NID
1.69 0x2ABC41DF

_sceKernelGetMsgPipeCreatorId

Version NID
1.69 0x2B751F95

sceKernelCancelCallback

Version NID
1.69 0x30741EF2

sceKernelSetEvent

Version NID
1.69 0x324218CD

_sceKernelGetTimerBaseWide

Version NID
1.69 0x370E147B

_sceKernelGetThreadContextForVM

Version NID
1.69 0x377094D5

_sceKernelCreateEventFlag

Version NID
1.69 0x38AA5E8E

_sceKernelSetTimerTimeWide

Version NID
1.69 0x39364623

_sceKernelWaitThreadEndCB_0910

Version NID
1.69 0x394BCCF2

_sceKernelSignalCondTo

Version NID
1.69 0x3C00071F

_sceKernelReceiveMsgPipeVector

Version NID
1.69 0x3DD9E4AB

_sceKernelPulseEventWithNotifyCallback

Version NID
1.69 0x3E49D3F1

sceKernelUnlockReadRWLock

Version NID
1.69 0x3EF91145

sceKernelGetTimerTimeWide

Version NID
1.69 0x3EFD3165

_sceKernelCreateCallback

Version NID
1.69 0x3F42E175

_sceKernelWaitEventFlagCB

Version NID
1.69 0x401E0C68

_sceKernelSetEventFlag

Version NID
1.69 0x438917E4

_sceKernelWaitCondCB

Version NID
1.69 0x452B0AB3

_sceKernelWaitSema

Version NID
1.69 0x45389B6B

sceKernelGetSystemTimeLow

Version NID
1.69-3.60 0x47F6DE49

sceKernelStartTimer

Version NID
1.69 0x48091E0C

sceKernelDelayThread

Version NID
1.69-3.60 0x4B675D05

_sceKernelClearEvent

Version NID
1.69 0x4B7F47DC

__sceKernelCreateLwMutex

Version NID
1.69-3.60 0x4BB3154A
typedef struct sceKernelCreateLwMutex_opt //size is 0x10
{
  int initCount;
  const SceKernelLwMutexOptParam* pOptParam;
  uint32_t unk_8;
  uint32_t unk_C;
} sceKernelCreateLwMutex_opt;

int __sceKernelCreateLwMutex(SceKernelLwMutexWork *pWork, const char *pName, unsigned int attr, sceKernelCreateLwMutex_opt* opt);

sceKernelClearEventFlag

Version NID
1.69 0x4CB87CA7

_sceKernelReceiveMsgPipeVectorCB

Version NID
1.69 0x4DBF648E

_sceKernelNotifyCallback

Version NID
1.69 0x4DF8B624

_sceKernelWaitEvent

Version NID
1.69 0x4E0EA70D

sceKernelOpenSimpleEvent

Version NID
1.69 0x4E1E4DF8

sceKernelGetThreadStackFreeSize

Version NID
1.69 0x4F8A3DA0

_sceKernelWaitSignal

Version NID
1.69 0x50407BF4

_sceKernelTryLockWriteRWLock

Version NID
1.69 0x52DD3322

sceKernelOpenMutex

Version NID
1.69 0x52E17182

sceKernelDeleteEventFlag

Version NID
1.69 0x5840162C

_sceKernelUnregisterCallbackFromEventAll

Version NID
1.69 0x5B5650C7

_sceKernelUnlockWriteRWLock

Version NID
1.69 0x5B746A69

_sceKernelGetCallbackCount

Version NID
1.69 0x5D06FF09

_sceKernelLockReadRWLockCB

Version NID
1.69 0x5D86D763

sceKernelGetTimerBaseWide

Version NID
1.69 0x5DBC1960

_sceKernelSendMsgPipeVector

Version NID
1.69 0x5E65E454

_sceKernelWaitExceptionCB

Version NID
1.69 0x5E7876F2

sceKernelResumeThreadForVM

Version NID
1.69 0x5E93840E

_sceKernelCloseCond

Version NID
1.69 0x650CE348

_sceKernelPMonCpuGetCounter

Version NID
1.69 0x667A4649

_sceKernelGetActiveCpuMask

Version NID
1.69 0x67FDA21B

_sceKernelDeleteCallback

Version NID
1.69 0x68D0FA79

sceKernelGetMutexInfo_089

Version NID
1.69-3.60 0x69B78A12
int sceKernelGetMutexInfo_089(SceUID mutexid, SceKernelMutexInfo *info);

_sceKernelPMonThreadGetCounter

Version NID
1.69 0x6B9711AC

_sceKernelGetLwCondInfo

Version NID
1.69 0x6C79F2F2

sceKernelSignalCond

Version NID
1.69 0x6ED2E2DC
3.60 0x6ED2E2DC

_sceKernelSignalLwCondTo

Version NID
1.69 0x6F1A4A2E

_sceKernelGetTimerTime

Version NID
1.69 0x6F2C41BA

_sceKernelWaitException

Version NID
1.69 0x6F7C4DE6

_sceKernelGetEventPattern

Version NID
1.69 0x70358258

sceKernelGetMsgPipeCreatorId

Version NID
1.69 0x70E2A6D2

_sceKernelSuspendThreadForVM

Version NID
1.69 0x7192B01C

sceKernelCancelMutex_089

Version NID
1.69-3.60 0x7204B846

_sceKernelWaitLwCondCB

Version NID
1.69 0x72DBB96B

sceKernelTryLockMutex

Version NID
1.69 0x72FC1F54

sceKernelChangeCurrentThreadAttr

Version NID
1.69-3.60 0x751C9B7A

_sceKernelDeleteLwCond

Version NID
1.69 0x75FCF058

sceKernelOpenCond

Version NID
1.69 0x76BDA02F

sceKernelRegisterCallbackToEvent

Version NID
1.69 0x76FB37E9

_sceKernelSignalCond

Version NID
1.69 0x79889DAC

_sceKernelCreateTimer

Version NID
1.69 0x79BA0A6D

_sceKernelGetMsgPipeInfo

Version NID
1.69 0x7AE31060

sceKernelClearEvent

Version NID
1.69 0x7B2A4B28

_sceKernelUnlockReadRWLock

Version NID
1.69 0x7D16FB3B

_sceKernelWaitEventCB

Version NID
1.69 0x7D483C33

_sceKernelLockReadRWLock

Version NID
1.69 0x7EB9E8B5

_sceKernelLockMutex

Version NID
1.69 0x7FA945AD

_sceKernelGetThreadExitStatus_0940

Version NID
1.69 0x800BB137

_sceKernelLockWriteRWLock

Version NID
1.69 0x80191FAA

_sceKernelGetSystemInfo

Version NID
1.69 0x80544E0C

_sceKernelDeleteSema

Version NID
1.69 0x855F49D5

_sceKernelOpenTimer

Version NID
1.69 0x8564E008

_sceKernelGetTimerBase

Version NID
1.69 0x865DA482

sceKernelPollSema

Version NID
1.69 0x866EF048

_sceKernelGetCallbackInfo

Version NID
1.69 0x86761234

sceKernelStopTimer

Version NID
1.69 0x869E9F20

sceKernelDeleteCond

Version NID
1.69 0x879E6EBD

sceKernelUnregisterCallbackFromEventAll

Version NID
1.69 0x888A7361

_sceKernelGetRWLockInfo

Version NID
1.69 0x8CE3AFC7

sceKernelPulseEvent

Version NID
1.69 0x8D27BAD6

_sceKernelCancelEventWithSetPattern

Version NID
1.69 0x8E68E870

_sceKernelSignalSema

Version NID
1.69 0x8E9A0400

_sceKernelDeleteLwMutex

Version NID
1.69 0x91262C5F

_sceKernelDeleteTimer

Version NID
1.69 0x921A043D

_sceKernelCreateMutex

Version NID
1.69 0x92667AE5

_sceKernelCreateLwCond

Version NID
1.69 0x940B9EBE

sceKernelCloseEventFlag

Version NID
1.69 0x9A68F547

_sceKernelSetEvent

Version NID
1.69 0x9A92C33F

_sceKernelDeleteRWLock

Version NID
1.69 0x9AA387DF

_sceKernelGetTimerTimeWide

Version NID
1.69 0x9AC39954

_sceKernelRegisterCallbackToEvent

Version NID
1.69 0x9B1922F2

sceKernelDelayThreadCB

Version NID
1.69-3.60 0x9C0180E1

_sceKernelCreateSimpleEvent

Version NID
1.69 0x9C187FAD

_sceKernelLockLwMutex

Version NID
1.69 0x9C572180

_sceKernelChangeThreadCpuAffinityMask

Version NID
1.69 0x9C921F8D

_sceKernelOpenMutex

Version NID
1.69 0x9D291788

sceKernelGetProcessId

Version NID
1.69-3.60 0x9DCB4B7A

sceKernelCloseSema

Version NID
1.69 0xA2D81F9E

sceKernelCloseMutex_089

Version NID
1.69 0xA35427EE

sceKernelNotifyCallback

Version NID
1.69 0xA4683592

_sceKernelCloseMsgPipe

Version NID
1.69 0xAA888831

sceKernelDeleteTimer

Version NID
1.69 0xAB1E42C4

_sceKernelGetTimerInfo

Version NID
1.69 0xAC7FE4F3

sceKernelCloseTimer

Version NID
1.69 0xACE60E4A

_sceKernelCreateRWLock

Version NID
1.69 0xB1877F5E

sceKernelCreateCallback

Version NID
1.69 0xB19CF7E9

_sceKernelGetThreadInfo

Version NID
1.69-3.60 0xB373D8A1
typedef struct get_thread_info_opt
{
   uint32_t size; // size of SceKernelThreadInfo
   uint32_t unk;
}get_thread_info_opt;

int _sceKernelGetThreadInfo(SceUID thid, SceKernelThreadInfo *info, get_thread_info_opt* opt)

_sceKernelTrySendMsgPipeVector

Version NID
1.69 0xB3D600AB

sceKernelUnlockWriteRWLock

Version NID
1.69 0xB4151397

_sceKernelGetThreadStackFreeSize

Version NID
1.69 0xB5EC061A

_sceKernelDeleteMsgPipe

Version NID
1.69 0xB6D50FCC

sceKernelOpenTimer

Version NID
1.69 0xB6E286E7

_sceKernelGetSystemTime

Version NID
1.69 0xB70EBAE9

_sceKernelChangeThreadVfpException

Version NID
1.69 0xB8F165B4

_sceKernelOpenSema

Version NID
1.69 0xB96FED7D

_sceKernelGetThreadTLSAddr

Version NID
1.69 0xBACA6891

sceKernelOpenEventFlag

Version NID
1.69 0xBC19F8A1

_sceKernelTryLockMutex

Version NID
1.69 0xBCFB867F

sceKernelChangeThreadPriority

Version NID
1.69 0xBD0139F2

sceKernelCreateThreadForUser

Version NID
1.69 0xC0FAF6A3

_sceKernelSendSignal

Version NID
1.69 0xC21FC992

_sceKernelCloseRWLock

Version NID
1.69 0xC239DBCC

sceKernelSignalCondAll

Version NID
1.69 0xC2E7AC22

_sceKernelStartThread

Version NID
1.69 0xC30B1745

_sceKernelSignalLwCond

Version NID
1.69 0xC37F6983

_sceKernelStartTimer

Version NID
1.69 0xC3ED6E4A

_sceKernelCloseSimpleEvent

Version NID
1.69 0xC6FFE335

_sceKernelGetThreadRunStatus

Version NID
1.69 0xC7FB5497

sceKernelGetThreadmgrUIDClass

Version NID
1.69 0xC9678F7F

_sceKernelStopTimer

Version NID
1.69 0xC96F4269

sceKernelDeleteMutex

Version NID
1.69 0xCB78710D

sceKernelOpenSema

Version NID
1.69 0xCBE235C7

_sceKernelCreateCond

Version NID
1.69 0xCC14FA59

sceKernelChangeThreadVfpException

Version NID
1.69 0xCC18FBAE

sceKernelOpenRWLock

Version NID
1.69 0xCE510196

_sceKernelCancelMsgPipe

Version NID
1.69 0xCE769C83

_sceKernelWaitSignalCB

Version NID
1.69 0xCEA3FC52

_sceKernelCancelRWLock

Version NID
1.69 0xD004EA15

sceKernelLockMutexCB_089

Version NID
1.69-3.60 0xD06F2886

_sceKernelGetThreadExitStatus

Version NID
1.69 0xD3210C08

_sceKernelWaitThreadEnd_0910

Version NID
1.69 0xD38231C9

sceKernelDeleteCallback

Version NID
1.69 0xD469676B

_sceKernelSetThreadContextForVM

Version NID
1.69 0xD4785C41

sceKernelSendSignal

Version NID
1.69 0xD4C367B2

_sceKernelDeleteCond

Version NID
1.69 0xD99F51D3

sceKernelCheckWaitableStatus

Version NID
1.69-3.60 0xD9BD74EB

_sceKernelGetLwCondInfoById

Version NID
1.69 0xD9E78D30

_sceKernelPollEventFlag

Version NID
1.69 0xDAB1B1C8

sceKernelDeleteSema

Version NID
1.69 0xDB32948A

_sceKernelLockMutexCB

Version NID
1.69 0xDB9F5333

_sceKernelLockWriteRWLockCB

Version NID
1.69 0xDBD09B09

_sceKernelOpenRWLock

Version NID
1.69 0xDFCEE5AB

_sceKernelDeleteMutex

Version NID
1.69 0xE0A6D759

_sceKernelSetTimerEvent

Version NID
1.69 0xE2C0BFEF

_sceKernelOpenSimpleEvent

Version NID
1.69 0xE326EA7A

sceKernelCheckCallback

Version NID
1.69-3.60 0xE53E41F6

_sceKernelChangeThreadPriority

Version NID
1.69 0xE61C2B06

sceKernelSignalSema

Version NID
1.69 0xE6B761D1

sceKernelDeleteRWLock

Version NID
1.69 0xE73649CA

sceKernelDeleteMsgPipe

Version NID
1.69 0xE78BCCF7

_sceKernelCloseSema

Version NID
1.69 0xE8C03447

_sceKernelGetMutexInfo

Version NID
1.69-3.60 0xE8CC3DF0
int _sceKernelGetMutexInfo(SceUID mutexid, SceKernelMutexInfo *pInfo, SceKernelMutexOptParam* pOpt);

_sceKernelWaitThreadEnd

Version NID
1.69 0xEA5C52F5

_sceKernelTryLockReadRWLock

Version NID
1.69 0xEB9054B2

sceKernelSetEventFlag

Version NID
1.69 0xEC94DFF7

sceKernelTryLockReadRWLock

Version NID
1.69 0xEFDDA456

_sceKernelClearEventFlag

Version NID
1.69 0xF0526CE2

sceKernelGetThreadCpuAffinityMask

Version NID
1.69 0xF1AE5654

sceKernelWaitThreadEnd_089

Version NID
1.69-3.60 0xF3489EF4

sceKernelGetSystemTimeWide

Version NID
1.69-3.60 0xF4EE4FA9

_sceKernelPulseEvent

Version NID
1.69 0xF6A0FE84

_sceKernelCloseEventFlag

Version NID
1.69 0xF6CFB4F1

_sceKernelSendMsgPipeVectorCB

Version NID
1.69 0xF6D515DC

_sceKernelDeleteSimpleEvent

Version NID
1.69 0xF7413EC7

_sceKernelCancelEventFlag

Version NID
1.69 0xF76F3056

_sceKernelWaitSemaCB

Version NID
1.69 0xF8E06784

_sceKernelWaitThreadEndCB

Version NID
1.69 0xFA3D4491

_sceKernelOpenEventFlag

Version NID
1.69 0xFA64FB37

_sceKernelUnregisterCallbackFromEvent

Version NID
1.69 0xFB66565E

_sceKernelWaitEventFlag

Version NID
1.69 0xFCE2F728

sceKernelCloseRWLock

Version NID
1.69 0xFD5BD5C1

_sceKernelGetLwMutexInfoById

Version NID
1.69 0xFEC9E946

sceKernelCloseSimpleEvent

Version NID
1.69 0xFEF4CA53

_sceKernelSetTimerTime

Version NID
1.69 0xFF738CD9

_sceKernelRegisterThreadEventHandler

Version NID
3.60 0xCE6B49D8
struct sceKernelRegisterThreadEventHandlerOpt
{
  void *handler;
  int num1;
  int reserved0;
  int reserved1;
};

int _sceKernelRegisterThreadEventHandler(char *name, SceUID uid, uint32_t num0, sceKernelRegisterThreadEventHandlerOpt *opt);

SceThreadmgrCoredumpTime

sceKernelExitThread

Version NID
3.60 0x0C8A38E1