Difference between revisions of "SceLibKernel"

From Vita Development Wiki
Jump to navigation Jump to search
 
(21 intermediate revisions by 4 users not shown)
Line 1: Line 1:
SceLibKernel, not to be confused with [[Kernel]] is a user library that implements wrappers to some common syscalls (for example, [[SceIoFilemgr]]), some user standard library functions (including C standard library), and other common features like heap management. This library is the functionally similar to libc.so.6 on Linux.
+
SceLibKernel, not to be confused with [[Kernel]] is a user module that implements wrappers to some common syscalls (for example, [[SceIofilemgr|SceIofilemgr]]), some user standard library functions (including C standard library), and other common features like heap management. This module is the functionally similar to libc.so.6 on Linux.
  
== Library ==
+
== Module ==
This is a user library and exists only in userland. The SELF can be found in <code>os0:us/libkernel.suprx</code>.
+
This is a user module and exists only in userland. The SELF can be found in <code>os0:us/libkernel.suprx</code>.
 
=== Known NIDs ===
 
=== Known NIDs ===
 
{| class="wikitable"
 
{| class="wikitable"
Line 8: Line 8:
 
! Version !! Name !! World !! Privilege !! NID
 
! Version !! Name !! World !! Privilege !! NID
 
|-
 
|-
| 1.69 || SceLibKernel || Non-secure || User || 0xC9FDFAA
+
| 1.69 || SceLibKernel || Non-secure || User || 0x0C9FDFAA
 +
|-
 +
| 3.15 || SceLibKernel || Non-secure || User || 0xFAA8A463
 +
|-
 +
| 3.18 || SceLibKernel || Non-secure || User || 0x4280FEB2
 +
|-
 +
| 3.51 || SceLibKernel || Non-secure || User || 0x4342F830
 
|}
 
|}
  
== Module ==
+
== Libraries ==
 
=== Known NIDs ===
 
=== Known NIDs ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Version
+
! Version !! Name !! World !! Privilege !! NID
! Name
 
! World
 
! Privilege
 
! NID
 
 
|-
 
|-
| 1.69
+
| 1.69-3.60 || [[SceLibKernel#SceLibKernel|SceLibKernel]] || Non-secure || User || 0xCAE9ACE6
| SceLibKernel
 
| Non-secure
 
| User
 
| 0xCAE9ACE6
 
 
|-
 
|-
| 1.69
+
| 1.69-3.60 || [[SceLibKernel#SceLibRng|SceLibRng]] || Non-secure || User || 0xF9AC7CF8
| SceLibRng
 
| Non-secure
 
| User
 
| 0xF9AC7CF8
 
 
|-
 
|-
| 1.69
+
| 1.69-3.60 || [[SceLibKernel#SceLibGcc|SceLibGcc]] || Non-secure || User || 0x567AF9A6
| SceLibGcc
 
| Non-secure
 
| User
 
| 0x567AF9A6
 
 
|-
 
|-
| 1.69
+
| 1.69-3.60 || [[SceLibKernel#SceLibSsp|SceLibSsp]] || Non-secure || User || 0x8FA98EF1
| SceLibSsp
 
| Non-secure
 
| User
 
| 0x8FA98EF1
 
 
|-
 
|-
| 1.69
+
| 1.69-3.60 || [[SceLibKernel#SceRtabi|SceRtabi]]|| Non-secure || User || 0xA941943F
| SceRtabi
 
| Non-secure
 
| User
 
| 0xA941943F
 
 
|-
 
|-
| 1.69
+
| 1.69-3.60 || [[SceLibKernel#SceKernelForVM|SceKernelForVM]] || Non-secure || User || 0xA2B3EA8F
| SceKernelForVM
 
| Non-secure
 
| User
 
| 0xA2B3EA8F
 
 
|-
 
|-
 +
| 3.60 || [[SceLibKernel#SceKernelForMono|SceKernelForMono]] || Non-secure || User || 0x5FEEA076
 
|}
 
|}
  
 
== SceLibKernel ==
 
== SceLibKernel ==
=== Heap ===
+
 
 +
=== sceIoChstatAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x9739A5E2
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoChstatAsync</code>
 +
 
 +
=== sceIoChstat ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x29482F7F
 +
|}
 +
 
 +
=== sceIoChstatByFd ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x6E903AB2
 +
|}
 +
 
 +
=== sceIoClose ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xF5C6F098
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>sceIoClose</code>
 +
 
 +
=== sceIoDevctlAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x950F78EB
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoDevctlAsync</code>
 +
 
 +
=== sceIoDevctl ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x04B30CB2
 +
|}
 +
 
 +
=== sceIoDopen ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xA9283DD0
 +
|}
 +
 
 +
=== sceIoDread ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x9C8B6624
 +
|}
 +
 
 +
=== sceIoGetstatByFd ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x57F8CD25
 +
|}
 +
 
 +
=== sceIoGetstatAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x82B20B41
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoGetstatAsync</code>
 +
 
 +
=== sceIoGetstat ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xBCA5B623
 +
|}
 +
 
 +
=== sceIoIoctlAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x099C54B9
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoIoctlAsync</code>
 +
 
 +
=== sceIoIoctl ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x54ABACFA
 +
|}
 +
 
 +
=== sceIoLseekAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xCAC5D672
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoLseekAsync</code>
 +
 
 +
=== sceIoLseek ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x99BA173E
 +
|}
 +
 
 +
=== sceIoMkdirAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x8E5FCBB1
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoMkdirAsync</code>
 +
 
 +
=== sceIoMkdir ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x9670D39F
 +
|}
 +
 
 +
=== sceIoOpenAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x6A7EA9FD
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoOpenAsync</code>
 +
 
 +
=== sceIoOpen ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x6C60AC61
 +
|}
 +
 
 +
=== sceIoPreadAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xA010141E
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoPreadAsync</code>
 +
 
 +
=== sceIoPread ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x52315AD7
 +
|}
 +
 
 +
=== sceIoPwriteAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xED25BEEF
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoPwriteAsync</code>
 +
 
 +
=== sceIoPwrite ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x8FFFF5A8
 +
|}
 +
 
 +
=== sceIoRead ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x713523E1
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>sceIoRead</code>
 +
 
 +
=== sceIoRemoveAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x446A60AC
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoRemoveAsync</code>
 +
 
 +
=== sceIoRemove ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xE20ED0F3
 +
|}
 +
 
 +
=== sceIoRenameAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xEE9857CD
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoRenameAsync</code>
 +
 
 +
=== sceIoRename ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xF737E369
 +
|}
 +
 
 +
=== sceIoRmdirAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x9694D00F
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoRmdirAsync</code>
 +
 
 +
=== sceIoRmdir ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xE9F91EC8
 +
|}
 +
 
 +
=== sceIoSyncAsync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xF7C7FBFE
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoSyncAsync</code>
 +
 
 +
=== sceIoSync ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x98ACED6D
 +
|}
 +
 
 +
=== sceIoWrite ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x11FED231
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>sceIoWrite</code>
 +
 
 +
=== sceIoCompleteMultiple ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xA792C404
 +
|}
 +
 
 +
derived from <code>SceIofilemgr</code> <code>_sceIoCompleteMultiple</code>
 +
 
 +
=== sceKernelRegisterThreadEventHandler ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x6D8C0F13
 +
|}
 +
 
 +
<source lang="C">
 +
int sceKernelRegisterThreadEventHandler(char *name, SceUID uid, int num0, void *handler, int num1);
 +
</source>
 +
 
 +
=== sceKernelUnlockLwMutex ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x91FA6614
 +
|}
 +
 
 +
=== sceKernelUnlockLwMutex2 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x120AFC8C
 +
|}
 +
 
 +
== Heap ==
 
The latest version of [http://g.oswego.edu/dl/html/malloc.html dlmalloc] is included in SceLibKernel. Most of the assert checks and security are included.
 
The latest version of [http://g.oswego.edu/dl/html/malloc.html dlmalloc] is included in SceLibKernel. Most of the assert checks and security are included.
  
[[Category:Libraries]]
+
=== 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).
 +
 
 +
{| class="wikitable"
 +
|-
 +
! 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
 +
|}
 +
 
 +
== SceKernelForMono ==
 +
 
 +
=== sceKernelGetThreadContextForVM ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xAD210F16
 +
|}
 +
 
 +
 
 +
[[Category:Modules]]
 
[[Category:Userland]]
 
[[Category:Userland]]

Revision as of 02:39, 22 January 2020

SceLibKernel, not to be confused with Kernel is a user module that implements wrappers to some common syscalls (for example, SceIofilemgr), some user standard library functions (including C standard library), and other common features like heap management. This module is the functionally similar to libc.so.6 on Linux.

Module

This is a user module and exists only in userland. The SELF can be found in os0:us/libkernel.suprx.

Known NIDs

Version Name World Privilege NID
1.69 SceLibKernel Non-secure User 0x0C9FDFAA
3.15 SceLibKernel Non-secure User 0xFAA8A463
3.18 SceLibKernel Non-secure User 0x4280FEB2
3.51 SceLibKernel Non-secure User 0x4342F830

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

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
3.60 0x04B30CB2

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

sceKernelRegisterThreadEventHandler

Version NID
3.60 0x6D8C0F13
int sceKernelRegisterThreadEventHandler(char *name, SceUID uid, int num0, void *handler, int num1);

sceKernelUnlockLwMutex

Version NID
3.60 0x91FA6614

sceKernelUnlockLwMutex2

Version NID
3.60 0x120AFC8C

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

SceKernelForMono

sceKernelGetThreadContextForVM

Version NID
3.60 0xAD210F16