SceKernelThreadMgr

PS Vita supports multi-threading in the non-secure kernel but not in the secure kernel. There is no user/POSIX threads; all threads are implemented as kernel threads and processes are 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.

Class Types
For, see SceProcessmgr page.

_sceKernelExtendKernelStackWideForDriver
Temp name was sceKernelRunWithStackForDriver.

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

sceKernelExtendKernelStackWideForDriver
Temp name was sceKernelRunWithStack2ForDriver.

sceKernelGetWorkqueueCreateInfoForDriver
This is a guessed name.

sceKernelGetWorktaskCreateInfoForDriver
This is a guessed name.

sceKernelGetWorkqueueInfoVectorForDriver
This is a guessed name.

sceKernelGetProcWorkqueueInfoVectorForDriver
This is a guessed name.

sceKernelGetWorktaskInfoVectorForDriver
This is a guessed name.

sceKernelGetProcWorktaskInfoVectorForDriver
This is a guessed name.

sceKernelWaitWorktaskForDriver
This is a guessed name.

sceKernelWaitWorktask2ForDriver
This is a guessed name.

with user stack overflow detect?

sceKernelCloseEventFlagForDriver
Temp name was sceKernelDeleteEventFlagForDriver.

sceKernelChangeThreadPriority2ForDriver
Temp name was sceKernelChangeThreadPriorityForDriver.

sceKernelIsThreadDebugSuspendedForDriver
Used by SceCoredump maybe to get the state at the time of process crash.

sceKernelCreateRemoteThreadForDriver
Some value are allowed if Thread name is "ScePsp2SwuCui".

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

sceKernelGetThreadCpuRegistersForDriver
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 is uncertain what the difference is between the two parts. It seems like it is a usermode/kernel separation. It could also be a current/exception difference. In normal usage on a suspended thread it seems to be the usermode 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.

sceKernelChangeThreadSuspendStatusForDriver
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.

sceKernelFinalizeFastMutexForDriver
Temp name was sceKernelDeleteFastMutexForDriver.

sceKernelSetThreadAccessLevelForDriver
Temp name was sceKernelSetPermissionForDriver.

sceKernelGetProcessIdForDriver
Returns the process ID.

sceKernelSetImpersonateIdForDriver
This is a guessed name. Temp name was sceKernelSetProcessIdToTLSForDriver.

Sets impersonation ID for the current thread.

Impersonation ID is used for access checks in e.g. SceIofilemgr.

sceKernelGetImpersonateIdForDriver
This is a guessed name. Temp name was sceKernelGetProcessIdFromTLSForDriver.

Returns the current thread's impersonation ID.

Used by SceIofilemgr, which calls the returned value.

sceKernelRegisterTimerForDriver
// seen: unk = 0, 2 so maybe UDCD bus

sceKernelRegisterTimerWithOptForDriver
This is a guessed name.

sceKernelGetTHBPForDriver
Used by SceDeci4pSDbgp.

Get thread hardware break point.

SceThreadmgrForDriver_86DAE59B
Get maybe current CPU mask.

sceKernelCancelAlarmForDriver
Used in SceCtrl, SceTouch.

sceKernelGetThreadInfoInternalForDriver
This is a guessed name.

sceKernelGetVfpRegisterForDebuggerForDriver
Temp name was sceKernelGetThreadFloatRegisterForDriver.

sceKernelGetUserThreadIdForDriver
This is a guessed name.

sceKernelGetSemaInfoForDriver
This is a guessed name.

sceKernelGetEventFlagInfoForDriver
This is a guessed name.

sceKernelGetLwMutexInfoForDriver
This is a guessed name.

sceKernelGetMsgPipeInfoForDriver
This is a guessed name.

sceKernelGetLwCondInfoForDriver
This is a guessed name.

sceKernelGetThreadExitStatusForDriver
This is a guessed name.

SceThreadmgrForKernel_05F5306C
Uses DIP switch 216.

SceThreadmgrForKernel_CA84C603
Uses DIP switch 216.

SceThreadmgrForKernel_86DAE59B
Get maybe current CPU mask.

sceKernelGetCurrentThreadUnkInfoForKernel
Get some current thread information.

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

sceKernelSetThreadAccessLevelForKernel
Temp name was sceKernelSetPermissionForKernel.

sceKernelGetProcessIdForKernel
Returns the process ID.

_sceKernelExtendKernelStackWideForKernel
Temp name was sceKernelRunWithStackForKernel.

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

sceKernelExtendKernelStackWideForKernel
Temp name was sceKernelRunWithStack2ForKernel.

sceKernelGetThreadContextInfoForKernel
Temp name was sceKernelGetFaultingProcessForKernel.

Returns information about the thread currently scheduled on caller CPU.

This function can be called from an exception or interrupt handler, in which case it returns information about the thread that was interrupted.

sceKernelCloseEventFlagForKernel
Temp name was sceKernelDeleteEventFlagForKernel.

See.

sceKernelSetThreadDebugCallbackForKernel
This is a guessed name.

Code example:

_sceKernelDeleteThread
Simply calls sceKernelDeleteThread;

_sceKernelChangeThreadCpuAffinityMask
Simply calls sceKernelChangeThreadCpuAffinityMask.