SceLibKernel, not to be confused with Kernel is a user module that implements wrappers to some common syscalls (for example, SceIofilemgr), some usermode standard library functions (including C standard library), and other common features like heap management. This module is the functionality similar to libc.so.6 on Linux.
Module
This is a usermode module and exists only in usermode. The SELF can be found in os0:us/libkernel.suprx
.
Version |
World |
Privilege
|
1.00-3.73 |
Non-secure |
User
|
Libraries
Known NIDs
SceLibKernel
sceKernelWaitEvent
Version |
NID
|
3.60 |
0x120F03AF
|
SceInt32 sceKernelWaitEvent(SceUID eventId, SceUInt32 waitPattern, SceUInt32 *pResultPattern, SceUInt64 *pUserData, SceUInt32 *pTimeout);
sceKernelSetTimerTime
Version |
NID
|
3.60 |
0xFFAD717F
|
int sceKernelSetTimerTime(SceUID timerId, SceUInt64 *time);
sceKernelSetTimerEvent
Version |
NID
|
3.60 |
0x621D293B
|
int sceKernelSetTimerEvent(SceUID timerId, int type, SceUInt64 *time, SceBool repeat);
sceKernelGetTimerTime
Version |
NID
|
3.60 |
0x381DC300
|
int sceKernelGetTimerTime(SceUID timerId, SceUInt64 *time);
sceKernelGetTimerInfo
Version |
NID
|
3.60 |
0x7E35E10A
|
int sceKernelGetTimerInfo(SceUID timerId, void *pInfo);
sceKernelGetTimerEventRemainingTime
Version |
NID
|
3.60 |
0x75B1EB3E
|
int sceKernelGetTimerEventRemainingTime(SceUID timerId, SceUInt64 *time);
sceKernelGetTimerBase
Version |
NID
|
3.60 |
0x1F59E04D
|
int sceKernelGetTimerBase(SceUID timerId, SceUInt64 *result);
sceKernelCancelTimer
Version |
NID
|
3.60 |
0x9CCF768C
|
int sceKernelCancelTimer(SceUID timerId, SceUInt32 *a2);
sceKernelAtomicAddAndGet8
Version |
NID
|
3.20 |
0x8F7BD940
|
SceInt8 sceKernelAtomicAddAndGet8(SceInt8 *store, SceInt8 value);
sceKernelAtomicAddAndGet16
Version |
NID
|
3.20 |
0x495C52EC
|
SceInt16 sceKernelAtomicAddAndGet16(SceInt16 *store, SceInt16 value);
sceKernelAtomicAddAndGet32
Version |
NID
|
3.20 |
0x2E84A93B
|
SceInt32 sceKernelAtomicAddAndGet32(SceInt32 *store, SceInt32 value);
sceKernelAtomicAddAndGet64
Version |
NID
|
3.20 |
0xB6CE9B9A
|
SceInt64 sceKernelAtomicAddAndGet64(SceInt64 *store, SceInt64 value);
sceKernelAtomicAddUnless8
Version |
NID
|
3.20 |
0x7FD94393
|
SceBool sceKernelAtomicAddUnless8(SceInt8 *store, SceInt8 value, SceInt8 cmpv);
sceKernelAtomicAddUnless16
Version |
NID
|
3.20 |
0x1CF4AA4B
|
SceBool sceKernelAtomicAddUnless16(SceInt16 *store, SceInt16 value, SceInt16 cmpv);
sceKernelAtomicAddUnless32
Version |
NID
|
3.20 |
0x4B33FD3C
|
SceBool sceKernelAtomicAddUnless32(SceInt32 *store, SceInt32 value, SceInt32 cmpv);
sceKernelAtomicAddUnless64
Version |
NID
|
3.20 |
0xFFCE7438
|
SceBool sceKernelAtomicAddUnless64(SceInt64 *store, SceInt64 value, SceInt64 cmpv);
sceKernelAtomicAndAndGet8
Version |
NID
|
3.20 |
0x86B9170F
|
SceInt8 sceKernelAtomicAndAndGet8(SceInt8 *store, SceInt8 value);
sceKernelAtomicAndAndGet16
Version |
NID
|
3.20 |
0xF9890F7E
|
SceInt16 sceKernelAtomicAndAndGet16(SceInt16 *store, SceInt16 value);
sceKernelAtomicAndAndGet32
Version |
NID
|
3.20 |
0x6709D30C
|
SceInt32 sceKernelAtomicAndAndGet32(SceInt32 *store, SceInt32 value);
sceKernelAtomicAndAndGet64
Version |
NID
|
3.20 |
0xAED2B370
|
SceInt64 sceKernelAtomicAndAndGet64(SceInt64 *store, SceInt64 value);
sceKernelAtomicClearAndGet8
Version |
NID
|
3.20 |
0x17B40010
|
SceInt8 sceKernelAtomicClearAndGet8(SceInt8 *store, SceInt8 value);
sceKernelAtomicClearAndGet16
Version |
NID
|
3.20 |
0xCC36B775
|
SceInt16 sceKernelAtomicClearAndGet16(SceInt16 *store, SceInt16 value);
sceKernelAtomicClearAndGet32
Version |
NID
|
3.20 |
0x9DAA0DE8
|
SceInt32 sceKernelAtomicClearAndGet32(SceInt32 *store, SceInt32 value);
sceKernelAtomicClearAndGet64
Version |
NID
|
3.20 |
0x264209F3
|
SceInt64 sceKernelAtomicClearAndGet64(SceInt64 *store, SceInt64 value);
sceKernelAtomicClearMask8
Version |
NID
|
3.20 |
0xD7D49E36
|
void sceKernelAtomicClearMask8(SceInt8 *store, SceInt8 value);
sceKernelAtomicClearMask16
Version |
NID
|
3.20 |
0x5FE7DFF8
|
void sceKernelAtomicClearMask16(SceInt16 *store, SceInt16 value);
sceKernelAtomicClearMask32
Version |
NID
|
3.20 |
0xE3DF0CB3
|
void sceKernelAtomicClearMask32(SceInt32 *store, SceInt32 value);
sceKernelAtomicClearMask64
Version |
NID
|
3.20 |
0x953D118A
|
void sceKernelAtomicClearMask64(SceInt64 *store, SceInt64 value);
sceKernelAtomicCompareAndSet8
Version |
NID
|
3.20 |
0x327DB4C0
|
SceInt8 sceKernelAtomicCompareAndSet8(SceInt8 *store, SceInt8 value, SceInt8 new);
sceKernelAtomicCompareAndSet16
Version |
NID
|
3.20 |
0xE8C01236
|
SceInt16 sceKernelAtomicCompareAndSet16(SceInt16 *store, SceInt16 value, SceInt16 new);
sceKernelAtomicCompareAndSet32
Version |
NID
|
3.20 |
0x1124A1D4
|
SceInt32 sceKernelAtomicCompareAndSet32(SceInt32 *store, SceInt32 value, SceInt32 new);
sceKernelAtomicCompareAndSet64
Version |
NID
|
3.20 |
0x1EBDFCCD
|
SceInt64 sceKernelAtomicCompareAndSet64(SceInt64 *store, SceInt64 value, SceInt64 new);
sceKernelAtomicDecIfPositive8
Version |
NID
|
3.20 |
0x9DABE6C3
|
SceInt8 sceKernelAtomicDecIfPositive8(SceInt8 *store);
sceKernelAtomicDecIfPositive16
Version |
NID
|
3.20 |
0x323718FB
|
SceInt16 sceKernelAtomicDecIfPositive16(SceInt16 *store);
sceKernelAtomicDecIfPositive32
Version |
NID
|
3.20 |
0xCA3294F1
|
SceInt32 sceKernelAtomicDecIfPositive32(SceInt32 *store);
sceKernelAtomicDecIfPositive64
Version |
NID
|
3.20 |
0x8BE2A007
|
SceInt64 sceKernelAtomicDecIfPositive64(SceInt64 *store);
sceKernelAtomicGetAndAdd8
Version |
NID
|
3.20 |
0x27A2AAFA
|
SceInt8 sceKernelAtomicGetAndAdd8(SceInt8 *store, SceInt8 value);
sceKernelAtomicGetAndAdd16
Version |
NID
|
3.20 |
0x5674DB0C
|
SceInt16 sceKernelAtomicGetAndAdd16(SceInt16 *store, SceInt16 value);
sceKernelAtomicGetAndAdd32
Version |
NID
|
3.20 |
0x2611CB0B
|
SceInt32 sceKernelAtomicGetAndAdd32(SceInt32 *store, SceInt32 value);
sceKernelAtomicGetAndAdd64
Version |
NID
|
3.20 |
0x63DAF37D
|
SceInt64 sceKernelAtomicGetAndAdd64(SceInt64 *store, SceInt64 value);
sceKernelAtomicGetAndAnd8
Version |
NID
|
3.20 |
0x53DCA02B
|
SceInt8 sceKernelAtomicGetAndAnd8(SceInt8 *store, SceInt8 value);
sceKernelAtomicGetAndAnd16
Version |
NID
|
3.20 |
0x7A0CB056
|
SceInt16 sceKernelAtomicGetAndAnd16(SceInt16 *store, SceInt16 value);
sceKernelAtomicGetAndAnd32
Version |
NID
|
3.20 |
0x08266595
|
SceInt32 sceKernelAtomicGetAndAnd32(SceInt32 *store, SceInt32 value);
sceKernelAtomicGetAndAnd64
Version |
NID
|
3.20 |
0x4828BC43
|
SceInt64 sceKernelAtomicGetAndAnd64(SceInt64 *store, SceInt64 value);
sceKernelAtomicGetAndClear8
Version |
NID
|
3.20 |
0xA10873A4
|
SceInt8 sceKernelAtomicGetAndClear8(SceInt8 *store, SceInt8 value);
sceKernelAtomicGetAndClear16
Version |
NID
|
3.20 |
0x57CD7E7D
|
SceInt16 sceKernelAtomicGetAndClear16(SceInt16 *store, SceInt16 value);
sceKernelAtomicGetAndClear32
Version |
NID
|
3.20 |
0x0226A017
|
SceInt32 sceKernelAtomicGetAndClear32(SceInt32 *store, SceInt32 value);
sceKernelAtomicGetAndClear64
Version |
NID
|
3.20 |
0x436AA0B5
|
SceInt64 sceKernelAtomicGetAndClear64(SceInt64 *store, SceInt64 value);
sceKernelAtomicGetAndOr8
Version |
NID
|
3.20 |
0x107A68DF
|
SceInt8 sceKernelAtomicGetAndOr8(SceInt8 *store, SceInt8 value);
sceKernelAtomicGetAndOr16
Version |
NID
|
3.20 |
0x31E49E73
|
SceInt16 sceKernelAtomicGetAndOr16(SceInt16 *store, SceInt16 value);
sceKernelAtomicGetAndOr32
Version |
NID
|
3.20 |
0x984AD276
|
SceInt32 sceKernelAtomicGetAndOr32(SceInt32 *store, SceInt32 value);
sceKernelAtomicGetAndOr64
Version |
NID
|
3.20 |
0xC39186CD
|
SceInt64 sceKernelAtomicGetAndOr64(SceInt64 *store, SceInt64 value);
sceKernelAtomicGetAndSet8
Version |
NID
|
3.20 |
0x2672EA0B
|
SceInt8 sceKernelAtomicGetAndSet8(SceInt8 *store, SceInt8 value);
sceKernelAtomicGetAndSet16
Version |
NID
|
3.20 |
0xF7B9ADFC
|
SceInt16 sceKernelAtomicGetAndSet16(SceInt16 *store, SceInt16 value);
sceKernelAtomicGetAndSet32
Version |
NID
|
3.20 |
0x9B43E667
|
SceInt32 sceKernelAtomicGetAndSet32(SceInt32 *store, SceInt32 value);
sceKernelAtomicGetAndSet64
Version |
NID
|
3.20 |
0xD82B3A7A
|
SceInt64 sceKernelAtomicGetAndSet64(SceInt64 *store, SceInt64 value);
sceKernelAtomicGetAndSub8
Version |
NID
|
3.20 |
0xCDF5DF67
|
SceInt8 sceKernelAtomicGetAndSub8(SceInt8 *store, SceInt8 value);
sceKernelAtomicGetAndSub16
Version |
NID
|
3.20 |
0xAC51979C
|
SceInt16 sceKernelAtomicGetAndSub16(SceInt16 *store, SceInt16 value);
sceKernelAtomicGetAndSub32
Version |
NID
|
3.20 |
0x115C516F
|
SceInt32 sceKernelAtomicGetAndSub32(SceInt32 *store, SceInt32 value);
sceKernelAtomicGetAndSub64
Version |
NID
|
3.20 |
0x4AE9C8E6
|
SceInt64 sceKernelAtomicGetAndSub64(SceInt64 *store, SceInt64 value);
sceKernelAtomicGetAndXor8
Version |
NID
|
3.20 |
0x7350B2DF
|
SceInt8 sceKernelAtomicGetAndXor8(SceInt8 *store, SceInt8 value);
sceKernelAtomicGetAndXor16
Version |
NID
|
3.20 |
0x6E2D0B9E
|
SceInt16 sceKernelAtomicGetAndXor16(SceInt16 *store, SceInt16 value);
sceKernelAtomicGetAndXor32
Version |
NID
|
3.20 |
0x38739E2F
|
SceInt32 sceKernelAtomicGetAndXor32(SceInt32 *store, SceInt32 value);
sceKernelAtomicGetAndXor64
Version |
NID
|
3.20 |
0x6A19BBE9
|
SceInt64 sceKernelAtomicGetAndXor64(SceInt64 *store, SceInt64 value);
sceKernelAtomicOrAndGet8
Version |
NID
|
3.20 |
0x51693931
|
SceInt8 sceKernelAtomicOrAndGet8(SceInt8 *store, SceInt8 value);
sceKernelAtomicOrAndGet16
Version |
NID
|
3.20 |
0x8E248EBD
|
SceInt16 sceKernelAtomicOrAndGet16(SceInt16 *store, SceInt16 value);
sceKernelAtomicOrAndGet32
Version |
NID
|
3.20 |
0xC3B2F7F8
|
SceInt32 sceKernelAtomicOrAndGet32(SceInt32 *store, SceInt32 value);
sceKernelAtomicOrAndGet64
Version |
NID
|
3.20 |
0x809BBC7D
|
SceInt64 sceKernelAtomicOrAndGet64(SceInt64 *store, SceInt64 value);
sceKernelAtomicSet8
Version |
NID
|
3.20 |
0xE960FDA2
|
void sceKernelAtomicSet8(SceInt8 *store, SceInt8 value);
sceKernelAtomicSet16
Version |
NID
|
3.20 |
0x450BFECF
|
void sceKernelAtomicSet16(SceInt16 *store, SceInt16 value);
sceKernelAtomicSet32
Version |
NID
|
3.20 |
0xB69DA09B
|
void sceKernelAtomicSet32(SceInt32 *store, SceInt32 value);
sceKernelAtomicSet64
Version |
NID
|
3.20 |
0xC8A4339C
|
void sceKernelAtomicSet64(SceInt64 *store, SceInt64 value);
sceKernelAtomicSubAndGet8
Version |
NID
|
3.20 |
0x99E1796E
|
SceInt8 sceKernelAtomicSubAndGet8(SceInt8 *store, SceInt8 value);
sceKernelAtomicSubAndGet16
Version |
NID
|
3.20 |
0xC26BBBB1
|
SceInt16 sceKernelAtomicSubAndGet16(SceInt16 *store, SceInt16 value);
sceKernelAtomicSubAndGet32
Version |
NID
|
3.20 |
0x01C9CD92
|
SceInt32 sceKernelAtomicSubAndGet32(SceInt32 *store, SceInt32 value);
sceKernelAtomicSubAndGet64
Version |
NID
|
3.20 |
0x9BB4A94B
|
SceInt64 sceKernelAtomicSubAndGet64(SceInt64 *store, SceInt64 value);
sceKernelAtomicXorAndGet8
Version |
NID
|
3.20 |
0x634AF062
|
SceInt8 sceKernelAtomicXorAndGet8(SceInt8 *store, SceInt8 value);
sceKernelAtomicXorAndGet16
Version |
NID
|
3.20 |
0x6F524195
|
SceInt16 sceKernelAtomicXorAndGet16(SceInt16 *store, SceInt16 value);
sceKernelAtomicXorAndGet32
Version |
NID
|
3.20 |
0x46940704
|
SceInt32 sceKernelAtomicXorAndGet32(SceInt32 *store, SceInt32 value);
sceKernelAtomicXorAndGet64
Version |
NID
|
3.20 |
0xDDC6866E
|
SceInt64 sceKernelAtomicXorAndGet64(SceInt64 *store, SceInt64 value);
sceKernelDeleteMutex
Version |
NID
|
0.930.010-1.692.000 |
0x12D11F65
|
1.800-3.740.011 |
not present
|
int sceKernelDeleteMutex(SceUID mutex_id);
sceKernelSignalCond
Version |
NID
|
0.930.010-1.692.000 |
0x10A4976F
|
1.800-3.740.011 |
not present
|
SceBool sceKernelSignalCond(int a1);
sceKernelDeleteCond
Version |
NID
|
0.930.010-1.692.000 |
0xFD295414
|
1.800-3.740.011 |
not present
|
SceBool sceKernelDeleteCond(int *a1);
sceIoChstatAsync
Version |
NID
|
3.60 |
0x9739A5E2
|
derived from SceIofilemgr
_sceIoChstatAsync
sceIoChstat
Version |
NID
|
3.60 |
0x29482F7F
|
sceIoChstatByFd
Version |
NID
|
3.60 |
0x6E903AB2
|
sceIoClose
Version |
NID
|
3.60 |
0xF5C6F098
|
derived from SceIofilemgr
sceIoClose
sceIoDevctlAsync
Version |
NID
|
3.60 |
0x950F78EB
|
derived from SceIofilemgr
_sceIoDevctlAsync
sceIoDevctl
Version |
NID
|
1.000.071-3.740.011 |
0x04B30CB2
|
This performs device-specific operations. The details of the operations are driver-dependent.
This is a wrapper for _sceIoDevctl.
/*
Arguments:
devname Specified device ("<devname><unit>:")
cmd Command code
arg Pointer to device-driver-dependent parameter block
arglen Number of bytes in device-driver-dependent parameter block
bufp Pointer to return data storage block
buflen Size of return data storage block
Return Values:
Non-negative (N>=0) Success (driver-dependent)
<0 Error, e.g. SCE_ERROR_ERRNO_EMFILE, SCE_ERROR_ERRNO_ENODEV, SCE_ERROR_ERRNO_EUNSUP
*/
int sceIoDevctl(
const char *devname,
int cmd,
const void *arg,
SceSize arglen,
void *bufp,
SceSize buflen
);
sceIoDopen
Version |
NID
|
3.60 |
0xA9283DD0
|
sceIoDread
Version |
NID
|
3.60 |
0x9C8B6624
|
sceIoGetstatByFd
Version |
NID
|
3.60 |
0x57F8CD25
|
sceIoGetstatAsync
Version |
NID
|
3.60 |
0x82B20B41
|
derived from SceIofilemgr
_sceIoGetstatAsync
sceIoGetstat
Version |
NID
|
3.60 |
0xBCA5B623
|
sceIoIoctlAsync
Version |
NID
|
3.60 |
0x099C54B9
|
derived from SceIofilemgr
_sceIoIoctlAsync
sceIoIoctl
Version |
NID
|
3.60 |
0x54ABACFA
|
sceIoLseekAsync
Version |
NID
|
3.60 |
0xCAC5D672
|
derived from SceIofilemgr
_sceIoLseekAsync
sceIoLseek
Version |
NID
|
3.60 |
0x99BA173E
|
sceIoMkdirAsync
Version |
NID
|
3.60 |
0x8E5FCBB1
|
derived from SceIofilemgr
_sceIoMkdirAsync
sceIoMkdir
Version |
NID
|
3.60 |
0x9670D39F
|
sceIoOpenAsync
Version |
NID
|
3.60 |
0x6A7EA9FD
|
derived from SceIofilemgr
_sceIoOpenAsync
sceIoOpen
Version |
NID
|
3.60 |
0x6C60AC61
|
sceIoPreadAsync
Version |
NID
|
3.60 |
0xA010141E
|
derived from SceIofilemgr
_sceIoPreadAsync
sceIoPread
Version |
NID
|
3.60 |
0x52315AD7
|
sceIoPwriteAsync
Version |
NID
|
3.60 |
0xED25BEEF
|
derived from SceIofilemgr
_sceIoPwriteAsync
sceIoPwrite
Version |
NID
|
3.60 |
0x8FFFF5A8
|
sceIoRead
Version |
NID
|
3.60 |
0x713523E1
|
derived from SceIofilemgr
sceIoRead
sceIoRemoveAsync
Version |
NID
|
3.60 |
0x446A60AC
|
derived from SceIofilemgr
_sceIoRemoveAsync
sceIoRemove
Version |
NID
|
3.60 |
0xE20ED0F3
|
sceIoRenameAsync
Version |
NID
|
3.60 |
0xEE9857CD
|
derived from SceIofilemgr
_sceIoRenameAsync
sceIoRename
Version |
NID
|
3.60 |
0xF737E369
|
sceIoRmdirAsync
Version |
NID
|
3.60 |
0x9694D00F
|
derived from SceIofilemgr
_sceIoRmdirAsync
sceIoRmdir
Version |
NID
|
3.60 |
0xE9F91EC8
|
sceIoSyncAsync
Version |
NID
|
3.60 |
0xF7C7FBFE
|
derived from SceIofilemgr
_sceIoSyncAsync
sceIoSync
Version |
NID
|
3.60 |
0x98ACED6D
|
sceIoWrite
Version |
NID
|
3.60 |
0x11FED231
|
derived from SceIofilemgr
sceIoWrite
sceIoCompleteMultiple
Version |
NID
|
3.60 |
0xA792C404
|
derived from SceIofilemgr
_sceIoCompleteMultiple
sceKernelPrintBacktraceForProcess
Version |
NID
|
1.000.071-3.740.011 |
0x20E2D4B7
|
This is a guessed name.
/**
* Prints call frames to STDOUT - does NOT perform a backtrace
*
* @return SCE_OK on success, < 0 on error
*
* @param pid ?Process ID to operate under? - only SCE_KERNEL_PROCESS_ID_SELF or result of sceKernelGetProcessId is accepted
* @param pCallFrame Pointer to an array of filled up call frames
* @param numFrames Number of frames in the buffer pointed to by pCallFrame
*/
SceInt32 sceKernelPrintBacktraceForProcess(SceUID pid, SceKernelCallFrame* pCallFrame, SceUInt32 numFrames);
sceKernelBacktrace
Version |
NID
|
1.000.071-3.740.011 |
0x894037E8
|
Wrapper to SceKernelModulemgr#_sceKernelBacktrace.
SceInt32 sceKernelBacktrace(SceUID threadId, SceKernelCallFrame *pCallFrameBuffer, SceSize numBytesBuffer, SceUInt32 *pNumReturn, SceInt32 mode);
sceKernelBacktraceSelf
Version |
NID
|
1.000.071-3.740.011 |
0xD16C03B0
|
/**
* Performs a walk back in the call stack and returns obtained stack frames.
*
* @return Call stack depth or SCE_OK on success, < 0 on error
*
* @param pCallFrameBuffer Pointer to an array of call frames that will recieve information
* @param numBytesBuffer Number of bytes in the buffer pointed to by pCallFrameBuffer
* @param pNumReturn Pointer to a variable that will obtain the actual number of call frames filled up
* @param mode Specify SCE_KERNEL_BACKTRACE_MODE_USER - you can also specify the SCE_KERNEL_BACKTRACE_MODE_DONT_EXCEED option with a logical OR
* @note Specifying SCE_KERNEL_BACKTRACE_MODE_DONT_EXCEED stops processing when the call frame buffer is filled up - SCE_OK is returned instead of call stack depth
*/
SceInt32 sceKernelBacktraceSelf(SceKernelCallFrame *pCallFrameBuffer, SceSize numBytesBuffer, SceUInt32 *pNumReturn, SceInt32 mode);
sceSblGcAuthMgrAdhocBB160UniCastDecrypt
Version |
NID
|
3.60 |
0x01E00CBF
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160UniCastDecrypt.
sceKernelPuts
Version |
NID
|
0.902-3.60 |
0x023EAA62
|
Dummy function in FW 3.60.
int sceKernelPuts(const char* str);
sceKernelGetLibraryVariableAddress
Version |
NID
|
0.931-1.692 |
not present
|
1.800.071-3.740.011 |
0x0A4DF821
|
Temp name was sceKernelGetModuleVariableByNID.
Gets variable address by NID.
Calls SceKernelModulemgr#_sceKernelGetLibraryInfoByNID.
Usage:
extern char _NID_libName[]; /* dummy array '_NID_libName' is ABS symbol in libName_stub.a */
extern char _NID_varName[]; /* dummy array '_NID_varName' is ABS symbol in libName_stub.a */
#define NAME2NID(name) (unsigned int)(_NID_ ## name)
#define libName_GetVariableAddress(modid, varname, ptr) \
sceKernelGetLibraryVariableAddress((modid),\
NAME2NID(libName),\
NAME2NID(varname),\
(void **)(ptr))
int sceKernelGetLibraryVariableAddress(SceUID modid, SceNID libnid, SceNID var_nid, void **pVarAddr);
sceKernelLinkFunctionTable
Version |
NID
|
0.931-1.692 |
not present
|
1.800.071-3.740.011 |
0xBEF71602
|
Temp name was sceKernelGetModuleFunctionsByNID.
Sets functions table for a module.
Calls SceKernelModulemgr#_sceKernelGetLibraryInfoByNID.
Usage:
typedef int (*funcName_t)(int a1);
extern char _NID_libName[]; /* dummy array '_NID_libName' is ABS symbol in libName_stub.a */
extern char _NID_funcName[]; /* dummy array '_NID_funcName' is ABS symbol in libName_stub.a */
#define NAME2NID(name) (unsigned int)(_NID_ ## name)
typedef struct libName_Functions_table {
funcName_t funcName;
} libName_Functions_table;
SceNID libName_nid_table[] = {
NAME2NID(funcName),
};
#define _ARRAY_SIZE(array) (sizeof(array)/sizeof(array[0]))
#define libName_LinkFunctionTable(modid, table) \
sceKernelLinkFunctionTable((modid),\
NAME2NID(libName),\
_ARRAY_SIZE(libName_nid_table), libName_nid_table,\
(void **)(table))
int sceKernelLinkFunctionTable(SceUID modid, SceNID libnid, SceUInt32 nNID, const SceNID *pNids, void **pEntries);
sceKernelUnlinkFunctionTable
Version |
NID
|
0.931-1.692 |
not present
|
1.800.071-3.740.011 |
0x70867F93
|
Temp name was sceClibBzeroWords.
This function only does sceClibMemset(pNids, 0, nNID << 2);
.
Usage:
extern char _NID_libName[]; /* dummy array '_NID_libName' is ABS symbol in libName_stub.a */
#define NAME2NID(name) (unsigned int)(_NID_ ## name)
#define libName_UnlinkFunctionTable_test(modid, table) \
sceKernelUnlinkFunctionTable((modid),\
NAME2NID(libName),\
_ARRAY_SIZE(libName_nid_table),\
(void **)(table))
int sceKernelUnlinkFunctionTable(SceUID modid, SceNID libnid, SceUInt32 nNID, const SceNID *pNids);
sceSblGcAuthMgrAdhocBB224Auth3
Version |
NID
|
3.60 |
0x104D802F
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB224Auth3.
sceSblGcAuthMgrPkgVry
Version |
NID
|
3.60 |
0x12C7CD2B
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrPkgVry.
sceSblGcAuthMgrMsSaveBBMacInit
Version |
NID
|
3.60 |
0x1693032E
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrMsSaveBBMacInit.
sceSblGcAuthMgrAdhocBB160Auth2
Version |
NID
|
3.60 |
0x1F4DF829
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160Auth2.
sceSblGcAuthMgrAdhocBB224Auth1
Version |
NID
|
3.60 |
0x211BEDE8
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB224Auth1.
sceSblGcAuthMgrMsSaveBBCipherInit
Version |
NID
|
3.60 |
0x2E05B2DC
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrMsSaveBBCipherInit.
SceLibKernel_37F4ED04
Version |
NID
|
3.60 |
0x37F4ED04
|
It does not seem to call any imported function.
SceLibKernel_91FA6614
Version |
NID
|
3.00 |
not present
|
3.60 |
0x91FA6614
|
Temp name was sceKernelUnlockLwMutex.
It does not seem to call any imported function.
SceLibKernel_120AFC8C
Version |
NID
|
3.60 |
0x120AFC8C
|
Temp name was sceKernelUnlockLwMutex2.
It does not seem to call any imported function.
sceSblGcAuthMgrAdhocBB160Auth5
Version |
NID
|
3.60 |
0x3B595E1D
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160Auth5.
sceKernelUnlockLwMutex
Version |
NID
|
3.60 |
0x499EA781
|
Wrapper to SceKernelThreadMgr#_sceKernelUnlockLwMutex.
sceSblGcAuthMgrAdhocBB224Auth5
Version |
NID
|
3.60 |
0x4AC7EFC9
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB224Auth5.
sceSblGcAuthMgrMsSaveBBCipherUpdate
Version |
NID
|
3.60 |
0x56A59D4F
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrMsSaveBBCipherUpdate.
sceSblGcAuthMgrPsmactCreateC1
Version |
NID
|
3.60 |
0x622A81E6
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrPsmactCreateC1.
sceSblGcAuthMgrAdhocBB160Auth4
Version |
NID
|
3.60 |
0x6314CAA3
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160Auth4.
sceSblGcAuthMgrAdhocBB224Auth4
Version |
NID
|
3.60 |
0x65126005
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB224Auth4.
SceLibKernel_6C7365C4
Version |
NID
|
1.000.071-3.740.011 |
0x6C7365C4
|
This function seems to check allowed address range for backtrace.
Related to #sceKernelBacktraceSelf.
// addr: 0-0xEFFFFFFF
// pRes: pointer to a 64-bit buffer
int SceLibKernel_6C7365C4(SceUInt32 addr, SceUInt64 *pRes);
sceKernelRegisterThreadEventHandler
Version |
NID
|
3.60 |
0x6D8C0F13
|
Wrapper to SceKernelThreadMgr#_sceKernelRegisterThreadEventHandler.
int sceKernelRegisterThreadEventHandler(char *name, SceUID thread_id, SceUInt32 mask, SceKernelThreadEventHandler *handler, void *common);
sceKernelLockLwMutex
Version |
NID
|
3.60 |
0x46E7BE7B
|
sceKernelLockLwMutexCB
Version |
NID
|
3.60 |
0x3148C6B6
|
sceKernelTryLockLwMutex
Version |
NID
|
1.030.071-3.740.011 |
0x9EF798C1
|
It does not seem to call any imported function.
int sceKernelTryLockLwMutex(void *maybe_mutex, SceUInt32 maybe_count);
sceKernelTryLockLwMutex_old
Version |
NID
|
1.030.071-3.740.011 |
0xA6A2C915
|
This is a guessed name. Temp name was sceKernelTryLockLwMutex.
PSP-like "sceKernelTryLockLwMutex".
int sceKernelTryLockLwMutex_old(SceLwMutex *mutex, SceUInt32 count);
sceKernelTryLockLwMutexCB
Version |
NID
|
1.030.071-3.740.011 |
0x6F9C4CC1
|
This is a guessed name.
It calls PSP-like #sceKernelTryLockLwMutex_old, and on failure SceKernelThreadMgr#_sceKernelLockLwMutex with flag 1 (CB).
int sceKernelTryLockLwMutexCB(SceLwMutex *mutex, SceUInt32 count, void *in_out);
sceKernelLockLwMutex
Version |
NID
|
1.030.071-3.740.011 |
0xA7819967
|
This is a guessed name.
It calls PSP-like #sceKernelLockLwMutex_old, and on failure SceKernelThreadMgr#_sceKernelLockLwMutex with flag 0 (non-CB).
int sceKernelLockLwMutex(SceLwMutex *mutex, SceUInt32 count, void *in_out);
sceSblGcAuthMgrMsSaveBBMacFinal
Version |
NID
|
3.60 |
0x774AE3CB
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrMsSaveBBMacFinal.
sceSblGcAuthMgrAdhocBB160GetKeys
Version |
NID
|
3.60 |
0x84C75DC3
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160GetKeys.
sceSblGcAuthMgrAdhocBB160BroadCastEncrypt
Version |
NID
|
3.60 |
0x88E72157
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160BroadCastEncrypt.
sceSblGcAuthMgrSclkGetData1
Version |
NID
|
3.60 |
0x93A6570E
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrSclkGetData1.
sceSblGcAuthMgrPcactGetChallenge
Version |
NID
|
0.931.010-1.000.041 |
not present
|
1.80-3.60 |
0x9557D15C
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrPcactGetChallenge. Calls it with epasswordSize = 0x20 and challengeSize = 0x80.
// epassword size must be 0x20 bytes
// challenge size must be 0x80 bytes
int sceSblGcAuthMgrPcactGetChallenge(SceUInt32 id, const char *epassword, char *challenge);
sceSblGcAuthMgrAdhocBB160Init
Version |
NID
|
3.60 |
0x9B28E1AF
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160Init.
sceKernelGetMainModuleSdkVersion
Version |
NID
|
1.500.151-3.740.011 |
0x9F793F84
|
Gets the module SDK version from the process' SceProcessParam. Used for PSN Auth in SceShell.
int sceKernelGetMainModuleSdkVersion(void);
sceKernelLoadModule
Version |
NID
|
1.030.071-3.740.011 |
0xBBE82155
|
sceKernelLoadStartModule
Version |
NID
|
1.030.071-3.740.011 |
0x2DCC4AFA
|
sceKernelStartModule
Version |
NID
|
1.030.071-3.740.011 |
0x702425D5
|
sceKernelStopModule
Version |
NID
|
1.030.071-3.740.011 |
0x3B2CBA09
|
sceKernelUnloadModule
Version |
NID
|
1.030.071-3.740.011 |
0x1987920E
|
sceKernelStopUnloadModule
Version |
NID
|
1.030.071-3.740.011 |
0x2415F8A4
|
sceKernelCallModuleExit
Version |
NID
|
1.030.071-3.740.011 |
0x15E2A45D
|
sceKernelGetModuleInfoByAddr
Version |
NID
|
1.030.071-3.740.011 |
0xD11A5103
|
sceKernelOpenModule
Version |
NID
|
1.030.071-3.740.011 |
0x4F2D8B15
|
sceKernelCloseModule
Version |
NID
|
1.030.071-3.740.011 |
0x657FA50E
|
sceKernelExitProcess
Version |
NID
|
1.030.071-3.740.011 |
0x7595D9AA
|
sceSblGcAuthMgrAdhocBB160UniCastEncrypt
Version |
NID
|
3.60 |
0xA9002567
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160UniCastEncrypt.
sceSblGcAuthMgrAdhocBB224GetKeys
Version |
NID
|
3.60 |
0xAC57B6A4
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB224GetKeys.
sceSblGcAuthMgrAdhocBB160Auth3
Version |
NID
|
3.60 |
0xC362ECD6
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160Auth3.
sceSblGcAuthMgrAdhocBB224Init
Version |
NID
|
3.60 |
0xC8082804
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB224Init.
SceLibKernel_DC277B4D
Version |
NID
|
3.60 |
0xDC277B4D
|
Returns a 64bit value and uses 0xdeadbeef constant somehow.
ulonglong SceLibKernel_DC277B4D(int a1, SceUInt32 low);
sceSblGcAuthMgrAdhocBB224Auth2
Version |
NID
|
3.60 |
0xDEAD6277
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB224Auth2.
sceSblGcAuthMgrSclkSetData2
Version |
NID
|
3.60 |
0xE088B0D0
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrSclkSetData2.
sceSblGcAuthMgrAdhocBB160BroadCastDecrypt
Version |
NID
|
3.60 |
0xE2984A54
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160BroadCastDecrypt.
sceSblGcAuthMgrPsmactVerifyR1
Version |
NID
|
3.60 |
0xEB6DA895
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrPsmactVerifyR1.
sceSblGcAuthMgrAdhocBB160Auth1
Version |
NID
|
3.60 |
0xEFD76235
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160Auth1.
sceSblGcAuthMgrGetMediaIdType01
Version |
NID
|
3.60 |
0xF7027E6A
|
Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrGetMediaIdType01.
SceKernelStackChkFail
Version |
NID
|
2.000.081-3.740.011 |
0xEC287338
|
__stack_chk_fail
Version |
NID
|
2.000.081-3.740.011 |
0x37691BF8
|
Also exported in #SceLibSsp.
int __stack_chk_fail(void);
sceKernelSuspendThreadForVM
Version |
NID
|
0.931-1.61 |
not present
|
1.660.011-2.120.011 |
0xDA76C40B
|
2.500.071-3.740.011 |
not present. Moved to SceKernelForMono.
|
Wrapper to SceKernelThreadMgr#_sceKernelSuspendThreadForVM.
sceKernelGetThreadContextForVM
Version |
NID
|
0.931-1.61 |
not present
|
1.660.011-3.740.011 |
0x22C9595E
|
Wrapper to SceKernelThreadMgr#_sceKernelGetThreadContextForVM.
sceKernelSetThreadContextForVM
Version |
NID
|
0.931-1.61 |
not present
|
1.660.011-3.740.011 |
0x27E6DEDE
|
Wrapper to SceKernelThreadMgr#_sceKernelSetThreadContextForVM.
SceLibKernel_35D20E49
Version |
NID
|
0.931-1.61 |
not present
|
1.660.011-3.740.011 |
0x35D20E49
|
Reads 4 bytes from thread memory.
It does not seem to call any imported function.
SceUInt32 SceLibKernel_35D20E49(SceUInt32 thid, SceUInt32 idx);
sceKernelWaitException
Version |
NID
|
0.931-1.61 |
not present
|
1.660.011-3.740.011 |
?
|
Wrapper to SceKernelThreadMgr#_sceKernelWaitException.
sceKernelWaitExceptionCB
Version |
NID
|
0.931-1.61 |
not present
|
1.660.011-3.740.011 |
0xAB4B5485
|
Wrapper to SceKernelThreadMgr#_sceKernelWaitExceptionCB.
sceClibPrintf
Version |
NID
|
1.000.071-3.740.011 |
0xFA26BC62
|
sceClibDprintf
Version |
NID
|
3.600.011 |
0x4340EF77
|
int sceClibDprintf(SceUID fd, const char *fmt, ...);
sceKernelPrintBacktrace
Version |
NID
|
0.931-2.06 |
not present
|
2.100.081-3.740.011 |
0x1C02A434
|
Wrapper to sceKernelPrintBacktraceForProcess with pid=0
.
/**
* Prints call frames to STDOUT - does NOT perform a backtrace
*
* @return SCE_OK on success, < 0 on error
*
* @param pCallFrame Pointer to an array of filled up call frames
* @param numFrames Number of frames in the buffer pointed to by pCallFrame
*/
SceInt32 sceKernelPrintBacktrace(SceKernelCallFrame* pCallFrame, SceUInt32 numFrames);
SceKernelStackChkGuard
Version |
NID
|
2.000.081-3.740.011 |
0x4458BCF3
|
This is a variable (4 bytes).
__stack_chk_guard
Version |
NID
|
2.000.081-3.740.011 |
0x93B8AA67
|
This is a variable (4 bytes).
Also exported in #SceLibSsp.
SceLibGcc
SceLibGcc_0DFF2B2C: 0x0DFF2B2C
SceLibGcc_12472ADD: 0x12472ADD
SceLibGcc_29C2EB11: 0x29C2EB11
SceLibGcc_4BB45B70: 0x4BB45B70
SceLibGcc_6214B80C: 0x6214B80C
SceLibGcc_74274866: 0x74274866
SceLibGcc_7772C028: 0x7772C028
SceLibGcc_7DFC519A: 0x7DFC519A
SceLibGcc_83A4F46F: 0x83A4F46F
SceLibGcc_8A5F29D8: 0x8A5F29D8
SceLibGcc_8D4953C7: 0x8D4953C7
SceLibGcc_A22B2436: 0xA22B2436
SceLibGcc_AC15DBA5: 0xAC15DBA5
SceLibGcc_B1CD7AC2: 0xB1CD7AC2
SceLibGcc_BAC00FF7: 0xBAC00FF7
SceLibGcc_CD43FEDC: 0xCD43FEDC
SceLibGcc_DA5097CE: 0xDA5097CE
SceLibGcc_DAB28374: 0xDAB28374
SceLibGcc_DBE840D6: 0xDBE840D6
SceLibGcc_F16E32FC: 0xF16E32FC
SceLibSsp
__stack_chk_fail
Version |
NID
|
1.500.151-3.740.011 |
0x39AD080B
|
Also exported in #SceLibKernel.
int __stack_chk_fail(void);
__stack_chk_guard
Version |
NID
|
1.500.151-3.740.011 |
0x1EA375E6
|
This is a variable (4 bytes).
Also exported in #SceLibKernel.
SceRtabi
__aeabi_lcmp
Version |
NID
|
3.60 |
0x0D4F0635
|
__aeabi_lmul
Version |
NID
|
3.60 |
0x141BC4CE
|
__aeabi_lasr
Version |
NID
|
3.60 |
0x21FF67B9
|
__aeabi_ulcmp
Version |
NID
|
3.60 |
0x317B3774
|
__aeabi_idiv
Version |
NID
|
3.60 |
0x38D62D60
|
__aeabi_d2lz
Version |
NID
|
3.60 |
0x5024AB91
|
__aeabi_f2ulz
Version |
NID
|
3.60 |
0x609CA961
|
__aeabi_idivmod
Version |
NID
|
3.60 |
0x67104054
|
__aeabi_d2ulz
Version |
NID
|
3.60 |
0x6BB838EF
|
__aeabi_ldivmod
Version |
NID
|
3.60 |
0x6CBB0E84
|
__aeabi_llsl
Version |
NID
|
3.60 |
0xA5DB3A86
|
__aeabi_f2lz
Version |
NID
|
3.60 |
0xAA1F1B50
|
__aeabi_uidivmod
Version |
NID
|
3.60 |
0xC33391D1
|
__aeabi_llsr
Version |
NID
|
3.60 |
0xCBDA815C
|
__aeabi_uldivmod
Version |
NID
|
3.60 |
0xCDF7708E
|
__aeabi_uidiv
Version |
NID
|
3.60 |
0xFB311F87
|
SceKernelForVM
SceKernelForVM_655B1F19
Version |
NID
|
0.931-0.990 |
not present
|
1.000.071-1.610.061 |
0x655B1F19
|
1.66-3.740.011 |
not present
|
sceKernelGetThreadContextForVM
Version |
NID
|
1.000.071-3.740.011 |
0x010BB885
|
sceKernelResumeThreadForVM
Version |
NID
|
1.000.071-3.740.011 |
0x70F3F49D
|
sceKernelSuspendThreadForVM
Version |
NID
|
1.000.071-3.740.011 |
0xF5F8F795
|
SceLibRng
sceKernelGetRandomNumber
Version |
NID
|
0.931-1.52 |
not present
|
1.600.061-3.740.011 |
0xB2700165
|
Wrapper to _sceKernelGetRandomNumber.
int sceKernelGetRandomNumber(void *dst, SceSize length);
SceKernelForMono
sceKernelWaitException
Version |
NID
|
0.931-2.120.011 |
not present
|
2.500.071-3.740.011 |
0x1BECC64C
|
sceKernelSuspendThreadForVM
Version |
NID
|
0.931-2.120.011 |
not present
|
2.500.071-3.740.011 |
0x38839DA2
|
sceKernelSetThreadContextForVM
Version |
NID
|
0.931-2.120.011 |
not present
|
2.500.071-3.740.011 |
0x92A0964D
|
sceKernelResumeThreadForVM
Version |
NID
|
0.931-2.120.011 |
not present
|
2.500.071-3.740.011 |
0x9A6D085B
|
sceKernelGetThreadContextForVM
Version |
NID
|
0.931-2.120.011 |
not present
|
2.500.071-3.740.011 |
0xAD210F16
|
sceKernelWaitExceptionCB
Version |
NID
|
0.931-2.120.011 |
not present
|
2.500.071-3.740.011 |
0xE513151F
|
Heap
The latest version of dlmalloc is included in SceLibKernel. Most of the assert checks and security are included.
Thread specific data
Each thread owns a private 2048bytes memory region with specific data (?TLS?). The end of this region is pointed by the TPIDRURO register (thus, the start address of it is TPIDRURO - 0x800).
Offset |
Size |
Description
|
0x000 |
4 |
??
|
0x004 |
4 |
Thread ID
|
0x008 |
4 |
Stack start address
|
0x00C |
4 |
Stack end address
|
0x010 |
4 |
Current VFP exception
|
0x014 |
4 |
LwMutex related
|
0x020 |
4 |
Current priority
|
0x024 |
4 |
CPU affinity mask
|