SceIofilemgr: Difference between revisions
m (sceVopFgetstat -> sceVopFgetstatForDriver) |
CelesteBlue (talk | contribs) (Fix consistancy and typing errors.) |
||
Line 2: | Line 2: | ||
== Module == | == Module == | ||
This module exists only in non-secure world. The SELF can be found in <code>os0:kd/iofilemgr.skprx</code>. | This module exists only in non-secure world. The SELF can be found in <code>os0:kd/iofilemgr.skprx</code>. | ||
Line 14: | Line 15: | ||
=== Known NIDs === | === Known NIDs === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 87: | Line 89: | ||
Information can be found on separate page [[VFS_Implementation|VFS Implementation]] | Information can be found on separate page [[VFS_Implementation|VFS Implementation]] | ||
==== | ==== Note ==== | ||
Max vfs node number is 0x1000. | Max vfs node number is 0x1000. | ||
Line 557: | Line 559: | ||
=== sceVopLookupForDriver === | === sceVopLookupForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 570: | Line 571: | ||
=== sceVopRemoveForDriver === | === sceVopRemoveForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 579: | Line 579: | ||
=== sceVopInactiveForDriver === | === sceVopInactiveForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 588: | Line 587: | ||
=== sceVopIoctlForDriver === | === sceVopIoctlForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 597: | Line 595: | ||
=== sceVopGetstatForDriver === | === sceVopGetstatForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 606: | Line 603: | ||
=== sceVopOpenForDriver === | === sceVopOpenForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 615: | Line 611: | ||
=== sceVopCreateForDriver === | === sceVopCreateForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 624: | Line 619: | ||
=== sceVopCloseForDriver === | === sceVopCloseForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 635: | Line 629: | ||
=== sceVopReadForDriver === | === sceVopReadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 644: | Line 637: | ||
=== sceVopWriteForDriver === | === sceVopWriteForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 653: | Line 645: | ||
=== sceVopPreadForDriver === | === sceVopPreadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 662: | Line 653: | ||
=== sceVopPwriteForDriver === | === sceVopPwriteForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 671: | Line 661: | ||
=== sceVopLseekForDriver === | === sceVopLseekForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 680: | Line 669: | ||
=== sceVopMkdirForDriver === | === sceVopMkdirForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 689: | Line 677: | ||
=== sceVopRmdirForDriver === | === sceVopRmdirForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 698: | Line 685: | ||
=== sceVopDopenForDriver === | === sceVopDopenForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 707: | Line 693: | ||
=== sceVopDreadForDriver === | === sceVopDreadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 716: | Line 701: | ||
=== sceVopDcloseForDriver === | === sceVopDcloseForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 725: | Line 709: | ||
=== sceVopChstatForDriver === | === sceVopChstatForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 734: | Line 717: | ||
=== sceVopRenameForDriver === | === sceVopRenameForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 743: | Line 725: | ||
=== sceVopSyncForDriver === | === sceVopSyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 752: | Line 733: | ||
=== sceVopWhiteoutForDriver === | === sceVopWhiteoutForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 765: | Line 745: | ||
=== sceVopFchstatForDriver === | === sceVopFchstatForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 773: | Line 752: | ||
|} | |} | ||
Temp name was | Temp name was sceVopChstatByFdForDriver. | ||
<source>int sceVopFchstatForDriver(SceVfsNode *pNode, SceVfsFileObject *pObject, SceIoStat *stat, int bit);</source> | <source>int sceVopFchstatForDriver(SceVfsNode *pNode, SceVfsFileObject *pObject, SceIoStat *stat, int bit);</source> | ||
=== sceVopFgetstatForDriver === | === sceVopFgetstatForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 786: | Line 764: | ||
|} | |} | ||
Temp name was sceVopGetStateByFdForDriver | Temp name was sceVopGetStateByFdForDriver. | ||
<source>int sceVopFgetstatForDriver(SceVfsNode *pNode, SceVfsFileObject *pVfsFileObject, SceIoStat *stat);</source> | <source>int sceVopFgetstatForDriver(SceVfsNode *pNode, SceVfsFileObject *pVfsFileObject, SceIoStat *stat);</source> | ||
=== sceVopLinkForDriver === | === sceVopLinkForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 798: | Line 776: | ||
|} | |} | ||
This is a guessed name | This is a guessed name. Temp name was sceVop_unk_offset_0x54_ForDriver. | ||
Temp name was sceVop_unk_offset_0x54_ForDriver | |||
=== sceVopUnlinkForDriver === | === sceVopUnlinkForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 810: | Line 786: | ||
|} | |} | ||
This is a guessed name. | This is a guessed name. Temp name was sceVop_unk_offset_0x58_ForDriver. | ||
Temp name was sceVop_unk_offset_0x58_ForDriver | |||
=== sceVopCleanupForDriver === | === sceVopCleanupForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 822: | Line 796: | ||
|} | |} | ||
Temp name was sceVop_unk_offset_0x6C_ForDriver | Temp name was sceVop_unk_offset_0x6C_ForDriver. | ||
=== sceVopZerofillForDriver === | === sceVopZerofillForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 833: | Line 806: | ||
|} | |} | ||
Temp name was sceVop_unk_offset_0x70_ForDriver | Temp name was sceVop_unk_offset_0x70_ForDriver. | ||
=== sceVfsOpDevctlForDriver === | === sceVfsOpDevctlForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 845: | Line 817: | ||
=== sceVfsOpDecodePathElemForDriver === | === sceVfsOpDecodePathElemForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 854: | Line 825: | ||
<source lang="C"> | <source lang="C"> | ||
// using for internal callback | // using for internal callback | ||
typedef struct SceVfsPathElem { // size is 0x1C | typedef struct SceVfsPathElem { // size is 0x1C | ||
Line 865: | Line 835: | ||
void *data_0x18; | void *data_0x18; | ||
} SceVfsPathElem; | } SceVfsPathElem; | ||
</source> | </source> | ||
=== sceIoMountForDriver === | === sceIoMountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 885: | Line 853: | ||
=== sceIoUmountForDriver === | === sceIoUmountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 901: | Line 868: | ||
=== scePfsMgrVfsMountForDriver === | === scePfsMgrVfsMountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 917: | Line 883: | ||
=== scePfsMgrVfsUmountForDriver === | === scePfsMgrVfsUmountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 930: | Line 895: | ||
=== sceVfsLockVnodeForDriver === | === sceVfsLockVnodeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 945: | Line 909: | ||
=== sceVfsUnlockVnodeForDriver === | === sceVfsUnlockVnodeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 960: | Line 923: | ||
=== sceVfsUnmountForDriver === | === sceVfsUnmountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 971: | Line 933: | ||
=== sceVfsDeleteVfsForDriver === | === sceVfsDeleteVfsForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 982: | Line 943: | ||
=== sceVfsAddVfsForDriver === | === sceVfsAddVfsForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 989: | Line 949: | ||
|} | |} | ||
Used by SceSdstor, SceTty2uart, SceKernelBlueScreenOfDeath | Used by [[SceSdstor]], [[SceTty2uart]], [[SceKernelBlueScreenOfDeath]]. | ||
<source lang="C">int sceVfsAddVfsForDriver(vfs_add_data *data);</source> | <source lang="C">int sceVfsAddVfsForDriver(vfs_add_data *data);</source> | ||
=== sceVfsMountForDriver === | === sceVfsMountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,004: | Line 963: | ||
=== sceVfsLockMntForDriver === | === sceVfsLockMntForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,012: | Line 970: | ||
=== sceVfsUnlockMntForDriver === | === sceVfsUnlockMntForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,020: | Line 977: | ||
=== sceVfsGetNewVnodeForDriver === | === sceVfsGetNewVnodeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,030: | Line 986: | ||
=== sceVfsGetVnodeNameForDriver === | === sceVfsGetVnodeNameForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,040: | Line 995: | ||
=== sceVfsFreeVnodeForDriver === | === sceVfsFreeVnodeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,048: | Line 1,002: | ||
=== sceVfsAllocateFileForDriver === | === sceVfsAllocateFileForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,057: | Line 1,010: | ||
Creates a <code>SceUIDVfsFileClass</code> object and returns UID and pointer to created object. | Creates a <code>SceUIDVfsFileClass</code> object and returns UID and pointer to created object. | ||
<source lang="C"> | <source lang="C"> | ||
//type of a1 is unknown for now - at least 0x98 bytes wide | // type of a1 is unknown for now - at least 0x98 bytes wide | ||
//0.995 | // FW 0.995 | ||
SceUID sceVfsAllocateFileForDriver(void* a1, SceUIDVfsFileObject** ppFile); | SceUID sceVfsAllocateFileForDriver(void* a1, SceUIDVfsFileObject** ppFile); | ||
//3.60 | // FW 3.60 | ||
//If name is NULL, default name (same as 0.995, "SceVfsFile") is used as object name | // If name is NULL, default name (same as 0.995, "SceVfsFile") is used as object name | ||
//Else, name will be created with snprintf("file %s %s", something_from_a1, name); | // Else, name will be created with snprintf("file %s %s", something_from_a1, name); | ||
SceUID sceVfsAllocateFileForDriver(void* a1, SceUIDVfsFileObject** ppFile, char* name); | SceUID sceVfsAllocateFileForDriver(void* a1, SceUIDVfsFileObject** ppFile, char* name); | ||
</source> | </source> | ||
=== sceVfsFreeFileForDriver === | === sceVfsFreeFileForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,077: | Line 1,030: | ||
|} | |} | ||
Frees a file created with [[SceIofilemgr#sceVfsAllocateFileForDriver|sceVfsAllocateFileForDriver]]. | |||
<source lang="C"> | <source lang="C"> | ||
//Pass same a1 as call to AllocateFile | //Pass same a1 as call to AllocateFile | ||
Line 1,084: | Line 1,038: | ||
=== sceVfsRmdevForDriver === | === sceVfsRmdevForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,092: | Line 1,045: | ||
|} | |} | ||
=== sceVfsOpenForDriver === | === sceVfsOpenForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,101: | Line 1,053: | ||
|} | |} | ||
Temp name was | Temp name was t_sceIoOpenForDriver. | ||
thread callback for <code>sceIoOpenForDriver</code> | thread callback for <code>sceIoOpenForDriver</code> | ||
Line 1,115: | Line 1,067: | ||
</source> | </source> | ||
=== sceVfsCloseForDriver === | === sceVfsCloseForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,124: | Line 1,075: | ||
|} | |} | ||
Temp name was | Temp name was t_sceIoCloseForDriver. | ||
thread callback for <code>sceIoCloseForDriver</code> | thread callback for <code>sceIoCloseForDriver</code> | ||
Line 1,136: | Line 1,087: | ||
</source> | </source> | ||
=== sceVfsReadForDriver === | === sceVfsReadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,145: | Line 1,095: | ||
|} | |} | ||
Temp name was | Temp name was t_sceIoReadForDriver. | ||
thread callback for <code>sceIoReadForDriver</code> | thread callback for <code>sceIoReadForDriver</code> | ||
Line 1,160: | Line 1,110: | ||
=== sceVfsWriteForDriver === | === sceVfsWriteForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,168: | Line 1,117: | ||
|} | |} | ||
Temp name was | Temp name was t_sceIoWriteForDriver. | ||
thread callback for <code>sceIoWriteForDriver</code> | thread callback for <code>sceIoWriteForDriver</code> | ||
Line 1,183: | Line 1,132: | ||
=== sceVfsIoctlForDriver === | === sceVfsIoctlForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,191: | Line 1,139: | ||
|} | |} | ||
Temp name was | Temp name was t_sceIoIoctlForDriver. | ||
thread callback for <code>sceIoIoctlForDriver</code> | thread callback for <code>sceIoIoctlForDriver</code> | ||
Line 1,209: | Line 1,157: | ||
=== sceVfsChstatForDriver === | === sceVfsChstatForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,217: | Line 1,164: | ||
|} | |} | ||
Temp name was | Temp name was t_sceIoChstatForDriver. | ||
thread callback for <code>sceIoChstatForDriver</code> | thread callback for <code>sceIoChstatForDriver</code> | ||
Line 1,233: | Line 1,180: | ||
=== sceVfsChstatByFdForDriver === | === sceVfsChstatByFdForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,241: | Line 1,187: | ||
|} | |} | ||
Temp name was | Temp name was t_sceIoChstatByFdForDriver. | ||
thread callback for <code>sceIoChstatByFdForDriver</code> | thread callback for <code>sceIoChstatByFdForDriver</code> | ||
Line 1,256: | Line 1,202: | ||
=== sceVfsPreadForDriver === | === sceVfsPreadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,264: | Line 1,209: | ||
|} | |} | ||
Temp name was | Temp name was t_sceIoPreadForDriver. | ||
thread callback for <code>sceIoPreadForDriver</code> | thread callback for <code>sceIoPreadForDriver</code> | ||
Line 1,281: | Line 1,226: | ||
=== sceVfsPwriteForDriver === | === sceVfsPwriteForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,289: | Line 1,233: | ||
|} | |} | ||
Temp name was | Temp name was t_sceIoPwriteForDriver. | ||
thread callback for <code>sceIoPwriteForDriver</code> | thread callback for <code>sceIoPwriteForDriver</code> | ||
Line 1,306: | Line 1,250: | ||
=== sceIoRmdevForDriver === | === sceIoRmdevForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,320: | Line 1,263: | ||
=== sceIoDelDrvForDriver === | === sceIoDelDrvForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,334: | Line 1,276: | ||
=== sceIoAddDrvForDriver === | === sceIoAddDrvForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,346: | Line 1,287: | ||
=== sceIoDreadForDriver === | === sceIoDreadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,358: | Line 1,298: | ||
=== sceIoDreadForVshbridgeForDriver === | === sceIoDreadForVshbridgeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,366: | Line 1,305: | ||
|} | |} | ||
Temp name was sceIoDreadForDriver_2. Derived from [[SceVshBridge#vshIoDread|_vshIoDread]] | Temp name was sceIoDreadForDriver_2. Derived from [[SceVshBridge#vshIoDread|_vshIoDread]]. | ||
Implementation is completely the same as sceIoDreadForDriver. The only difference is that st_attr in SceIoStat is not set. | Implementation is completely the same as sceIoDreadForDriver. The only difference is that st_attr in SceIoStat is not set. | ||
Line 1,373: | Line 1,312: | ||
=== sceIoWriteForDriver === | === sceIoWriteForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,386: | Line 1,324: | ||
=== sceIoDopenForDriver === | === sceIoDopenForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,399: | Line 1,336: | ||
=== sceIoLseekForDriver === | === sceIoLseekForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,412: | Line 1,348: | ||
=== sceIoOpenForDriver === | === sceIoOpenForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,427: | Line 1,362: | ||
=== sceIoOpenForPidForDriver === | === sceIoOpenForPidForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,442: | Line 1,376: | ||
=== sceIoChstatForDriver === | === sceIoChstatForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,455: | Line 1,388: | ||
=== sceIoChstatForVshbridgeForDriver === | === sceIoChstatForVshbridgeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,462: | Line 1,394: | ||
| 0.995-3.60 || 0x1F98BD50 | | 0.995-3.60 || 0x1F98BD50 | ||
|} | |} | ||
Temp name was sceIoChstatForDriver_2. Derived from [[SceVshBridge#vshIoChstat|_vshIoChstat]] | |||
Temp name was sceIoChstatForDriver_2. Derived from [[SceVshBridge#vshIoChstat|_vshIoChstat]]. | |||
Implementation is completely the same as <code>sceIoChstatForDriver</code>. The only difference is that (bits = bits & (~0x10000)) operation is not applied. | Implementation is completely the same as <code>sceIoChstatForDriver</code>. The only difference is that (bits = bits & (~0x10000)) operation is not applied. | ||
Line 1,469: | Line 1,402: | ||
=== sceIoGetstatForDriver === | === sceIoGetstatForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
Line 1,481: | Line 1,413: | ||
=== sceIoGetstatForVshbridgeForDriver === | === sceIoGetstatForVshbridgeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,489: | Line 1,420: | ||
|} | |} | ||
Temp name was sceIoGetstatForDriver_2. Derived from [[SceVshBridge#vshIoGetstat|_vshIoGetstat]] | Temp name was sceIoGetstatForDriver_2. Derived from [[SceVshBridge#vshIoGetstat|_vshIoGetstat]]. | ||
Implementation is completely the same as sceIoGetstatForDriver. The only difference is that st_attr in SceIoStat *buf is not set. | Implementation is completely the same as sceIoGetstatForDriver. The only difference is that st_attr in SceIoStat *buf is not set. | ||
Line 1,496: | Line 1,427: | ||
=== sceIoMkdirForDriver === | === sceIoMkdirForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,509: | Line 1,439: | ||
=== sceIoReadForDriver === | === sceIoReadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,522: | Line 1,451: | ||
=== sceIoCloseForDriver === | === sceIoCloseForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,535: | Line 1,463: | ||
=== sceIoRenameForDriver === | === sceIoRenameForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,548: | Line 1,475: | ||
=== sceIoRemoveForDriver === | === sceIoRemoveForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,561: | Line 1,487: | ||
=== sceIoCancelForDriver === | === sceIoCancelForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,572: | Line 1,497: | ||
=== sceIoChstatAsyncForDriver === | === sceIoChstatAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,583: | Line 1,507: | ||
=== sceIoChstatByFdAsyncForDriver === | === sceIoChstatByFdAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,594: | Line 1,517: | ||
=== sceIoChstatByFdForDriver === | === sceIoChstatByFdForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,607: | Line 1,529: | ||
=== sceIoCloseAsyncForDriver === | === sceIoCloseAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,618: | Line 1,539: | ||
=== sceIoDevctlAsyncForDriver === | === sceIoDevctlAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,629: | Line 1,549: | ||
=== sceIoDevctlForDriver === | === sceIoDevctlForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,645: | Line 1,564: | ||
=== sceIoDcloseForDriver === | === sceIoDcloseForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,658: | Line 1,576: | ||
=== sceIoFlockForDriver === | === sceIoFlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,669: | Line 1,586: | ||
=== sceIoGetstatByFdAsyncForDriver === | === sceIoGetstatByFdAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,680: | Line 1,596: | ||
=== sceIoGetstatByFdForDriver === | === sceIoGetstatByFdForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,696: | Line 1,611: | ||
=== sceIoGetstatAsyncForDriver === | === sceIoGetstatAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,707: | Line 1,621: | ||
=== sceIoIoctlAsyncForDriver === | === sceIoIoctlAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,718: | Line 1,631: | ||
=== sceIoIoctlForDriver === | === sceIoIoctlForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,734: | Line 1,646: | ||
=== sceIoLseekAsyncForDriver === | === sceIoLseekAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,745: | Line 1,656: | ||
=== sceIoMkdirAsyncForDriver === | === sceIoMkdirAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,756: | Line 1,666: | ||
=== sceIoOpenAsyncForDriver === | === sceIoOpenAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,767: | Line 1,676: | ||
=== sceIoPreadAsyncForDriver === | === sceIoPreadAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,778: | Line 1,686: | ||
=== sceIoPreadForDriver === | === sceIoPreadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,794: | Line 1,701: | ||
=== sceIoPwriteAsyncForDriver === | === sceIoPwriteAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,805: | Line 1,711: | ||
=== sceIoPwriteForDriver === | === sceIoPwriteForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,821: | Line 1,726: | ||
=== sceIoReadAsyncForDriver === | === sceIoReadAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,832: | Line 1,736: | ||
=== sceIoRemoveAsyncForDriver === | === sceIoRemoveAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,843: | Line 1,746: | ||
=== sceIoRenameAsyncForDriver === | === sceIoRenameAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,854: | Line 1,756: | ||
=== sceIoRmdirAsyncForDriver === | === sceIoRmdirAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,865: | Line 1,766: | ||
=== sceIoRmdirForDriver === | === sceIoRmdirForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,878: | Line 1,778: | ||
=== sceIoSyncByFdAsyncForDriver === | === sceIoSyncByFdAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,889: | Line 1,788: | ||
=== not_sceIoSyncByFd_maybe_SyncByFd2ForDriver === | === not_sceIoSyncByFd_maybe_SyncByFd2ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,904: | Line 1,802: | ||
=== sceIoSyncAsyncForDriver === | === sceIoSyncAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,915: | Line 1,812: | ||
=== sceIoSyncForDriver === | === sceIoSyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,928: | Line 1,824: | ||
=== sceIoWriteAsyncForDriver === | === sceIoWriteAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,938: | Line 1,833: | ||
=== sceIoGetProcessDefaultPriorityForSystemForDriver === | === sceIoGetProcessDefaultPriorityForSystemForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,947: | Line 1,841: | ||
=== sceIoSetProcessDefaultPriorityForSystemForDriver === | === sceIoSetProcessDefaultPriorityForSystemForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,955: | Line 1,848: | ||
|} | |} | ||
=== sceIoDopenAsyncForDriver === | === sceIoDopenAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,964: | Line 1,856: | ||
|} | |} | ||
=== sceIoDcloseAsyncForDriver === | === sceIoDcloseAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,973: | Line 1,864: | ||
|} | |} | ||
=== sceIoDreadAsyncForDriver === | === sceIoDreadAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,983: | Line 1,873: | ||
=== sceIoCreateMountEventForDriver === | === sceIoCreateMountEventForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,996: | Line 1,885: | ||
=== sceIoCreateErrorEventForDriver === | === sceIoCreateErrorEventForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,022: | Line 1,910: | ||
=== sceIoClearErrorEventForDriver === | === sceIoClearErrorEventForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,035: | Line 1,922: | ||
=== sceIoDeleteMountEventForDriver === | === sceIoDeleteMountEventForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,048: | Line 1,934: | ||
=== sceIoDeleteErrorEventForDriver === | === sceIoDeleteErrorEventForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,061: | Line 1,946: | ||
=== sceIoSetMountEventForDriver === | === sceIoSetMountEventForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,080: | Line 1,964: | ||
=== unk_5B7E5AB8 === | === unk_5B7E5AB8 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,091: | Line 1,974: | ||
=== sceIoSetPathMappingFunctionForDriver === | === sceIoSetPathMappingFunctionForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,117: | Line 1,999: | ||
=== sceIoGetMediaTypeForDriver === | === sceIoGetMediaTypeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,134: | Line 2,015: | ||
=== create_SceUIDVfsFileClass === | === create_SceUIDVfsFileClass === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,147: | Line 2,027: | ||
=== sceIoGetThreadDefaultPriorityForSystemForDriver === | === sceIoGetThreadDefaultPriorityForSystemForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,158: | Line 2,037: | ||
=== sceIoSetThreadDefaultPriorityForSystemForDriver === | === sceIoSetThreadDefaultPriorityForSystemForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,167: | Line 2,045: | ||
=== sceIoGetRemoteKPLSDataForDriver === | === sceIoGetRemoteKPLSDataForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,175: | Line 2,052: | ||
|} | |} | ||
This | This is a guessed name. | ||
<source lang="C">int sceIoGetRemoteKPLSDataForDriver(SceUID pid, void *dst);</source> | <source lang="C">int sceIoGetRemoteKPLSDataForDriver(SceUID pid, void *dst);</source> | ||
=== sceIoSetProcessFileOpenMaxNumberForDriver === | === sceIoSetProcessFileOpenMaxNumberForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,191: | Line 2,067: | ||
=== sceIoSetProcessDirOpenMaxLevelForDriver === | === sceIoSetProcessDirOpenMaxLevelForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,202: | Line 2,077: | ||
=== sceIoCloseInternalForDriver === | === sceIoCloseInternalForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,219: | Line 2,093: | ||
=== sceIoPreadInternalForDriver === | === sceIoPreadInternalForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,240: | Line 2,113: | ||
=== sceIoCompleteForDriver === | === sceIoCompleteForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,251: | Line 2,123: | ||
=== sceIoGetPriorityForSystemForDriver === | === sceIoGetPriorityForSystemForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,262: | Line 2,133: | ||
=== sceIoSetPriorityForSystemForDriver === | === sceIoSetPriorityForSystemForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,273: | Line 2,143: | ||
=== sceIoComparisonCurrentThreadIdForDriver === | === sceIoComparisonCurrentThreadIdForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,284: | Line 2,153: | ||
=== sceIoSetErrorEventForDriver === | === sceIoSetErrorEventForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,295: | Line 2,163: | ||
=== sceIoSetDebuggerCallbackForDriver === | === sceIoSetDebuggerCallbackForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,304: | Line 2,171: | ||
=== sceIoGetGUIDFdListForDebuggerForDriver === | === sceIoGetGUIDFdListForDebuggerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,313: | Line 2,179: | ||
=== sceIoGetPUIDFdListForDebuggerForDriver === | === sceIoGetPUIDFdListForDebuggerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,322: | Line 2,187: | ||
=== sceIoGetFileInfoForDriver === | === sceIoGetFileInfoForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,331: | Line 2,195: | ||
=== SceIofilemgrForDriver_12F8D58E === | === SceIofilemgrForDriver_12F8D58E === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,342: | Line 2,205: | ||
=== SceIofilemgrForDriver_15C17487 === | === SceIofilemgrForDriver_15C17487 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,355: | Line 2,217: | ||
=== SceIofilemgrForDriver_2EFDFA12 === | === SceIofilemgrForDriver_2EFDFA12 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,368: | Line 2,229: | ||
=== SceIofilemgrForDriver_3675ECB9 === | === SceIofilemgrForDriver_3675ECB9 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,379: | Line 2,239: | ||
=== SceIofilemgrForDriver_3A79FAC9 === | === SceIofilemgrForDriver_3A79FAC9 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,392: | Line 2,251: | ||
=== SceIofilemgrForDriver_6BEEDDB4 === | === SceIofilemgrForDriver_6BEEDDB4 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,405: | Line 2,263: | ||
=== SceIofilemgrForDriver_A7020B0D === | === SceIofilemgrForDriver_A7020B0D === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,418: | Line 2,275: | ||
=== SceIofilemgrForDriver_B499287E === | === SceIofilemgrForDriver_B499287E === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,431: | Line 2,287: | ||
=== sceIoGetMountInfoForDriver === | === sceIoGetMountInfoForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,439: | Line 2,294: | ||
|} | |} | ||
This is guessed name | This is a guessed name. | ||
<source>int sceIoGetMountInfoForDriver(void *mnt, void *info);</source> | <source>int sceIoGetMountInfoForDriver(void *mnt, void *info);</source> | ||
=== sceIoGetMountVectorForDriver === | === sceIoGetMountVectorForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,452: | Line 2,306: | ||
|} | |} | ||
This is guessed name | This is a guessed name. | ||
<source>int sceIoGetMountVectorForDriver(void *dst, int n, SceSize *num);</source> | <source>int sceIoGetMountVectorForDriver(void *dst, int n, SceSize *num);</source> | ||
=== SceIofilemgrForDriver_C468B5EF === | === SceIofilemgrForDriver_C468B5EF === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,468: | Line 2,321: | ||
=== SceIofilemgrForDriver_C722DF35 === | === SceIofilemgrForDriver_C722DF35 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,479: | Line 2,331: | ||
=== SceIofilemgrForDriver_D6AB5E4B === | === SceIofilemgrForDriver_D6AB5E4B === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,490: | Line 2,341: | ||
=== sceIoSyncByFdForDriver === | === sceIoSyncByFdForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- |
Revision as of 10:27, 2 October 2022
SceIofilemgr is the primary interface for file IO. Read File Management for more information on file IO.
Module
This module exists only in non-secure world. The SELF can be found in os0:kd/iofilemgr.skprx
.
Version | World | Privilege |
---|---|---|
0.990-3.60 | Non-secure | Kernel |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
1.69-3.60 | SceIofilemgrForDriver | Non-secure | Kernel | 0x40FD29C7 |
1.69-3.60 | SceIofilemgr | Non-secure | User | 0xF2FF276E |
Mount Points
This table is stored in data segment of SceIofilemgr as array of vfs_mount_point_info
elements.
When sceVfsMount is executed it finds vfs_add_data element by filesystem string and then selects appropriate mount scenario by devMinor and devMajor.
<rnd>
means random numeric string of length 13
See SceSdstor for "sdstor0:" Block Device.
Unix Mount | Dev Major | Dev Minor | Filesystem | Vita Mount | Block Device | VSH Mount Id |
---|---|---|---|---|---|---|
/tty | 0x4000020 | 0x6003 | dummy_ttyp_dev_fs | tty | dummy_ttyp_dev_fs | 0x0 |
/dev | 0x10 | 0x3 | sdstor_dev_fs | sdstor0: | sd | 0x1 |
/md | 0x10 | 0x2003 | md_dev_fs | md0: | md | 0x2 |
/sd/exfat | 0x2030001 | 0x30002 | fat16 / fat32 / exfat | sd0: | sdstor0:ext-pp-act-a, sdstor0:ext-lp-act-entire | 0x100 |
/os/exfat | 0x1000001 | 0x1002 | fat16 | os0: | sdstor0:int-lp-act-os | 0x200 |
/vs/exfat | 0x1000001 | 0x1002 | fat16 | vs0: | sdstor0:int-lp-ign-vsh | 0x300 |
/vd/exfat | 0x1000001 | 0x10002 | fat16 | vd0: | sdstor0:int-lp-ign-vshdata | 0x400 |
/tm/exfat | 0x1000001 | 0x10002 | fat16 | tm0: | sdstor0:int-lp-ign-vtrm | 0x500 |
/ur/exfat | 0x1000001 | 0x50002 | exfat | ur0: | sdstor0:int-lp-ign-user | 0x600 |
/ud/exfat | 0x1000001 | 0x10002 | fat16 | ud0: | sdstor0:int-lp-ign-updater | 0x700 |
/ux/exfat | 0x2020001 | 0x30002 | exfat | ux0: | External: sdstor0:xmc-lp-ign-userext Internal: sdstor0:int-lp-ign-userext |
0x800 |
/gro/exfat | 0x2010001 | 0x21002 | exfat | gro0: | sdstor0:gcd-lp-ign-gamero | 0x900 |
/grw/exfat | 0x2010001 | 0x20002 | exfat | grw0: | sdstor0:gcd-lp-ign-gamerw | 0xA00 |
/sa/exfat | 0x1000001 | 0x1002 | fat16 | sa0: | sdstor0:int-lp-ign-sysdata | 0xB00 |
/pd/exfat | 0x1000001 | 0x1002 | exfat | pd0: | sdstor0:int-lp-ign-pidata | 0xC00 |
/imc/exfat | 0x2020001 | 0x30002 | exfat | imc0: | sdstor0:int-lp-ign-userext | 0xD00 |
/xmc/exfat | 0x2020001 | 0x30002 | exfat | xmc0: | sdstor0:xmc-lp-ign-userext | 0xE00 |
/uma/exfat | 0x2030001 | 0x2 | fat32 / exfat | uma0: | sdstor0:uma-pp-act-a, sdstor0:uma-lp-act-entire | 0xF00 |
/lma/exfat | 0x1 | 0x5 | exfat | lma0: | / | 0x10000 |
/lmb/exfat | 0x1 | 0x5 | exfat | lmb0: | / | 0x20000 |
/mfa/exfat | 0x1 | 0x5 | exfat | mfa0: | / | 0x50000 |
/mfb/exfat | 0x1 | 0x5 | exfat | mfb0: | / | 0x60000 |
/PD<rnd> | 0x3 | 0x1001 | PFS_GDSD_INF | PD<rnd>0 | 0x0 |
VFS Implementation
Information can be found on separate page VFS Implementation
Note
Max vfs node number is 0x1000.
Types
typedef struct vfs_node_info { // size is 0x38 char name[0x20]; vfs_node* node; // can be zero uint32_t unk_24; // probably size of vfs_node uint32_t unk_28; // probably flags vfs_node_info* node_info_2C; // can be zero vfs_node_info* node_info_30; // can be zero vfs_node_info* node_info_34; // can be zero } vfs_node_info; // It looks like this structure is used to get some response into "error" field // when executing sceKernelSignalCondTo calls. // This structure is used by SceIofileDaemon when it monitors mount/unmount async requests // in SceIofilemgrMount thread using SceIofilemgrMount conditional variable. // Upon completion it issues the signal and result of operation is stored in error field. // It looks like operations 1/2 are used for normal filesystems. // Operations 3/4 are used for PFS_GDSD_INF filesystem. typedef struct cond_ctx { uint32_t op_index; // operation index. 1,3 - mount. 2,4 - unmount uint32_t unk_4; uint32_t unk_8; uint32_t unk_C; uint32_t unk_10; uint32_t unk_14; uint32_t unk_18; uint32_t unk_1C; int error; // either error code or 0 cond_ctx* next; // 0 means end of list } cond_ctx; typedef struct ctx_19D4 { void* unk_0; uint32_t unk_4; vfs_node* offset; // Pool of vfs_nodes with 0x1000 elements. // It is used in sceVfsGetNewVnodeForDriver, mount/unmount and node find routines. uint32_t size; uint32_t count; uint32_t unk_14; uint32_t unk_18; uint32_t unk_1C; } ctx_19D4; typedef struct ctx_11C { //size is 0x220 void* unk_0; uint32_t unk_4; void* offset; // pointer to array of byte size 0x10000 with 0x40 elements of size 0x400 uint32_t size; uint32_t count; uint8_t data[0x20C]; } ctx_11C; typedef struct io_scheduler_dispatcher { //size is 0xB8 char unk_0[0x50]; io_scheduler* unk_50; // Internal storage io_scheduler* unk_54; // Gamecard io_scheduler* unk_58; // Removable media (memory card) io_scheduler* unk_5C; // Host File System (host0:) io_scheduler* unk_60; // Default uint32_t unk_64; // pointer to unknown module data section uint32_t unk_68; // SceIoSchedulerDispatcher fast mutex uint32_t unk_6C; char unk_70[0x30]; uint32_t unk_A0; uint32_t unk_A4; SceUID unk_A8; // SceIoSchedulerDispatcher event flag uid uint32_t unk_AC; // counter uint32_t unk_B0; // flag uint32_t unk_B4; // 0 } io_scheduler_dispatcher; typedef struct io_scheduler_item { // size is 0x14 - allocated from SceIoScheduler heap io_scheduler* unk_0; // parent uint32_t unk_4; // 0 uint32_t unk_8; // 0 uint32_t unk_C; // 0 uint32_t unk_10; // pointer to unknown module data section } io_scheduler_item; enum io_device_code { Internal = 0x100, Game_Card = 0x201, Removable = 0x202, Host_File_System = 0x300, Default = 0x0 }; typedef struct io_scheduler { //size is 0xA8 - allocated from SceIoScheduler heap io_device_code unk_0; io_scheduler_item* unk_4; // item 0 io_scheduler_item* unk_8; // item 1 io_scheduler_item* unk_C; // item 2 io_scheduler_item* unk_10; // item 3 io_scheduler_item* unk_14; // item 4 io_scheduler_item* unk_18; // item 5 io_scheduler_item* unk_1C; // item 6 io_scheduler_item* unk_20; // item 7 io_scheduler_item* unk_24; // item 8 io_scheduler_item* unk_28; // item 9 io_scheduler_item* unk_2C; // item 10 io_scheduler_item* unk_30; // item 11 io_scheduler_item* unk_34; // item 12 io_scheduler_item* unk_38; // item 13 io_scheduler_item* unk_3C; // item 14 io_scheduler_item* unk_40; // item 15 uint32_t unk_44; // flag1 0x40000 or 0x00 uint32_t unk_48; // flag2 0x40000 or 0x00 io_scheduler_dispatcher* unk_4C; // parent SceUID unk_50; // SceIoScheduler mutex SceUID unk_54; // SceIoScheduler cond char unk_58; // 0 char unk_59; // 0 char unk_5A; // 0 char unk_5B; // 0 uint32_t unk_5C; // 0 // this is probably a separate structure SceUID unk_60; // SceIoSchedWorker thread id SceUID unk_64; // SceIoScheduler mutex from self SceUID unk_68; // SceIoScheduler cond from self io_scheduler* unk_6C; // pointer to self uint32_t unk_70; // 0 uint16_t unk_74; // 0 uint16_t unk_76; // 0 uint32_t unk_78; // 0 uint32_t unk_7C; // 0 uint32_t unk_80; // uint32_t unk_84; // some flag uint32_t unk_88; //0x80 uint32_t unk_8C; //0x80 uint32_t unk_90; //0x80 uint32_t unk_94; //0x80 uint32_t unk_98; //0x80 uint32_t unk_9C; //0x80 uint32_t unk_A0; // 0 uint32_t unk_A4; // 0 } io_scheduler; // Context used for dispatching i/o operations typedef struct io_context { // size is 0xB8 on FW 3.60 uint32_t unk_0; uint32_t unk_4; uint32_t unk_8; uint32_t unk_C; uint16_t unk_10; uint16_t unk_12; uint16_t unk_14; uint16_t unk_16; void *data_0; // 0x18 uint32_t unk_1C; // 0x1C SceSize size_0; // 0x20 uint32_t io_op_index; // 0x24 uint32_t ioctlOutdata0; // 0x28 io_device_code device_code; // 0x2C, ioctlOutdata1 char async; // 0x30 char unk_31; char unk_32; char unk_33; SceUID pid; // 0x34, sceKernelGetProcessIdForDriver SceUID threadId; // 0x38, sceKernelGetThreadIdForDriver SceUID tlsPid; // 0x3C, sceKernelGetProcessIdFromTLSForDriver uint32_t unk_40; // 0x40, SceThreadmgrForDriver_332E127C uint32_t cpuMask; // 0x44, sceKernelGetThreadCpuAffinityMaskForDriver uint32_t threadPriority; // 0x48, sceKernelGetThreadCurrentPriorityForDriver void* list0; // 0x4C, pointer to some linked list with elements of size 0x14 uint32_t listSize; // 0x50, number of items in linst void* list1; // 0x54, pointer to some linked list with elements of size 0x14 uint32_t sizeOfList; // 0x58, size of list in bytes uint16_t state; // 0x5C, bit 16 of state where state = (MRC p15, 0, state, c13, c0, 3) uint16_t unk_5E; // 0x5E uint32_t unk_60; // 0x60 SceUID fd; // 0x64 void *data_1; // 0x68 uint32_t unk_6C; SceSize size_1; // 0x70 uint32_t unk_74; // 0x74 uint32_t unk_78; // 0x78, -1 uint32_t unk_7C; // 0x7C, -1 uint32_t op_result; // 0x80, result of i/o operation uint32_t unk_84; void* unk_88; uint32_t unk_8C; uint32_t unk_90; uint32_t unk_94; uint32_t unk_98; uint32_t unk_9C; uint32_t unk_A0; uint32_t unk_A4; uint32_t unk_A8; uint32_t unk_AC; SceUInt64 sytemTimeWide; // 0xB0, sceKernelGetSystemTimeWideForDriver } io_context; typedef struct _SceVfsFileObject_0995 { //SceVfsFileClass object - size is 0x40 on 0.995 /* SceKernelObject header not included in size nor structure */ SceInt32 unk_0x0; SceInt32 unk_0x4; SceInt64 unk_0x8; SceInt32 unk_0x10; //Set to 1 during sceVfsAllocateFile ScePID creator_pid; //Result of sceKernelGetProcessIdFromTLS() during sceVfsAllocateFile void* unk_0x18; //Pointer provided as a1 to sceVfsAllocateFile SceUIDVfsFileObject* next; //Pointer to next file in linked list - list head is in a1 SceInt32 unk_0x20; SceInt16 unk_0x24; char unk_0x26; //unused? SceInt8 unk_0x27; SceInt32 unk_0x28; //comes from a1->0x4C->0xC8 SceInt32 unk_0x2C; //((a1->0x4C->0x50 & 0x20000) << 1) | (a1->0x4C->0x50 & 0x10000) SceInt32 unk_0x30; char unk_0x34; //unused? SceInt8 unk_0x35; SceInt8 unk_0x36; SceInt8 unk_0x37; SceInt8 unk_0x38; SceInt8 unk_0x39; SceInt8 unk_0x3A; SceInt8 unk_0x3B; SceInt8 unk_0x3C; SceInt8 unk_0x3D; SceInt8 unk_0x3E; SceInt8 unk_0x3F; } SceUIDVfsFileObject_0995; typedef struct _SceUIDVfsFileObject { //SceUIDVfsFileClass object - size is 0x48 on 3.60 /* SceKernelObject header not included in size nor structure */ SceInt32 unk_0x0; SceInt32 unk_0x4; SceInt64 unk_0x8; SceInt32 unk_0x10; //Set to 1 during sceVfsAllocateFile ScePID creator_pid; //Result of sceKernelGetProcessIdFromTLS() during sceVfsAllocateFile void* unk_0x18; //Pointer provided as a1 to sceVfsAllocateFile SceUIDVfsFileObject* next; //Pointer to next file in linked list - list head is in a1 SceInt32 unk_0x20; //Zero'ed in constructor SceInt16 unk_0x24; char unk_0x26; //unused? SceInt8 unk_0x27; SceInt32 unk_0x28; //comes from a1->0x4C->0xC8 SceInt32 unk_0x2C; //((a1->0x4C->0x50 & 0x20000) << 1) | (a1->0x4C->0x50 & 0x10000) SceInt32 unk_0x30; char unk_0x34; //unused? SceInt8 unk_0x35; SceInt8 unk_0x36; SceInt8 unk_0x37; SceInt8 unk_0x38; //Zero'ed during constructor SceInt8 unk_0x39; //^ doing *(SceInt32*)(&file->unk_0x38) = 0; SceInt8 unk_0x3A; //^ SceInt8 unk_0x3B; //^ SceInt8 unk_0x3C; SceInt8 unk_0x3D; SceInt8 unk_0x3E; SceInt8 unk_0x3F; char unk_0x40[8]; //unknown type - haven't seen this used yet } SceUIDVfsFileObject; typedef struct SceVfsPath { //size is 0xC-bytes char *name; // could be `const char *`? SceSize name_len; char *path; // could be `const char *`? } SceVfsPath;
Data segment layout
Address | Size | Description |
---|---|---|
0x0000 | 0x4 | unknown |
0x0004 | 0x8 | some index returned from initialization function 0xb645c7ef in SceThreadmgrForDriver |
0x0008 | 0x4 | unknown |
0x000C | 0x4 | flag that enables usage of sceFiosKernel functions (like OverlayResolveSync) in i/o operations in transition from user to kernel |
0x00010 | 0x4 | flag that enables usage of sceFiosKernel functions (like OverlayResolveSync) in i/o operations in transition from user to kernel |
0x00014 | 0x4 | flag that enables usage of sceFiosKernel functions (like OverlayResolveSync) in i/o operations in transition from user to kernel |
0x00018 | 0x4 | flag that enables usage of sceFiosKernel functions (like OverlayResolveSync) in i/o operations in transition from user to kernel |
0x0001C | 0x4 | unknown |
0x0020 | 0x4 | SceIofileDevWaitForVC event flag SceUID
|
0x0024 | 0x4 | unknown |
0x0028 | 0x4 | SceIofileDevWaitForSD event flag SceUID
|
0x002C | 0x4 | pointed by vfs_mount_cc for SceIofileDevWaitForSD
|
0x0030 | 0x4 | SceIofileDevWaitForMC event flag SceUID
|
0x0034 | 0x4 | unknown |
0x0038 | 0x4 | pointed by vfs_mount_cc for SceIofileDevWaitForVC
|
0x003C | 0x4 | pointed by vfs_mount_cc for SceIofileDevWaitForMC
|
0x0040 | 0x10 | unknown |
0x0050 | 0x4 | address of some callback function called in all vfs operations |
0x0054 | 0x4 | SceIofile heap SceUID
|
0x0058 | 0x80 | unknown |
0x00D8 | 0x4 | SceIoVfsHeap heap SceUID
|
0x00DC | 0x4 | SceIoFileDebug memblock SceUID
|
0x00E0 | 0x3C | unknown |
0x011C | 0x4 | ctx_11C* pointer to structure |
0x0120 | 0x4C | unknown |
0x016C | 0x10 | char* static_buffers[4] - static buffers used instead of SceIoVfsHeap |
0x017C | 0x2C | SceClass for SceVfsFile
|
0x01A8 | 0x1500 | array of 96 elements of vfs_node_info |
0x16A8 | 0x4 | SceVfsRfsLock fast mutex
|
0x16AC | 0x3C | unknown |
0x16E8 | 0x2C | SceClass for SceIoMountEvent
|
0x1714 | 0xC | unknown |
0x1720 | 0x04 | cond_ctx* pointer to the linked list |
0x1724 | 0x4 | SceIoScheduler heap SceUID
|
0x1728 | 0xB8 | io_scheduler_dispatcher structure
|
0x17E0 | 0x2C | SceClass for SceIoAsyncEvent - used in all async i/o operations
|
0x180C | 0xC | unknown |
0x1818 | 0x2C | SceClass for SceIoErrorEvent
|
0x1844 | 0xC | unknown |
0x1850 | 0x4 | SceIofileDaemonLock fast mutex
|
0x1854 | 0x40 | unknown |
0x1894 | 0x4 | SceIofile fast mutex
|
0x1898 | 0x7C | unknown |
0x1914 | 0x4 | function pointer t_1914_callback |
0x1918 | 0x4 | SceIofileFlock fast mutex
|
0x191C | 0x44 | unknown |
0x1960 | 0x4 | some i/o flag |
0x1964 | 0x4 | flag that indicates that any i/o operation happened 1/0. changed by each i/o operation. cleared on suspend. |
0x1968 | 0x18 | unknown |
0x1980 | 0x4 | counter of not finished i/o operations. changed by each i/o operation. |
0x1984 | 0xC | unknown |
0x1990 | 0x4 | SceVfsMntlistLock fast mutex
|
0x1994 | 0x3C | unknown |
0x19D0 | 0x4 | vfs_mount* singly linked list |
0x19D4 | 0x1C | structure ctx_19D4 |
0x19F0 | 0x8 | unknown |
0x19F8 | 0x4 | address used for sceKernelCpuLockSuspendIntrStoreLRForDriver to lock 016C |
0x19FC | 0x4 | vfs_mount* pointer |
0x1A00 | 0x4 | SceVfsNcacheLock fast mutex
|
0x1A04 | 0x40 | unknown |
0x1A44 | 0x4 | address used for sceKernelCpuLockSuspendIntrStoreLRForDriver |
0x1A48 | 0x4 | unknown |
0x1A4C | 0x4 | SceVfsLock fast mutex
|
0x1A50 | 0x3C | unknown |
0x1A8C | 0x04 | SceIofilemgrMount thread SceUID
|
0x1A90 | 0x700 | array of 32 elements of vfs_mount_point_info |
0x2190 | 0x4 | SceIofilemgrMount cond SceUID
|
0x2194 | 0x4 | SceIofilemgrMount SceUID mutexid
|
0x2198 | 0x4 | flag that indicates that IoSchedulerDispatcher functionality is initialized 1/0 |
0x219C | 0x4 | unknown |
0x21A0 | 0x40 | unknown |
0x21E0 | 0x20 | unknown |
0x2200 | 0x04 | SceIofilemgrDaemon thread SceUID
|
0x2204 | 0x8 | unknown |
0x220C | 0x4 | SceIofilemgrDaemon event flag SceUID
|
0x2210 | 0x4 | void* to heap alloc of size 0x100 |
0x2214 | 0x4 | void* to heap alloc of size 0x100 |
0x2218 | 0x4 | = 3 |
0x221C | 0x20 | vfs_add_data dummy_ttyp_dev_fs node
|
SceIofilemgrForDriver
sceVopLookupForDriver
Version | NID |
---|---|
0.931-3.60 | 0xA5A6A55C |
Temp name was sceVfsNodeInitializePartitionForDriver.
int sceVopLookupForDriver(SceVfsNode *pNode, SceVfsNode **ppNewNode, SceVfsPath *path_info, SceUInt32 flags);
sceVopRemoveForDriver
Version | NID |
---|---|
3.60 | 0xDC1E7EE4 |
sceVopInactiveForDriver
Version | NID |
---|---|
0.990-3.60 | 0x8FB94521 |
sceVopIoctlForDriver
Version | NID |
---|---|
0.990-3.60 | 0x333C904D |
sceVopGetstatForDriver
Version | NID |
---|---|
0.990-3.60 | 0x50A63ACF |
sceVopOpenForDriver
Version | NID |
---|---|
0.990-3.60 | 0x76B79BEC |
sceVopCreateForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9E347C7D |
sceVopCloseForDriver
Version | NID |
---|---|
0.990-3.60 | 0x40944C2E |
In logs it is sceVopClsoeForDriver.
sceVopReadForDriver
Version | NID |
---|---|
0.990-3.60 | 0x570388A5 |
sceVopWriteForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9A68378D |
sceVopPreadForDriver
Version | NID |
---|---|
0.990-3.60 | 0xABBC80E3 |
sceVopPwriteForDriver
Version | NID |
---|---|
0.990-3.60 | 0xA53C040D |
sceVopLseekForDriver
Version | NID |
---|---|
0.990-3.60 | 0xB2B13818 |
sceVopMkdirForDriver
Version | NID |
---|---|
0.990-3.60 | 0x2F3F8C70 |
sceVopRmdirForDriver
Version | NID |
---|---|
0.990-3.60 | 0x1D551105 |
sceVopDopenForDriver
Version | NID |
---|---|
0.990-3.60 | 0x00C9C2DD |
sceVopDreadForDriver
Version | NID |
---|---|
0.990-3.60 | 0x77584C8F |
sceVopDcloseForDriver
Version | NID |
---|---|
0.990-3.60 | 0x1350F5C7 |
sceVopChstatForDriver
Version | NID |
---|---|
0.990-3.60 | 0x1974FA92 |
sceVopRenameForDriver
Version | NID |
---|---|
0.990-3.60 | 0x36A794C7 |
sceVopSyncForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9CD96406 |
sceVopWhiteoutForDriver
Version | NID |
---|---|
0.996-3.60 | 0xF53399BC |
Temp name was sceVopTrashForDriver.
Move target node entry file/directory to xx0:/SceIoTrash/
.
sceVopFchstatForDriver
Version | NID |
---|---|
3.60 | 0x082AFD7F |
Temp name was sceVopChstatByFdForDriver.
int sceVopFchstatForDriver(SceVfsNode *pNode, SceVfsFileObject *pObject, SceIoStat *stat, int bit);
sceVopFgetstatForDriver
Version | NID |
---|---|
3.60 | 0x1DBCBB01 |
Temp name was sceVopGetStateByFdForDriver.
int sceVopFgetstatForDriver(SceVfsNode *pNode, SceVfsFileObject *pVfsFileObject, SceIoStat *stat);
sceVopLinkForDriver
Version | NID |
---|---|
3.60 | 0x942AA61F |
This is a guessed name. Temp name was sceVop_unk_offset_0x54_ForDriver.
sceVopUnlinkForDriver
Version | NID |
---|---|
3.60 | 0x0D8A806E |
This is a guessed name. Temp name was sceVop_unk_offset_0x58_ForDriver.
sceVopCleanupForDriver
Version | NID |
---|---|
3.60 | 0x0F7E1718 |
Temp name was sceVop_unk_offset_0x6C_ForDriver.
sceVopZerofillForDriver
Version | NID |
---|---|
0.996-3.60 | 0xEEAE8B51 |
Temp name was sceVop_unk_offset_0x70_ForDriver.
sceVfsOpDevctlForDriver
Version | NID |
---|---|
0.990-3.60 | 0xB07B307D |
sceVfsOpDecodePathElemForDriver
Version | NID |
---|---|
0.990-3.60 | 0xF7DAC0F5 |
// using for internal callback typedef struct SceVfsPathElem { // size is 0x1C void *data_0x00; char *path; void *data_0x08; void *data_0x0C; void *data_0x10; int data_0x14; void *data_0x18; } SceVfsPathElem;
sceIoMountForDriver
Version | NID |
---|---|
3.60 | 0xD070BC48 |
operation index 1 in cond_ctx
// intermediate function between sceAppMgrGameDataMountForDriver and sceVfsMount int sceIoMountForDriver(int vshMountId, const char *path, int permission, int unk3, int arg_0, int arg_4);
sceIoUmountForDriver
Version | NID |
---|---|
3.60 | 0x20574100 |
operation index 2 in cond_ctx
// intermediate function between sceAppMgrUmountForDriver and sceVfsUnmount int sceIoUmountForDriver(int vshMountId, int unk1, int unk2, int unk3);
scePfsMgrVfsMountForDriver
Version | NID |
---|---|
3.60 | 0xFEEE44A9 |
operation index 3 in cond_ctx
// this function can be used with PFS_GDSD_INF filesystem int scePfsMgrVfsMountForDriver(vfs_mount_point_info_base* mnt, int unk1, int unk2);
scePfsMgrVfsUmountForDriver
Version | NID |
---|---|
3.60 | 0xD220539D |
operation index 4 in cond_ctx
int scePfsMgrVfsUmountForDriver(vfs_unmount_data* umnt, int unk1, int unk2);
sceVfsLockVnodeForDriver
Version | NID |
---|---|
0.995-3.60 | 0xAA45010B |
Temp name was sceVfsNodeWaitEventFlagForDriver.
calls sceKernelWaitEventFlagForDriver
using event_flag_SceVfsVnode
from vfs_node
int sceVfsLockVnodeForDriver(vfs_node* node);
sceVfsUnlockVnodeForDriver
Version | NID |
---|---|
0.990-3.60 | 0x6048F245 |
Temp name was sceVfsNodeSetEventFlagForDriver.
calls sceKernelSetEventFlagForDriver
using event_flag_SceVfsVnode
from vfs_node
int sceVfsUnlockVnodeForDriver(vfs_node* node);
sceVfsUnmountForDriver
Version | NID |
---|---|
1.69-3.60 | 0x9C7E7B76 |
int sceVfsUnmountForDriver(vfs_unmount_data *data);
sceVfsDeleteVfsForDriver
Version | NID |
---|---|
1.69-3.60 | 0x9CBFA725 |
int sceVfsDeleteVfsForDriver(const char *name, void **deleted_node);
sceVfsAddVfsForDriver
Version | NID |
---|---|
0.990-3.60 | 0x673D2FCD |
Used by SceSdstor, SceTty2uart, SceKernelBlueScreenOfDeath.
int sceVfsAddVfsForDriver(vfs_add_data *data);
sceVfsMountForDriver
Version | NID |
---|---|
0.990-3.60 | 0xB62DE9A6 |
int sceVfsMountForDriver(vfs_mount_point_info_base* mnt);
sceVfsLockMntForDriver
Version | NID |
---|---|
3.60 | 0x6B3CA9F7 |
sceVfsUnlockMntForDriver
Version | NID |
---|---|
3.60 | 0xDC2D8BCE |
sceVfsGetNewVnodeForDriver
Version | NID |
---|---|
0.990-3.60 | 0xD60B5C63 |
int sceVfsGetNewVnodeForDriver(vfs_mount* mount, node_ops2 *ops, int unused, vfs_node **node);
sceVfsGetVnodeNameForDriver
Version | NID |
---|---|
0.990-3.60 | 0xAA253B68 |
int sceVfsGetVnodeNameForDriver(SceVfsNode *vp, char *name, SceSize n, SceSize *result);
sceVfsFreeVnodeForDriver
Version | NID |
---|---|
0.990-3.60 | 0x21D57633 |
sceVfsAllocateFileForDriver
Version | NID |
---|---|
0.995-3.60 | 0xBBAC1751 |
Creates a SceUIDVfsFileClass
object and returns UID and pointer to created object.
// type of a1 is unknown for now - at least 0x98 bytes wide // FW 0.995 SceUID sceVfsAllocateFileForDriver(void* a1, SceUIDVfsFileObject** ppFile); // FW 3.60 // If name is NULL, default name (same as 0.995, "SceVfsFile") is used as object name // Else, name will be created with snprintf("file %s %s", something_from_a1, name); SceUID sceVfsAllocateFileForDriver(void* a1, SceUIDVfsFileObject** ppFile, char* name);
sceVfsFreeFileForDriver
Version | NID |
---|---|
0.990-3.60 | 0xC85E33A2 |
Frees a file created with sceVfsAllocateFileForDriver.
//Pass same a1 as call to AllocateFile SceInt32 sceVfsFreeFileForDriver(void* a1, SceUID file_uid);
sceVfsRmdevForDriver
Version | NID |
---|---|
3.60 | 0x69A7E076 |
sceVfsOpenForDriver
Version | NID |
---|---|
3.60 | 0x0E518FA9 |
Temp name was t_sceIoOpenForDriver.
thread callback for sceIoOpenForDriver
typedef struct SceVfsOpenArgs { const char *filename; int flag; SceIoMode mode; } SceVfsOpenArgs; SceUID sceVfsOpenForDriver(SceVfsOpenArgs *argp);
sceVfsCloseForDriver
Version | NID |
---|---|
3.60 | 0x1AE14011 |
Temp name was t_sceIoCloseForDriver.
thread callback for sceIoCloseForDriver
typedef struct SceVfsCloseArgs{ SceUID fd; } SceVfsCloseArgs; int sceVfsCloseForDriver(SceVfsCloseArgs *argp);
sceVfsReadForDriver
Version | NID |
---|---|
3.60 | 0x809892C1 |
Temp name was t_sceIoReadForDriver.
thread callback for sceIoReadForDriver
typedef struct SceVfsReadArgs { SceUID fd; void *data; SceSize size; } SceVfsReadArgs; int sceVfsReadForDriver(SceVfsReadArgs *argp);
sceVfsWriteForDriver
Version | NID |
---|---|
3.60 | 0x8598ADC3 |
Temp name was t_sceIoWriteForDriver.
thread callback for sceIoWriteForDriver
typedef struct SceVfsWriteArgs { SceUID fd; const void *data; SceSize size; } SceVfsWriteArgs; int sceVfsWriteForDriver(SceVfsWriteArgs *argp);
sceVfsIoctlForDriver
Version | NID |
---|---|
3.60 | 0xC1DD4317 |
Temp name was t_sceIoIoctlForDriver.
thread callback for sceIoIoctlForDriver
typedef struct SceVfsIoctlArgs { SceUID fd; unsigned int cmd; void *indata; int inlen; void *outdata; int outlen; } SceVfsIoctlArgs; int sceVfsIoctlForDriver(SceVfsIoctlArgs *argp);
sceVfsChstatForDriver
Version | NID |
---|---|
3.60 | 0xBCE4865B |
Temp name was t_sceIoChstatForDriver.
thread callback for sceIoChstatForDriver
typedef struct SceVfsChstatArgs { const char *path; const SceIoStat *stat; unsigned int cbit; uint32_t store_attr; } SceVfsChstatArgs; int sceVfsChstatForDriver(SceVfsChstatArgs *argp);
sceVfsChstatByFdForDriver
Version | NID |
---|---|
3.60 | 0x7517FE29 |
Temp name was t_sceIoChstatByFdForDriver.
thread callback for sceIoChstatByFdForDriver
typedef struct SceVfsChstatByFdArgs { SceUID fd; const SceIoStat *buf, unsigned int cbit; } SceVfsChstatByFdArgs; int sceVfsChstatByFdForDriver(SceVfsChstatByFdArgs *args);
sceVfsPreadForDriver
Version | NID |
---|---|
3.60 | 0x0B54F9E0 |
Temp name was t_sceIoPreadForDriver.
thread callback for sceIoPreadForDriver
typedef struct SceVfsPreadArgs { SceUID uid; void *data; SceSize size; int paddind; // unused SceOff offset; } SceVfsPreadArgs; int sceVfsPreadForDriver(SceVfsPreadArgs *argp);
sceVfsPwriteForDriver
Version | NID |
---|---|
3.60 | 0xE5DEA6B7 |
Temp name was t_sceIoPwriteForDriver.
thread callback for sceIoPwriteForDriver
typedef struct SceVfsPwriteArgs { SceUID uid; const void *data; SceSize size; int padding; SceOff offset; } SceVfsPwriteArgs; int sceVfsPwriteForDriver(SceVfsPwriteArgs *argp);
sceIoRmdevForDriver
Version | NID |
---|---|
0.990-3.60 | 0xA39A9CA7 |
Like sceIoRemove?
The difference with sceIoRemove is that sceIoRmdev seems to remove the entry to be deleted directly without moving it to SceIoTrash.
int sceIoRmdevForDriver(const char *path, int flags, int a3, int a4);
sceIoDelDrvForDriver
Version | NID |
---|---|
0.931 | 0xD51774E3 |
3.60 | not present |
Example: "tty"
int sceIoDelDrvForDriver(const char *drv);
sceIoAddDrvForDriver
Version | NID |
---|---|
0.931 | 0x1D8AC9A7 |
3.60 | not present |
int sceIoAddDrvForDriver(const char **drv);
sceIoDreadForDriver
Version | NID |
---|---|
1.69-3.60 | 0x20CF5FC7 |
Call interface is same as sceIoDread
.
int sceIoDreadForDriver(SceUID fd, SceIoDirent *dir);
sceIoDreadForVshbridgeForDriver
Version | NID |
---|---|
0.995-3.60 | 0x03051B02 |
Temp name was sceIoDreadForDriver_2. Derived from _vshIoDread.
Implementation is completely the same as sceIoDreadForDriver. The only difference is that st_attr in SceIoStat is not set.
int sceIoDreadForVshbridgeForDriver(SceUID fd, SceIoDirent *dir);
sceIoWriteForDriver
Version | NID |
---|---|
1.69-3.60 | 0x21EE91F0 |
Call interface is same as sceIoWrite
int sceIoWriteForDriver(SceUID fd, const void *data, SceSize size);
sceIoDopenForDriver
Version | NID |
---|---|
1.69-3.60 | 0x463B25CC |
Call interface is same as sceIoDopen
SceUID sceIoDopenForDriver(const char *dirname);
sceIoLseekForDriver
Version | NID |
---|---|
0.931-3.60 | 0x62090481 |
Call interface is same as sceIoLseek
SceOff sceIoLseekForDriver(SceUID fd, SceOff offset, int whence);
sceIoOpenForDriver
Version | NID |
---|---|
0.931-3.60 | 0x75192972 |
Call interface is same as sceIoOpen.
If the process is game or non-game, the `SCE_O_NOBUF` flag will be ignored.
SceUID sceIoOpenForDriver(const char *filename, int flag, SceIoMode mode);
sceIoOpenForPidForDriver
Version | NID |
---|---|
3.60 | 0xC3D34965 |
This is a wrapper for sceIoOpenForDriver.
Pid is used for sceFiosKernelOverlayResolveSyncForDriver
.
SceUID sceIoOpenForPidForDriver(SceUID pid, const char *filename, int flag, SceIoMode mode);
sceIoChstatForDriver
Version | NID |
---|---|
1.69-3.60 | 0x7D42B8DC |
Call interface is same as sceIoChstat
int sceIoChstatForDriver(const char *name, const SceIoStat *buf, unsigned int cbit);
sceIoChstatForVshbridgeForDriver
Version | NID |
---|---|
0.995-3.60 | 0x1F98BD50 |
Temp name was sceIoChstatForDriver_2. Derived from _vshIoChstat.
Implementation is completely the same as sceIoChstatForDriver
. The only difference is that (bits = bits & (~0x10000)) operation is not applied.
int sceIoChstatForVshbridgeForDriver(const char *name, const SceIoStat *buf, unsigned int cbit);
sceIoGetstatForDriver
Version | NID |
---|---|
1.69-3.60 | 0x75C96D25 |
Call interface is same as sceIoGetstat
.
int sceIoGetstatForDriver(const char *name, SceIoStat *buf);
sceIoGetstatForVshbridgeForDriver
Version | NID |
---|---|
0.995-3.60 | 0xD6503624 |
Temp name was sceIoGetstatForDriver_2. Derived from _vshIoGetstat.
Implementation is completely the same as sceIoGetstatForDriver. The only difference is that st_attr in SceIoStat *buf is not set.
int sceIoGetstatForVshbridgeForDriver(const char *name, SceIoStat *buf);
sceIoMkdirForDriver
Version | NID |
---|---|
1.69-3.60 | 0x7F710B25 |
Call interface is same as sceIoMkdir
int sceIoMkdirForDriver(const char *dirname, SceIoMode mode);
sceIoReadForDriver
Version | NID |
---|---|
1.69-3.60 | 0xE17EFC03 |
Call interface is same as sceIoRead
int sceIoReadForDriver(SceUID fd, void *buf, SceSize nbyte);
sceIoCloseForDriver
Version | NID |
---|---|
1.69-3.60 | 0xF99DD8A3 |
Call interface is same as sceIoClose
int sceIoCloseForDriver(SceUID fd);
sceIoRenameForDriver
Version | NID |
---|---|
1.69-3.60 | 0xDC0C4997 |
Call interface is same as sceIoRename
int sceIoRenameForDriver(const char *oldname, const char *newname);
sceIoRemoveForDriver
Version | NID |
---|---|
1.69-3.60 | 0x0D7BB3E1 |
Call interface is same as sceIoRemove
int sceIoRemoveForDriver(const char *filename);
sceIoCancelForDriver
Version | NID |
---|---|
3.60 | 0x6D59658D |
Derived from sceIoCancel
sceIoChstatAsyncForDriver
Version | NID |
---|---|
3.60 | 0x7EC442BF |
Derived from _sceIoChstatAsync
sceIoChstatByFdAsyncForDriver
Version | NID |
---|---|
3.60 | 0xEC974400 |
Derived from sceIoChstatByFdAsync
sceIoChstatByFdForDriver
Version | NID |
---|---|
3.60 | 0xDF57A75F |
Derived from _sceIoChstatByFd
int sceIoChstatByFdForDriver(SceUID fd, const SceIoStat *buf, unsigned int cbit);
sceIoCloseAsyncForDriver
Version | NID |
---|---|
3.60 | 0x11C57CC6 |
Derived from sceIoCloseAsync
sceIoDevctlAsyncForDriver
Version | NID |
---|---|
3.60 | 0xA9302946 |
Derived from _sceIoDevctlAsync
sceIoDevctlForDriver
Version | NID |
---|---|
3.60 | 0x16882FC4 |
Derived from _sceIoDevctl
// Return: >=0 on success (driver-dependent) int sceIoDevctlForDriver(const char *devname, int cmd, const void *arg, SceSize arglen, void *bufp, SceSize buflen);
sceIoDcloseForDriver
Version | NID |
---|---|
3.60 | 0x19C81DD6 |
Derived from sceIoDclose
int sceIoDcloseForDriver(SceUID fd);
sceIoFlockForDriver
Version | NID |
---|---|
3.60 | 0x16336A0D |
Derived from sceIoFlockForSystem
sceIoGetstatByFdAsyncForDriver
Version | NID |
---|---|
3.60 | 0x0FEE1238 |
Derived from sceIoGetstatByFdAsync
sceIoGetstatByFdForDriver
Version | NID |
---|---|
3.60 | 0x462F059B |
Derived from _sceIoGetstatByFd
// Return: 0 on success int sceIoGetstatByFdForDriver(SceUID fd, SceIoStat *buf);
sceIoGetstatAsyncForDriver
Version | NID |
---|---|
3.60 | 0x94A5304A |
Derived from _sceIoGetstatAsync
sceIoIoctlAsyncForDriver
Version | NID |
---|---|
3.60 | 0xB761E91B |
Derived from _sceIoIoctlAsync
sceIoIoctlForDriver
Version | NID |
---|---|
3.60 | 0x161CD33F |
Derived from _sceIoIoctl
// Return: >=0 on success (driver-dependent) int sceIoIoctlForDriver(SceUID fd, int cmd, const void *argp, SceSize arglen, void *bufp, SceSize buflen);
sceIoLseekAsyncForDriver
Version | NID |
---|---|
3.60 | 0x541BAABD |
Derived from _sceIoLseekAsync
sceIoMkdirAsyncForDriver
Version | NID |
---|---|
3.60 | 0x27003443 |
Derived from _sceIoMkdirAsync
sceIoOpenAsyncForDriver
Version | NID |
---|---|
3.60 | 0x451001DE |
Derived from _sceIoOpenAsync
sceIoPreadAsyncForDriver
Version | NID |
---|---|
3.60 | 0x64A46A2C |
Derived from _sceIoPreadAsync
sceIoPreadForDriver
Version | NID |
---|---|
3.60 | 0x2A17515D |
Derived from _sceIoPread
// Return: Number of bytes actually read int sceIoPreadForDriver(SceUID uid, void *data, int size, SceOff offset);
sceIoPwriteAsyncForDriver
Version | NID |
---|---|
3.60 | 0x202CDDE3 |
Derived from _sceIoPwriteAsync
sceIoPwriteForDriver
Version | NID |
---|---|
3.60 | 0x5F1512C8 |
Derived from _sceIoPwrite
// Return: Number of bytes actually written int sceIoPwriteForDriver(SceUID fd, const void *buf, SceSize nbyte, SceOff offset);
sceIoReadAsyncForDriver
Version | NID |
---|---|
3.60 | 0x69047C81 |
Derived from sceIoReadAsync
sceIoRemoveAsyncForDriver
Version | NID |
---|---|
3.60 | 0xF9D6507D |
Derived from _sceIoRemoveAsync
sceIoRenameAsyncForDriver
Version | NID |
---|---|
3.60 | 0xAACBC47A |
Derived from _sceIoRenameAsync
sceIoRmdirAsyncForDriver
Version | NID |
---|---|
3.60 | 0xF5B0B36C |
Derived from _sceIoRmdirAsync
sceIoRmdirForDriver
Version | NID |
---|---|
3.60 | 0x1CC9C634 |
Derived from _sceIoRmdir
int sceIoRmdirForDriver(const char *dirname);
sceIoSyncByFdAsyncForDriver
Version | NID |
---|---|
3.60 | 0x041209CF |
Derived from sceIoSyncByFdAsync
not_sceIoSyncByFd_maybe_SyncByFd2ForDriver
Version | NID |
---|---|
3.60 | 0x43170575 |
This function is not sceIoSyncByFdForDriver.
Derived from sceIoSyncByFd
int not_sceIoSyncByFd_maybe_SyncByFd2ForDriver(SceUID fd, int flag);
sceIoSyncAsyncForDriver
Version | NID |
---|---|
3.60 | 0x4F9EA8B0 |
Derived from _sceIoSyncAsync
sceIoSyncForDriver
Version | NID |
---|---|
3.60 | 0xDDF78594 |
Derived from _sceIoSync
int sceIoSyncForDriver(const char *device, unsigned int flag);
sceIoWriteAsyncForDriver
Version | NID |
---|---|
3.60 | 0xA1BD13D0 |
Derived from sceIoWriteAsync
sceIoGetProcessDefaultPriorityForSystemForDriver
Version | NID |
---|---|
0.990-3.60 | 0xCE397158 |
sceIoSetProcessDefaultPriorityForSystemForDriver
Version | NID |
---|---|
0.990-3.60 | 0xABE65071 |
sceIoDopenAsyncForDriver
Version | NID |
---|---|
3.60 | 0x72F06BDE |
sceIoDcloseAsyncForDriver
Version | NID |
---|---|
3.60 | 0xC08F199F |
sceIoDreadAsyncForDriver
Version | NID |
---|---|
3.60 | 0x5982B0E3 |
sceIoCreateMountEventForDriver
Version | NID |
---|---|
3.60 | 0x2DFA192F |
Derived from vshIoCreateMountEvent
int sceIoCreateMountEventForDriver(int vshMountId, int flag);
sceIoCreateErrorEventForDriver
Version | NID |
---|---|
3.60 | 0x3C0343DB |
Derived from vshIoCreateErrorEvent
typedef struct sceIoCreateErrorEventForDriverOpt { uint32_t unk_0; uint32_t unk_4; uint32_t unk_8; uint32_t unk_C; uint32_t unk_10; uint32_t unk_14; uint32_t unk_18; } sceIoCreateErrorEventForDriverOpt; SceUID sceIoCreateErrorEventForDriver(int vshMountId, int flag, sceIoCreateErrorEventForDriverOpt* opt);
sceIoClearErrorEventForDriver
Version | NID |
---|---|
3.60 | 0x40B933C7 |
Derived from vshIoClearErrorEvent
int sceIoClearErrorEventForDriver(SceUID uid);
sceIoDeleteMountEventForDriver
Version | NID |
---|---|
3.60 | 0x43DB0AE4 |
Derived from vshIoDeleteMountEvent
int sceIoDeleteMountEventForDriver(SceUID uid);
sceIoDeleteErrorEventForDriver
Version | NID |
---|---|
3.60 | 0xC6158F8D |
Derived from vshIoDeleteErrorEvent
int sceIoDeleteErrorEventForDriver(SceUID uid);
sceIoSetMountEventForDriver
Version | NID |
---|---|
0.995-3.60 | 0x39ABDB9E |
Temp name was sceIoInvokeMountEventForDriver.
/* * (flags & 0x100) != 0 -> mount * (flags & 0x200) != 0 -> unmount */ int sceIoSetMountEventForDriver(int mount_id, int flags, int unk2, int unk3);
unk_5B7E5AB8
Version | NID |
---|---|
3.60 | 0x5B7E5AB8 |
int unk_5B7E5AB8(int vshMountId, int a2);
sceIoSetPathMappingFunctionForDriver
Version | NID |
---|---|
3.60 | 0xCFAECF18 |
Used by SceAppMgr.
Sets a callback function that does path mapping:
- function tries to OverlayResolveSync input path
- checks that it is not a PD path (Pseudo Drive mount point aquired by ScePfsMgr)
- takes beginning of path until symbol ":"
- tries to do a lookup by that path copy in data segment global 0x3470C
mount_point_data_entry
item array - if item is found then
path
frommount_point_data_entry
item is copied toresult_path
- in any other case OverlayResolveSync result path is copied to
result_path
typedef int ( SceIoPathMappingFunc)(const char *path, SceUID pid, char *result_path, SceSize size); int sceIoSetPathMappingFunctionForDriver(SceIoPathMappingFunc *func);
sceIoGetMediaTypeForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9C220246 |
Was wrongly named sceIoGetPathIdExForDriver.
May also call callback function set by sceIoSetPathMappingFunctionForDriver.
This callback function does path mapping since result in result_path is passed to sceSblACMgrGetMediaTypeForKernel.
int sceIoGetMediaTypeForDriver(SceUID pid, const char *path, int ignored, int *media_type);
create_SceUIDVfsFileClass
Version | NID |
---|---|
3.60 | 0xCDF3EF52 |
creates instance of SceUIDVfsFileClass using sceKernelCreateUidObjForKernel
SceUID create_SceUIDVfsFileClass(int unk0, int unk1, const char *unk2);
sceIoGetThreadDefaultPriorityForSystemForDriver
Version | NID |
---|---|
3.60 | 0x6D0FEDB6 |
int sceIoGetThreadDefaultPriorityForSystemForDriver(void);
sceIoSetThreadDefaultPriorityForSystemForDriver
Version | NID |
---|---|
3.60 | 0x3F0FF9D5 |
sceIoGetRemoteKPLSDataForDriver
Version | NID |
---|---|
3.60 | 0x44EDCE57 |
This is a guessed name.
int sceIoGetRemoteKPLSDataForDriver(SceUID pid, void *dst);
sceIoSetProcessFileOpenMaxNumberForDriver
Version | NID |
---|---|
3.60 | 0xAC0E9AAA |
int sceIoSetProcessFileOpenMaxNumberForDriver(SceUID pid, SceSize number);
sceIoSetProcessDirOpenMaxLevelForDriver
Version | NID |
---|---|
3.60 | 0x03F6A684 |
int sceIoSetProcessDirOpenMaxLevelForDriver(SceUID pid, SceSize level);
sceIoCloseInternalForDriver
Version | NID |
---|---|
3.60 | 0x1AE14011 |
typedef struct SceIoCloseArgs { SceUID fd; } SceIoCloseArgs; int sceIoCloseInternalForDriver(SceIoCloseArgs *args);
sceIoPreadInternalForDriver
Version | NID |
---|---|
3.60 | 0x0B54F9E0 |
typedef struct SceIoPreadArgs { SceUID fd; void *data; SceSize size; int dummy; // ?aligment? SceOff offset; } SceIoPreadArgs; int sceIoPreadInternalForDriver(SceIoPreadArgs *args);
sceIoCompleteForDriver
Version | NID |
---|---|
3.60 | 0x8F0DE34D |
int sceIoCompleteForDriver(SceUID fd);
sceIoGetPriorityForSystemForDriver
Version | NID |
---|---|
3.60 | 0x9FCDCE62 |
int sceIoGetPriorityForSystemForDriver(SceUID a1);
sceIoSetPriorityForSystemForDriver
Version | NID |
---|---|
3.60 | 0xCCE94599 |
int sceIoSetPriorityForSystemForDriver(SceUID a1, int a2);
sceIoComparisonCurrentThreadIdForDriver
Version | NID |
---|---|
3.60 | 0xC3AE93A2 |
int sceIoComparisonCurrentThreadIdForDriver(void *ctx);
sceIoSetErrorEventForDriver
Version | NID |
---|---|
0.995-3.60 | 0xDD46CD63 |
Previously (wrongfully) called sceIoGetGUIDErrorEventListForDriver.
sceIoSetDebuggerCallbackForDriver
Version | NID |
---|---|
3.60 | 0xF4F8C59A |
sceIoGetGUIDFdListForDebuggerForDriver
Version | NID |
---|---|
3.60 | 0xdcf75f6d |
sceIoGetPUIDFdListForDebuggerForDriver
Version | NID |
---|---|
3.60 | 0xd493274 |
sceIoGetFileInfoForDriver
Version | NID |
---|---|
3.60 | 0xa1ef2648 |
SceIofilemgrForDriver_12F8D58E
Version | NID |
---|---|
3.60 | 0x12F8D58E |
get some value
SceIofilemgrForDriver_15C17487
Version | NID |
---|---|
3.60 | 0x15C17487 |
tell some
int SceIofilemgrForDriver_15C17487(int a1 /* io_device_code */);
SceIofilemgrForDriver_2EFDFA12
Version | NID |
---|---|
3.60 | 0x2EFDFA12 |
set path by flags?
int SceIofilemgrForDriver_2EFDFA12(SceUID fd, char *path);
SceIofilemgrForDriver_3675ECB9
Version | NID |
---|---|
3.60 | 0x3675ECB9 |
some node op. dec ctr.
SceIofilemgrForDriver_3A79FAC9
Version | NID |
---|---|
3.60 | 0x3A79FAC9 |
delete fd by flags
int SceIofilemgrForDriver_3A79FAC9(SceUID fd);
SceIofilemgrForDriver_6BEEDDB4
Version | NID |
---|---|
3.60 | 0x6BEEDDB4 |
setting some to fd of dir entry
int SceIofilemgrForDriver_6BEEDDB4(SceUID fd, int a2);
SceIofilemgrForDriver_A7020B0D
Version | NID |
---|---|
3.60 | 0xA7020B0D |
big function
int SceIofilemgrForDriver_A7020B0D(SceVfsNode *vp, int a2, int a3, int a4, int cache_size);
SceIofilemgrForDriver_B499287E
Version | NID |
---|---|
3.60 | 0xB499287E |
delete some puid from a1
int SceIofilemgrForDriver_B499287E(void *a1, int n, int *num);
sceIoGetMountInfoForDriver
Version | NID |
---|---|
3.60 | 0xB987450D |
This is a guessed name.
int sceIoGetMountInfoForDriver(void *mnt, void *info);
sceIoGetMountVectorForDriver
Version | NID |
---|---|
3.60 | 0xC20C621C |
This is a guessed name.
int sceIoGetMountVectorForDriver(void *dst, int n, SceSize *num);
SceIofilemgrForDriver_C468B5EF
Version | NID |
---|---|
3.60 | 0xC468B5EF |
some thread op
SceIofilemgrForDriver_C722DF35
Version | NID |
---|---|
3.60 | 0xC722DF35 |
some node op. inc ctr.
SceIofilemgrForDriver_D6AB5E4B
Version | NID |
---|---|
3.60 | 0xD6AB5E4B |
some node op
sceIoSyncByFdForDriver
Version | NID |
---|---|
3.60 | 0x338dcd68 |
SceIofilemgr
_sceIoDcloseAsync
Version | NID |
---|---|
1.69 | 0x00B13031 |
3.60 | different NID or not present |
_sceIoOpenAsync
Version | NID |
---|---|
1.69-3.60 | 0x09CD0FC8 |
sceIoGetProcessDefaultPriority
Version | NID |
---|---|
1.69-3.60 | 0x0DC4F1BB |
_sceIoRmdirAsync
Version | NID |
---|---|
1.69-3.60 | 0x13DC3244 |
sceIoSetPriority
Version | NID |
---|---|
1.69-3.60 | 0x14B2D56C |
sceIoSyncByFd
Version | NID |
---|---|
1.69-3.60 | 0x16512F59 |
int sceIoSyncByFd(SceUID fd, unsigned int unk);
_sceIoIoctl
Version | NID |
---|---|
1.69-3.60 | 0x1D2988F1 |
_sceIoLseekAsync
Version | NID |
---|---|
1.69-3.60 | 0x2300858E |
sceIoSetPriorityForSystem
Version | NID |
---|---|
1.69-3.60 | 0x27373135 |
_sceIoComplete
Version | NID |
---|---|
1.69 | 0x34E6A06E |
3.60 | different NID or not present |
sceIoWrite
Version | NID |
---|---|
1.69-3.60 | 0x34EFD876 |
int sceIoWrite(SceUID fd, const void *data, SceSize size);
_sceIoGetThreadDefaultPriorityForSystem
Version | NID |
---|---|
1.69 | 0x36CAF911 |
3.60 | different NID or not present |
_sceIoSetThreadDefaultPriorityForSystem
Version | NID |
---|---|
0.990-1.69 | 0x38FE853B |
3.60 | different NID or not present |
sceIoFlockForSystem
Version | NID |
---|---|
1.69-3.60 | 0x3E98E422 |
_sceIoDevctlAsync
Version | NID |
---|---|
1.69-3.60 | 0x3EE3F66E |
sceIoDclose
Version | NID |
---|---|
1.69-3.60 | 0x422A221A |
int sceIoDclose(SceUID fd);
_sceIoRename
Version | NID |
---|---|
1.69-3.60 | 0x4912F748 |
typedef struct sceIoRenameOpt { uint32_t unk_0; uint32_t unk_4; uint32_t unk_8; uint32_t unk_C; } sceIoRenameOpt; int _sceIoRename(const char *oldname, const char *newname, sceIoRenameOpt *opt);
sceIoLseek32
Version | NID |
---|---|
1.69-3.60 | 0x49252B9B |
int sceIoLseek32(SceUID fd, int offset, int whence);
sceIoSetThreadDefaultPriority
Version | NID |
---|---|
1.69-3.60 | 0x49312108 |
_sceIoDevctl
Version | NID |
---|---|
1.69-3.60 | 0x515AC017 |
typedef struct sceIoDevctlOpt { uint32_t unk_0; uint32_t unk_4; uint32_t unk_8; uint32_t unk_C; uint32_t unk_10; uint32_t unk_14; } sceIoDevctlOpt; int _sceIoDevctl(const char *dev, unsigned int cmd, void *indata, sceIoDevctlOpt *args, int inlen, void *outdata, int outlen);
sceIoGetstatByFdAsync
Version | NID |
---|---|
1.69-3.60 | 0x5167AC1E |
_sceIoPread
Version | NID |
---|---|
1.69-3.60 | 0x539FD5C4 |
typedef struct sceIoPreadOpt { SceOff offset; uint32_t unk_8; uint32_t unk_C; } sceIoPreadOpt; int _sceIoPread(SceUID uid, void *buffer, SceSize size, sceIoPreadOpt *opt); // 3.60 typedef struct SceIoPreadSyscallArgs { void *buf; SceSize nbyte; SceOff offset; } SceIoPreadSyscallArgs; SceSSize _sceIoPread(SceUID fd, SceIoPreadSyscallArgs *args);
_sceIoGetstatByFdAsync
Version | NID |
---|---|
1.69 | 0x554292F0 |
3.60 | different NID or not present |
_sceIoChstatByFdAsync
Version | NID |
---|---|
1.69 | 0x58010F40 |
3.60 | different NID or not present |
_sceIoGetThreadDefaultPriority
Version | NID |
---|---|
1.69 | 0x5DC29460 |
3.60 | different NID or not present |
_sceIoSync
Version | NID |
---|---|
1.69-3.60 | 0x5DD867F7 |
typedef struct sceIoSyncOpt { uint32_t unk_0; uint32_t unk_4; } sceIoSyncOpt; int _sceIoSync(const char* device, unsigned int unk, sceIoSyncOpt* opt);
_sceIoRemoveAsync
Version | NID |
---|---|
1.69-3.60 | 0x5FFA47E2 |
_sceIoDreadAsync
Version | NID |
---|---|
1.69 | 0x64B233B8 |
3.60 | different NID or not present |
_sceIoSetThreadDefaultPriority
Version | NID |
---|---|
0.990-1.69 | 0x654E27B1 |
3.60 | different NID or not present |
_sceIoSyncByFdAsync
Version | NID |
---|---|
1.69 | 0x6F78FAFE |
3.60 | different NID or not present |
_sceIoGetPriorityForSystem
Version | NID |
---|---|
1.69 | 0x70B7BB52 |
3.60 | different NID or not present |
sceIoReadAsync
Version | NID |
---|---|
1.69-3.60 | 0x773EBD45 |
_sceIoRemove
Version | NID |
---|---|
1.69-3.60 | 0x78955C65 |
typedef struct sceIoRemoveOpt { uint32_t unk_0; uint32_t unk_4; } sceIoRemoveOpt; int _sceIoRemove(const char *filename, sceIoRemoveOpt* opt);
sceIoSyncByFdAsync
Version | NID |
---|---|
1.69-3.60 | 0x7E1367CB |
sceIoSetProcessDefaultPriority
Version | NID |
---|---|
1.69-3.60 | 0x7F2ABBAF |
_sceIoRenameAsync
Version | NID |
---|---|
1.69-3.60 | 0x81794921 |
_sceIoSyncAsync
Version | NID |
---|---|
1.69-3.60 | 0x86DB0C0E |
_sceIoDread
Version | NID |
---|---|
1.69-3.60 | 0x8713D662 |
int _sceIoDread(SceUID fd, SceIoDirent *dir);
_sceIoWrite
Version | NID |
---|---|
1.69 | 0x8C319CF0 |
3.60 | different NID or not present |
_sceIoGetstat
Version | NID |
---|---|
1.69-3.60 | 0x8E7E11F2 |
typedef struct sceIoGetstatOpt { uint32_t unk_0; uint32_t unk_4; } sceIoGetstatOpt; int _sceIoGetstat(const char *name, SceIoStat *buf, sceIoGetstatOpt *opt);
sceIoCloseAsync
Version | NID |
---|---|
1.69-3.60 | 0x8EA3616A |
_sceIoMkdir
Version | NID |
---|---|
1.69-3.60 | 0x8F1ACC32 |
typedef struct sceIoMkdirOpt { uint32_t unk_0; uint32_t unk_4; } sceIoMkdirOpt; int _sceIoMkdir(const char *dirname, SceIoMode mode, sceIoMkdirOpt opt);
_sceIoCompleteMultiple
Version | NID |
---|---|
1.69-3.60 | 0x9111D004 |
_sceIoLseek32
Version | NID |
---|---|
1.69 | 0x92BDA6DA |
3.60 | different NID or not present |
_sceIoPwrite
Version | NID |
---|---|
1.69-3.60 | 0x9654094B |
typedef struct sceIoPwriteOpt { SceOff offset; uint32_t unk_8; uint32_t unk_C; } sceIoPwriteOpt; int _sceIoPwrite(SceUID uid, const void *data, int size, sceIoPwriteOpt *opt); // 3.60 typedef struct SceIoPwriteSyscallArgs { const void *buf; SceSize nbyte; SceOff offset; } SceIoPwriteSyscallArgs; SceSSize _sceIoPwrite(SceUID fd, SceIoPwriteSyscallArgs *args);
_sceIoGetPriority
Version | NID |
---|---|
1.69 | 0x9E3F880D |
3.60 | different NID or not present |
sceIoGetThreadDefaultPriority
Version | NID |
---|---|
1.69-3.60 | 0xA176CD03 |
_sceIoLseek
Version | NID |
---|---|
1.69-3.60 | 0xA604764A |
typedef struct _sceIoLseekOpt { // size is 0x10 SceOff offset; int whence; uint32_t unk; } _sceIoLseekOpt; SceOff _sceIoLseek(SceUID fd, _sceIoLseekOpt* opt); // 3.60 typedef struct SceIoLseekSyscallArgs { SceOff offset; int whence; int padding; } SceIoLseekSyscallArgs; SceOff _sceIoLseek(SceUID fd, SceIoLseekSyscallArgs *args);
sceIoChstatByFdAsync
Version | NID |
---|---|
1.69-3.60 | 0xA9F89275 |
_sceIoGetProcessDefaultPriority
Version | NID |
---|---|
1.69 | 0xB0486482 |
3.60 | different NID or not present |
_sceIoSetPriority
Version | NID |
---|---|
0.990-1.69 | 0xB14192F0 |
3.60 | different NID or not present |
_sceIoReadAsync
Version | NID |
---|---|
1.69 | 0xB2B891E6 |
3.60 | different NID or not present |
_sceIoPwriteAsync
Version | NID |
---|---|
1.69-3.60 | 0xB2D0B2F4 |
_sceIoChstatAsync
Version | NID |
---|---|
1.69-3.60 | 0xB4B021D9 |
sceIoSetThreadDefaultPriorityForSystem
Version | NID |
---|---|
1.69-3.60 | 0xB9C9C9CF |
_sceIoPreadAsync
Version | NID |
---|---|
1.69-3.60 | 0xBCF5684D |
sceIoDopenAsync
Version | NID |
---|---|
1.69-3.60 | 0xC49C312F |
sceIoClose
Version | NID |
---|---|
1.69-3.60 | 0xC70B8886 |
int sceIoClose(SceUID fd);
_sceIoWriteAsync
Version | NID |
---|---|
1.69 | 0xC92AF88F |
3.60 | different NID or not present |
_sceIoOpen
Version | NID |
---|---|
1.69-3.60 | 0xCC67B6FD |
typedef struct sceIoOpenOpt { uint32_t unk_0; uint32_t unk_4; } sceIoOpenOpt; SceUID _sceIoOpen(const char *filename, int flag, SceIoMode mode, sceIoOpenOpt *opt);
sceIoCancel
Version | NID |
---|---|
1.69-3.60 | 0xCEF48835 |
sceIoComplete
Version | NID |
---|---|
1.69-3.60 | 0xD1C49D2F |
_sceIoChstat
Version | NID |
---|---|
1.69-3.60 | 0xD2EE455F |
typedef struct sceIoChstatOpt { uint32_t unk_0; uint32_t unk_4; } sceIoChstatOpt; int _sceIoChstat(const char *name, const SceIoStat *stat, unsigned int cbit, sceIoChstatOpt *opt);
_sceIoSetProcessDefaultPriority
Version | NID |
---|---|
0.990-1.69 | 0xD302DCB9 |
3.60 | different NID or not present |
_sceIoGetstatAsync
Version | NID |
---|---|
1.69-3.60 | 0xD414C89F |
sceIoDcloseAsync
Version | NID |
---|---|
1.69-3.60 | 0xDC2D7D38 |
_sceIoIoctlAsync
Version | NID |
---|---|
1.69-3.60 | 0xE00DC256 |
_sceIoChstatByFd
Version | NID |
---|---|
1.69-3.60 | 0xE0BE2A30 |
int _sceIoChstatByFd(SceUID fd, const SceIoStat *buf, unsigned int cbit);
sceIoWriteAsync
Version | NID |
---|---|
1.69-3.60 | 0xE0D63D2A |
_sceIoGetstatByFd
Version | NID |
---|---|
1.69-3.60 | 0xE6C53567 |
int _sceIoGetstatByFd(SceUID fd, SceIoStat *stat);
_sceIoSetPriorityForSystem
Version | NID |
---|---|
0.990-1.69 | 0xE6C923B3 |
3.60 | different NID or not present |
_sceIoDopen
Version | NID |
---|---|
1.69-3.60 | 0xE6E614B5 |
typedef struct sceIoDopenOpt { uint32_t unk_0; uint32_t unk_4; } sceIoDopenOpt; SceUID _sceIoDopen(const char *dirname, sceIoDopenOpt *opt);
sceIoGetPriorityForSystem
Version | NID |
---|---|
1.69-3.60 | 0xEF5432ED |
sceIoGetPriority
Version | NID |
---|---|
1.69-3.60 | 0xF2A472A1 |
_sceIoRead
Version | NID |
---|---|
1.69-3.60 | different NID or not present |
_sceIoSyncByFd
Version | NID |
---|---|
1.69-3.60 | different NID or not present |
_sceIoCloseAsync
Version | NID |
---|---|
1.69-3.60 | different NID or not present |
_sceIoDopenAsync
Version | NID |
---|---|
1.69-3.60 | different NID or not present |
sceIoDreadAsync
Version | NID |
---|---|
1.69-3.60 | 0xF59F37B0 |
_sceIoMkdirAsync
Version | NID |
---|---|
1.69-3.60 | 0xF5C58B21 |
_sceIoCancel
Version | NID |
---|---|
1.69 | 0xF5DEEA19 |
3.60 | different NID or not present |
_sceIoClose
Version | NID |
---|---|
1.69 | 0xF69FB394 |
3.60 | different NID or not present |
_sceIoDclose
Version | NID |
---|---|
0.990-1.69 | 0xFAFF0002 |
3.60 | different NID or not present |
sceIoGetThreadDefaultPriorityForSystem
Version | NID |
---|---|
1.69-3.60 | 0xFCBCEAED |
sceIoRead
Version | NID |
---|---|
1.69-3.60 | 0xFDB32293 |
sceIoRead(SceUID fd, void *data, SceSize size);
_sceIoRmdir
Version | NID |
---|---|
1.69-3.60 | 0xFFFB4D76 |
typedef struct sceIoRmdirOpt { uint32_t unk_0; uint32_t unk_4; } sceIoRmdirOpt; int _sceIoRmdir(const char *dirname, sceIoRmdirOpt* opt);