Difference between revisions of "SceLibKernel"

From Vita Development Wiki
Jump to navigation Jump to search
 
(14 intermediate revisions by 3 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"
Line 60: Line 66:
  
 
== SceLibKernel ==
 
== SceLibKernel ==
 +
 +
=== 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>
 +
 
=== Heap ===
 
=== 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. The end of this region is pointed by the TPIDRURO register (thus, the start 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
 +
|}
 +
 
 +
 
 +
[[Category:Modules]]
 
[[Category:Userland]]
 
[[Category:Userland]]

Revision as of 21:19, 12 December 2018

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 SceLibKernel Non-secure User 0xCAE9ACE6
1.69 SceLibRng Non-secure User 0xF9AC7CF8
1.69 SceLibGcc Non-secure User 0x567AF9A6
1.69 SceLibSsp Non-secure User 0x8FA98EF1
1.69 SceRtabi Non-secure User 0xA941943F
1.69 SceKernelForVM Non-secure User 0xA2B3EA8F

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

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. The end of this region is pointed by the TPIDRURO register (thus, the start 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