SceLibKernel: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
Line 35: Line 35:


== SceLibKernel ==
== SceLibKernel ==
=== sceKernelSetTimerTime ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0xFFAD717F
|}
<source lang="C">int sceKernelSetTimerTime(SceUID timerId, SceUInt64 *time);</source>
=== sceKernelSetTimerEvent ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0x621D293B
|}
<source lang="C">int sceKernelSetTimerEvent(SceUID timerId, int type, SceUInt64 *time, SceBool repeat);</source>
=== sceKernelGetTimerTime ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0x381DC300
|}
<source lang="C">int sceKernelGetTimerTime(SceUID timerId, SceUInt64 *time);</source>
=== sceKernelGetTimerInfo ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0x7E35E10A
|}
<source lang="C">int sceKernelGetTimerInfo(SceUID timerId, void *pInfo);</source>


=== sceKernelGetTimerEventRemainingTime ===
=== sceKernelGetTimerEventRemainingTime ===

Revision as of 17:18, 15 September 2023

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

Version Name World Privilege NID
1.69-3.60 SceLibKernel Non-secure User 0xCAE9ACE6
1.69-3.60 SceLibRng Non-secure User 0xF9AC7CF8
1.69-3.60 SceLibGcc Non-secure User 0x567AF9A6
1.69-3.60 SceLibSsp Non-secure User 0x8FA98EF1
1.69-3.60 SceRtabi Non-secure User 0xA941943F
1.69-3.60 SceKernelForVM Non-secure User 0xA2B3EA8F
3.60 SceKernelForMono Non-secure User 0x5FEEA076

SceLibKernel

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

SceLibKernel_12D11F65

Version NID
0.930 0x12D11F65
3.60 not present
int SceLibKernel_12D11F65(SceUID mutex_id);

SceLibKernel_10A4976F

Version NID
0.930 0x10A4976F
3.60 not present

Official name is near of "CondVar::Signal".

SceBool SceLibKernel_10A4976F(int a1);

SceLibKernel_FD295414

Version NID
0.930 0xFD295414
3.60 not present

Official name is near of "CondVar::Delete".

SceBool SceLibKernel_FD295414(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
3.60-3.65 0x894037E8

Wrapper to SceKernelModulemgr#_sceKernelBacktrace.

SceInt32 sceKernelBacktrace(SceUID threadId, SceKernelCallFrame *pCallFrameBuffer, SceSize numBytesBuffer, SceUInt32 *pNumReturn, SceInt32 mode);

sceKernelBacktraceSelf

Version NID
3.60-3.65 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
3.60 0x6C7365C4

It does not seem to call any imported function.

Related to #sceKernelBacktraceSelf.

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_old

Version NID
3.60 0xA6A2C915

This is a guessed name. Temp name was sceKernelTryLockLwMutex.

PSP-like "sceKernelTryLockLwMutex".

int sceKernelTryLockLwMutex_old(SceLwMutex *mutex, SceUInt32 count);

sceKernelTryLockLwMutexCB

Version NID
3.60 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);

sceKernelTryLockLwMutex

Version NID
3.60 0xA7819967

This is a guessed name.

It calls PSP-like #sceKernelTryLockLwMutex_old, and on failure SceKernelThreadMgr#_sceKernelLockLwMutex with flag 0 (non-CB).

int sceKernelTryLockLwMutex_0(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
3.60 0x9557D15C

Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrPcactGetChallenge.

sceSblGcAuthMgrAdhocBB160Init

Version NID
3.60 0x9B28E1AF

Wrapper to SceSblGcAuthMgr#_sceSblGcAuthMgrAdhocBB160Init.

SceLibKernel_9EF798C1

Version NID
3.60 0x9EF798C1

It does not seem to call any imported function. Maybe related to low mutexes.

int SceLibKernel_9EF798C1(void *maybe_mutex, SceUInt32 maybe_count);

sceKernelGetMainModuleSdkVersion

Version NID
1.500.151-3.740.011 0x9F793F84

Gets the module SDK version from the process' SceKernelProcessParam. Used for PSN Auth in SceShell.

int sceKernelGetMainModuleSdkVersion(void);

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 0x1C02A434

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

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