SceFios2Kernel: Difference between revisions
CelesteBlue (talk | contribs) No edit summary |
|||
(45 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
FIOS sits on top of filesystem and provides the following functionality: | |||
* Schedule I/O requests - queue I/O operations, prioritize I/O operations, delayed (scheduled for specific time) async I/O operations, parallelized I/O operations. | |||
* Overlays - remap I/O operations to different location. Good example is patches or localization. | |||
* Caching - caching layer for I/O operations. I/O operations are split into chunks. Chunks can be cached in RAM. Performance can increase. | |||
* Dearchiving - transparent filter for I/O operations that dearchives data. Good usage would be for psarc files. | |||
Most of these functionalities are implemented in usermode in the <code>fios2.suprx</code> module. | |||
This kernel module is only used for overlays, so that the kernel, especially [[SceIofilemgr]], is aware of FIOS2 remapping. | |||
== Module == | == Module == | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version | ! Version !! World !! Privilege | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || Non-secure || Kernel | ||
|} | |} | ||
Line 19: | Line 27: | ||
! Version !! Name !! World !! Visibility !! NID | ! Version !! Name !! World !! Visibility !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || [[SceFios2Kernel#SceFios2KernelForDriver|SceFios2KernelForDriver]] || Non-secure || Kernel || 0x54D6B9EB | ||
|- | |- | ||
| 1.69 || [[SceFios2Kernel#SceFios2Kernel|SceFios2Kernel]] || Non-secure || User || 0x8757B742 | | 1.69-3.60 || [[SceFios2Kernel#SceFios2Kernel|SceFios2Kernel]] || Non-secure || User || 0x8757B742 | ||
|- | |- | ||
| 3.60 || [[SceFios2Kernel#SceFios2Kernel02|SceFios2Kernel02]] || Non-secure || ? || 0xE83E40A6 | |||
| 3.60 || [[SceFios2Kernel#SceFios2Kernel02|SceFios2Kernel02]] || | |||
|} | |} | ||
== Types == | |||
<source lang="C"> | |||
typedef int32_t SceFiosOverlayID; | |||
typedef struct SceFiosOverlay { | |||
uint8_t type; | |||
uint8_t order; | |||
uint16_t dst_len; | |||
uint16_t src_len; | |||
uint16_t unk2; | |||
SceUID pid; | |||
SceFiosOverlayID id; | |||
char dst[292]; | |||
char src[292]; // src path replaces dst path based on type policy | |||
} SceFiosOverlay; | |||
</source> | |||
== SceFios2KernelForDriver == | == SceFios2KernelForDriver == | ||
=== | === sceFiosKernelOverlayAddForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x2607EE4C | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayAdd</code> | ||
=== sceFiosKernelOverlayAddForProcessForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x17E65A1C | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayAddForProcess</code> | ||
<source lang="c"> | |||
int sceFiosKernelOverlayAddForProcessForDriver(SceUID pid, SceFiosOverlay *overlay, SceFiosOverlayID *outID); | |||
</source> | |||
=== | === sceFiosKernelOverlayGetInfoForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x725E6817 | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayGetInfo</code> | ||
=== | === sceFiosKernelOverlayGetInfoForProcessForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xF1762BC2 | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayGetInfoForProcess</code> | ||
<source lang="c"> | |||
int sceFiosKernelOverlayGetInfoForProcessForDriver(SceUID pid, SceFiosOverlayID id, SceFiosOverlay *overla); | |||
</source> | |||
=== | === sceFiosKernelOverlayGetListForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xFF42AAF0 | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayGetList</code> | ||
=== | <source lang="c"> | ||
int sceFiosKernelOverlayGetListForDriver(SceUID pid, char loOrderFilter, char hiOrderFilter, SceFiosOverlayID *outIDs, size_t maxIDs, size_t *actualIDs); | |||
</source> | |||
=== sceFiosKernelOverlayGetRecommendedSchedulerForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x241BF0D6 | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayGetRecommendedScheduler</code> | ||
<source lang="c"> | |||
int sceFiosKernelOverlayGetRecommendedSchedulerForDriver(int some_index, char *path); | |||
</source> | |||
=== | === sceFiosKernelOverlayModifyForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x7F8B960C | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayModify</code> | ||
=== | === sceFiosKernelOverlayModifyForProcessForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x853EA82A | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayModifyForProcess</code> | ||
=== | <source lang="c"> | ||
int sceFiosKernelOverlayModifyForProcessForDriver(SceUID pid, SceFiosOverlayID id, const SceFiosOverlay *newValue); | |||
</source> | |||
=== sceFiosKernelOverlayRemoveForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x2368FEB5 | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayRemove</code> | ||
=== | === sceFiosKernelOverlayRemoveForProcessForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x23247EFB | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayRemoveForProcess</code> | ||
=== | <source lang="c"> | ||
int sceFiosKernelOverlayRemoveForProcessForDriver(SceUID pid, SceFiosOverlayID id); | |||
</source> | |||
=== sceFiosKernelOverlayResolveSyncForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x0F456345 | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayResolveSync</code> | ||
<source lang="c"> | |||
int sceFiosKernelOverlayResolveSyncForDriver(SceUID pid, int resolveFlag, const char *inPath, char *outPath, size_t maxPath); | |||
</source> | |||
=== | === sceFiosKernelOverlayResolveWithRangeSyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xD3D968FC | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayResolveWithRangeSync</code> | ||
=== | <source lang="c"> | ||
int sceFiosKernelOverlayResolveWithRangeSyncForDriver(SceUID pid, int resolveFlag, const char *inPath, char *outPath, size_t maxPath, char loOrderFilter, char hiOrderFilter); | |||
</source> | |||
=== sceFiosKernelOverlayThreadIsDisabledForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xE71192C5 | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayThreadIsDisabled</code> | ||
<source lang="c"> | |||
int sceFiosKernelOverlayThreadIsDisabledForDriver(); | |||
</source> | |||
=== | === sceFiosKernelOverlayThreadSetDisabledForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x03727E5E | ||
|} | |} | ||
derived from <code> | derived from <code>_sceFiosKernelOverlayThreadSetDisabled</code> | ||
<source lang="c">int | <source lang="c"> | ||
int sceFiosKernelOverlayThreadSetDisabledForDriver(int value); | |||
</source> | |||
=== | === SceFios2KernelForDriver_unk_2649408B === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 186: | Line 244: | ||
should map to one of six functions that return <code>0x80820000</code> | should map to one of six functions that return <code>0x80820000</code> | ||
=== | used by <code>SceIofilemgr</code> so probably can be derived | ||
=== SceFios2KernelForDriver_unk_28E28A58 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 196: | Line 256: | ||
should map to one of six functions that return <code>0x80820000</code> | should map to one of six functions that return <code>0x80820000</code> | ||
=== | used by <code>SceIofilemgr</code> so probably can be derived | ||
=== SceFios2KernelForDriver_unk_35E7E75C === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 206: | Line 268: | ||
should map to one of six functions that return <code>0x80820000</code> | should map to one of six functions that return <code>0x80820000</code> | ||
=== | used by <code>SceIofilemgr</code> so probably can be derived | ||
=== SceFios2KernelForDriver_unk_3B329E86 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 216: | Line 280: | ||
should map to one of six functions that return <code>0x80820000</code> | should map to one of six functions that return <code>0x80820000</code> | ||
=== | used by <code>SceIofilemgr</code> so probably can be derived | ||
=== SceFios2KernelForDriver_unk_990F46A5 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 223: | Line 289: | ||
| 3.60 || 0x990F46A5 | | 3.60 || 0x990F46A5 | ||
|} | |} | ||
Sync fd with param. | |||
should map to one of six functions that return <code>0x80820000</code> | should map to one of six functions that return <code>0x80820000</code> | ||
=== | used by <code>SceIofilemgr</code> so probably can be derived | ||
=== SceFios2KernelForDriver_unk_DD7627EC === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 233: | Line 303: | ||
| 3.60 || 0xDD7627EC | | 3.60 || 0xDD7627EC | ||
|} | |} | ||
Close dir fd and free param memory. | |||
should map to one of six functions that return <code>0x80820000</code> | should map to one of six functions that return <code>0x80820000</code> | ||
used by <code>SceIofilemgr</code> so probably can be derived | |||
== SceFios2Kernel02 == | == SceFios2Kernel02 == | ||
Line 246: | Line 320: | ||
|} | |} | ||
derived from <code> _sceFiosKernelOverlayAddForProcess </code> | derived from <code> _sceFiosKernelOverlayAddForProcess</code> | ||
<source lang="C"> | |||
int sceFiosKernelOverlayAddForProcess02(SceUID pid, SceFiosOverlay *overlay, SceFiosOverlayID *outID); | |||
</source> | |||
=== sceFiosKernelOverlayGetInfoForProcess02 === | === sceFiosKernelOverlayGetInfoForProcess02 === | ||
Line 256: | Line 334: | ||
|} | |} | ||
derived from <code> _sceFiosKernelOverlayGetInfoForProcess </code> | derived from <code> _sceFiosKernelOverlayGetInfoForProcess</code> | ||
<source lang="C"> | |||
int sceFiosKernelOverlayGetInfoForProcess02(SceUID pid, SceFiosOverlayID id, SceFiosOverlay *overlay); | |||
</source> | |||
=== sceFiosKernelOverlayGetList02 === | === sceFiosKernelOverlayGetList02 === | ||
Line 266: | Line 348: | ||
|} | |} | ||
derived from <code> _sceFiosKernelOverlayGetList </code> | derived from <code> _sceFiosKernelOverlayGetList</code> | ||
<source lang="C"> | |||
typedef struct sceFiosKernelOverlayGetList02_opt { // size is 0x18 | |||
SceFiosOverlayID *outIDs; | |||
size_t maxIDs; | |||
size_t *actualIDs; | |||
int buffer_size; | |||
int reserved1; | |||
int reserved2; | |||
} sceFiosKernelOverlayGetList02_opt; | |||
int sceFiosKernelOverlayGetList02(SceUID pid, char loOrderFilter, char hiOrderFilter, sceFiosKernelOverlayGetList02_opt *opt); | |||
</source> | |||
=== sceFiosKernelOverlayGetRecommendedScheduler02 === | === sceFiosKernelOverlayGetRecommendedScheduler02 === | ||
Line 276: | Line 371: | ||
|} | |} | ||
derived from <code> _sceFiosKernelOverlayGetRecommendedScheduler </code> | derived from <code> _sceFiosKernelOverlayGetRecommendedScheduler</code> | ||
<source lang="C"> | |||
typedef struct sceFiosKernelOverlayGetRecommendedScheduler02_opt { // size is 8 | |||
int reserved1; | |||
int reserved2; | |||
} sceFiosKernelOverlayGetRecommendedScheduler02_opt; | |||
int sceFiosKernelOverlayGetRecommendedScheduler02(int some_index, char *path, sceFiosKernelOverlayGetRecommendedScheduler02_opt *opt); | |||
</source> | |||
=== sceFiosKernelOverlayModifyForProcess02 === | === sceFiosKernelOverlayModifyForProcess02 === | ||
Line 286: | Line 390: | ||
|} | |} | ||
derived from <code> _sceFiosKernelOverlayModifyForProcess </code> | derived from <code> _sceFiosKernelOverlayModifyForProcess</code> | ||
<source lang="C"> | |||
int sceFiosKernelOverlayModifyForProcess02(SceUID pid, SceFiosOverlayID id, const SceFiosOverlay *newValue); | |||
</source> | |||
=== sceFiosKernelOverlayRemoveForProcess02 === | === sceFiosKernelOverlayRemoveForProcess02 === | ||
Line 296: | Line 404: | ||
|} | |} | ||
derived from <code> _sceFiosKernelOverlayRemoveForProcess </code> | derived from <code> _sceFiosKernelOverlayRemoveForProcess</code> | ||
<source lang="C"> | |||
int sceFiosKernelOverlayRemoveForProcess02(SceUID pid, SceFiosOverlayID id); | |||
</source> | |||
=== sceFiosKernelOverlayResolveSync02 === | === sceFiosKernelOverlayResolveSync02 === | ||
Line 306: | Line 418: | ||
|} | |} | ||
derived from <code> _sceFiosKernelOverlayResolveSync </code> | derived from <code> _sceFiosKernelOverlayResolveSync</code> | ||
<source lang="C"> | |||
typedef struct sceFiosKernelOverlayResolveSync02_opt { // size is 0x18 | |||
char *outPath; | |||
size_t maxPath; | |||
int reserved1; | |||
int reserved2; | |||
int reserved3; | |||
int reserved4; | |||
} sceFiosKernelOverlayResolveSync02_opt; | |||
int sceFiosKernelOverlayResolveSync02(SceUID pid, int resolveFlag, const char *inPath, sceFiosKernelOverlayResolveSync02_opt *opt); | |||
</source> | |||
=== sceFiosKernelOverlayResolveWithRangeSync02 === | === sceFiosKernelOverlayResolveWithRangeSync02 === | ||
Line 316: | Line 441: | ||
|} | |} | ||
derived from <code> _sceFiosKernelOverlayResolveWithRangeSync </code> | derived from <code> _sceFiosKernelOverlayResolveWithRangeSync</code> | ||
<source lang="C"> | |||
typedef struct sceFiosKernelOverlayResolveWithRangeSync02_opt { // size is 0x1C | |||
char *outPath; | |||
size_t maxPath; | |||
char loOrderFilter; | |||
char hiOrderFilter; | |||
char reserved1; | |||
char reserved2; | |||
int reserved3; | |||
int reserved4; | |||
int reserved5; | |||
int reserved6; | |||
} sceFiosKernelOverlayResolveWithRangeSync02_opt; | |||
int sceFiosKernelOverlayResolveWithRangeSync02(SceUID pid, int resolveFlag, const char *inPath, sceFiosKernelOverlayResolveWithRangeSync02_opt *opt); | |||
</source> | |||
=== sceFiosKernelOverlayThreadIsDisabled02 === | === sceFiosKernelOverlayThreadIsDisabled02 === | ||
Line 326: | Line 468: | ||
|} | |} | ||
derived from <code> _sceFiosKernelOverlayThreadIsDisabled </code> | derived from <code> _sceFiosKernelOverlayThreadIsDisabled</code> | ||
<source lang="C"> | |||
int sceFiosKernelOverlayThreadIsDisabled02(void); | |||
</source> | |||
=== sceFiosKernelOverlayThreadSetDisabled02 === | === sceFiosKernelOverlayThreadSetDisabled02 === | ||
Line 336: | Line 482: | ||
|} | |} | ||
derived from <code> _sceFiosKernelOverlayThreadSetDisabled </code> | derived from <code> _sceFiosKernelOverlayThreadSetDisabled</code> | ||
<source lang="C"> | |||
int sceFiosKernelOverlayThreadSetDisabled02(int value); | |||
</source> | |||
== SceFios2Kernel == | == SceFios2Kernel == | ||
=== | === _sceFiosKernelOverlayAddForProcess === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x2A381357 | ||
|} | |} | ||
=== _sceFiosKernelOverlayAdd === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x6DBCF0B2 | ||
|} | |} | ||
=== | |||
=== _sceFiosKernelOverlayDHChstatSync === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0xF6A3E335 | ||
|} | |} | ||
returns <code>0x80820000</code> ? is it not callable from userspace? | returns <code>0x80820000</code> ? is it not callable from userspace? | ||
=== | === _sceFiosKernelOverlayDHCloseSync === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x021B4AF7 | ||
|} | |} | ||
returns <code>0x80820000</code> ? is it not callable from userspace? | returns <code>0x80820000</code> ? is it not callable from userspace? | ||
=== | === _sceFiosKernelOverlayDHOpenSync === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x5D6A1CCE | ||
|} | |} | ||
=== | |||
returns <code>0x80820000</code> ? is it not callable from userspace? | |||
=== _sceFiosKernelOverlayDHReadSync === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x2F06ADC6 | ||
|} | |} | ||
returns <code>0x80820000</code> ? is it not callable from userspace? | returns <code>0x80820000</code> ? is it not callable from userspace? | ||
=== | === _sceFiosKernelOverlayDHStatSync === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x759EBEE6 | ||
|} | |} | ||
=== | |||
returns <code>0x80820000</code> ? is it not callable from userspace? | |||
=== _sceFiosKernelOverlayDHSyncSync === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x2A9724C9 | ||
|} | |} | ||
=== | |||
returns <code>0x80820000</code> ? is it not callable from userspace? | |||
=== _sceFiosKernelOverlayGetInfoForProcess === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0xBC6B3CC5 | ||
|} | |} | ||
=== | |||
=== _sceFiosKernelOverlayGetInfo === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0xF44F3505 | ||
|} | |} | ||
=== | |||
=== _sceFiosKernelOverlayGetList === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x9379E2D5 | ||
|} | |} | ||
=== _sceFiosKernelOverlayGetRecommendedScheduler === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0xB02E0B26 | ||
|} | |} | ||
=== | |||
=== _sceFiosKernelOverlayModifyForProcess === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x6DF2FC05 | ||
|} | |} | ||
=== | |||
=== _sceFiosKernelOverlayModify === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x6D6CDE05 | ||
|} | |} | ||
=== | |||
=== _sceFiosKernelOverlayRemoveForProcess === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0xF8277E07 | ||
|} | |} | ||
=== | |||
=== _sceFiosKernelOverlayRemove === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0xB4927173 | ||
|} | |} | ||
=== _sceFiosKernelOverlayResolveSync === | === _sceFiosKernelOverlayResolveSync === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 504: | Line 635: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0xE9AE60FB | ||
|} | |} | ||
=== | |||
=== _sceFiosKernelOverlayResolveWithRangeSync === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x8CCA471A | ||
|} | |} | ||
=== | |||
=== _sceFiosKernelOverlayThreadIsDisabled === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x629F4FE4 | ||
|} | |} | ||
=== _sceFiosKernelOverlayThreadSetDisabled === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || 0x3E9172EA | ||
|} | |} | ||
[[Category:ARM]] | |||
[[Category:Kernel]] | |||
[[Category:Modules]] | [[Category:Modules]] | ||
[[Category: | [[Category:Library]] |
Latest revision as of 08:59, 25 May 2023
FIOS sits on top of filesystem and provides the following functionality:
- Schedule I/O requests - queue I/O operations, prioritize I/O operations, delayed (scheduled for specific time) async I/O operations, parallelized I/O operations.
- Overlays - remap I/O operations to different location. Good example is patches or localization.
- Caching - caching layer for I/O operations. I/O operations are split into chunks. Chunks can be cached in RAM. Performance can increase.
- Dearchiving - transparent filter for I/O operations that dearchives data. Good usage would be for psarc files.
Most of these functionalities are implemented in usermode in the fios2.suprx
module.
This kernel module is only used for overlays, so that the kernel, especially SceIofilemgr, is aware of FIOS2 remapping.
Module
Version | World | Privilege |
---|---|---|
1.69-3.60 | Non-secure | Kernel |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
1.69-3.60 | SceFios2KernelForDriver | Non-secure | Kernel | 0x54D6B9EB |
1.69-3.60 | SceFios2Kernel | Non-secure | User | 0x8757B742 |
3.60 | SceFios2Kernel02 | Non-secure | ? | 0xE83E40A6 |
Types
typedef int32_t SceFiosOverlayID; typedef struct SceFiosOverlay { uint8_t type; uint8_t order; uint16_t dst_len; uint16_t src_len; uint16_t unk2; SceUID pid; SceFiosOverlayID id; char dst[292]; char src[292]; // src path replaces dst path based on type policy } SceFiosOverlay;
SceFios2KernelForDriver
sceFiosKernelOverlayAddForDriver
Version | NID |
---|---|
3.60 | 0x2607EE4C |
derived from _sceFiosKernelOverlayAdd
sceFiosKernelOverlayAddForProcessForDriver
Version | NID |
---|---|
3.60 | 0x17E65A1C |
derived from _sceFiosKernelOverlayAddForProcess
int sceFiosKernelOverlayAddForProcessForDriver(SceUID pid, SceFiosOverlay *overlay, SceFiosOverlayID *outID);
sceFiosKernelOverlayGetInfoForDriver
Version | NID |
---|---|
3.60 | 0x725E6817 |
derived from _sceFiosKernelOverlayGetInfo
sceFiosKernelOverlayGetInfoForProcessForDriver
Version | NID |
---|---|
3.60 | 0xF1762BC2 |
derived from _sceFiosKernelOverlayGetInfoForProcess
int sceFiosKernelOverlayGetInfoForProcessForDriver(SceUID pid, SceFiosOverlayID id, SceFiosOverlay *overla);
sceFiosKernelOverlayGetListForDriver
Version | NID |
---|---|
3.60 | 0xFF42AAF0 |
derived from _sceFiosKernelOverlayGetList
int sceFiosKernelOverlayGetListForDriver(SceUID pid, char loOrderFilter, char hiOrderFilter, SceFiosOverlayID *outIDs, size_t maxIDs, size_t *actualIDs);
sceFiosKernelOverlayGetRecommendedSchedulerForDriver
Version | NID |
---|---|
3.60 | 0x241BF0D6 |
derived from _sceFiosKernelOverlayGetRecommendedScheduler
int sceFiosKernelOverlayGetRecommendedSchedulerForDriver(int some_index, char *path);
sceFiosKernelOverlayModifyForDriver
Version | NID |
---|---|
3.60 | 0x7F8B960C |
derived from _sceFiosKernelOverlayModify
sceFiosKernelOverlayModifyForProcessForDriver
Version | NID |
---|---|
3.60 | 0x853EA82A |
derived from _sceFiosKernelOverlayModifyForProcess
int sceFiosKernelOverlayModifyForProcessForDriver(SceUID pid, SceFiosOverlayID id, const SceFiosOverlay *newValue);
sceFiosKernelOverlayRemoveForDriver
Version | NID |
---|---|
3.60 | 0x2368FEB5 |
derived from _sceFiosKernelOverlayRemove
sceFiosKernelOverlayRemoveForProcessForDriver
Version | NID |
---|---|
3.60 | 0x23247EFB |
derived from _sceFiosKernelOverlayRemoveForProcess
int sceFiosKernelOverlayRemoveForProcessForDriver(SceUID pid, SceFiosOverlayID id);
sceFiosKernelOverlayResolveSyncForDriver
Version | NID |
---|---|
3.60 | 0x0F456345 |
derived from _sceFiosKernelOverlayResolveSync
int sceFiosKernelOverlayResolveSyncForDriver(SceUID pid, int resolveFlag, const char *inPath, char *outPath, size_t maxPath);
sceFiosKernelOverlayResolveWithRangeSyncForDriver
Version | NID |
---|---|
3.60 | 0xD3D968FC |
derived from _sceFiosKernelOverlayResolveWithRangeSync
int sceFiosKernelOverlayResolveWithRangeSyncForDriver(SceUID pid, int resolveFlag, const char *inPath, char *outPath, size_t maxPath, char loOrderFilter, char hiOrderFilter);
sceFiosKernelOverlayThreadIsDisabledForDriver
Version | NID |
---|---|
3.60 | 0xE71192C5 |
derived from _sceFiosKernelOverlayThreadIsDisabled
int sceFiosKernelOverlayThreadIsDisabledForDriver();
sceFiosKernelOverlayThreadSetDisabledForDriver
Version | NID |
---|---|
3.60 | 0x03727E5E |
derived from _sceFiosKernelOverlayThreadSetDisabled
int sceFiosKernelOverlayThreadSetDisabledForDriver(int value);
SceFios2KernelForDriver_unk_2649408B
Version | NID |
---|---|
3.60 | 0x2649408B |
should map to one of six functions that return 0x80820000
used by SceIofilemgr
so probably can be derived
SceFios2KernelForDriver_unk_28E28A58
Version | NID |
---|---|
3.60 | 0x28E28A58 |
should map to one of six functions that return 0x80820000
used by SceIofilemgr
so probably can be derived
SceFios2KernelForDriver_unk_35E7E75C
Version | NID |
---|---|
3.60 | 0x35E7E75C |
should map to one of six functions that return 0x80820000
used by SceIofilemgr
so probably can be derived
SceFios2KernelForDriver_unk_3B329E86
Version | NID |
---|---|
3.60 | 0x3B329E86 |
should map to one of six functions that return 0x80820000
used by SceIofilemgr
so probably can be derived
SceFios2KernelForDriver_unk_990F46A5
Version | NID |
---|---|
3.60 | 0x990F46A5 |
Sync fd with param.
should map to one of six functions that return 0x80820000
used by SceIofilemgr
so probably can be derived
SceFios2KernelForDriver_unk_DD7627EC
Version | NID |
---|---|
3.60 | 0xDD7627EC |
Close dir fd and free param memory.
should map to one of six functions that return 0x80820000
used by SceIofilemgr
so probably can be derived
SceFios2Kernel02
sceFiosKernelOverlayAddForProcess02
Version | NID |
---|---|
3.60 | 0xB77C366D |
derived from _sceFiosKernelOverlayAddForProcess
int sceFiosKernelOverlayAddForProcess02(SceUID pid, SceFiosOverlay *overlay, SceFiosOverlayID *outID);
sceFiosKernelOverlayGetInfoForProcess02
Version | NID |
---|---|
3.60 | 0x111DCCFA |
derived from _sceFiosKernelOverlayGetInfoForProcess
int sceFiosKernelOverlayGetInfoForProcess02(SceUID pid, SceFiosOverlayID id, SceFiosOverlay *overlay);
sceFiosKernelOverlayGetList02
Version | NID |
---|---|
3.60 | 0xD90FC293 |
derived from _sceFiosKernelOverlayGetList
typedef struct sceFiosKernelOverlayGetList02_opt { // size is 0x18 SceFiosOverlayID *outIDs; size_t maxIDs; size_t *actualIDs; int buffer_size; int reserved1; int reserved2; } sceFiosKernelOverlayGetList02_opt; int sceFiosKernelOverlayGetList02(SceUID pid, char loOrderFilter, char hiOrderFilter, sceFiosKernelOverlayGetList02_opt *opt);
sceFiosKernelOverlayGetRecommendedScheduler02
Version | NID |
---|---|
3.60 | 0x26B9D08A |
derived from _sceFiosKernelOverlayGetRecommendedScheduler
typedef struct sceFiosKernelOverlayGetRecommendedScheduler02_opt { // size is 8 int reserved1; int reserved2; } sceFiosKernelOverlayGetRecommendedScheduler02_opt; int sceFiosKernelOverlayGetRecommendedScheduler02(int some_index, char *path, sceFiosKernelOverlayGetRecommendedScheduler02_opt *opt);
sceFiosKernelOverlayModifyForProcess02
Version | NID |
---|---|
3.60 | 0x6A976528 |
derived from _sceFiosKernelOverlayModifyForProcess
int sceFiosKernelOverlayModifyForProcess02(SceUID pid, SceFiosOverlayID id, const SceFiosOverlay *newValue);
sceFiosKernelOverlayRemoveForProcess02
Version | NID |
---|---|
3.60 | 0x50A7167C |
derived from _sceFiosKernelOverlayRemoveForProcess
int sceFiosKernelOverlayRemoveForProcess02(SceUID pid, SceFiosOverlayID id);
sceFiosKernelOverlayResolveSync02
Version | NID |
---|---|
3.60 | 0xD76F046A |
derived from _sceFiosKernelOverlayResolveSync
typedef struct sceFiosKernelOverlayResolveSync02_opt { // size is 0x18 char *outPath; size_t maxPath; int reserved1; int reserved2; int reserved3; int reserved4; } sceFiosKernelOverlayResolveSync02_opt; int sceFiosKernelOverlayResolveSync02(SceUID pid, int resolveFlag, const char *inPath, sceFiosKernelOverlayResolveSync02_opt *opt);
sceFiosKernelOverlayResolveWithRangeSync02
Version | NID |
---|---|
3.60 | 0x8DAD1FED |
derived from _sceFiosKernelOverlayResolveWithRangeSync
typedef struct sceFiosKernelOverlayResolveWithRangeSync02_opt { // size is 0x1C char *outPath; size_t maxPath; char loOrderFilter; char hiOrderFilter; char reserved1; char reserved2; int reserved3; int reserved4; int reserved5; int reserved6; } sceFiosKernelOverlayResolveWithRangeSync02_opt; int sceFiosKernelOverlayResolveWithRangeSync02(SceUID pid, int resolveFlag, const char *inPath, sceFiosKernelOverlayResolveWithRangeSync02_opt *opt);
sceFiosKernelOverlayThreadIsDisabled02
Version | NID |
---|---|
3.60 | 0xD6A4FDD6 |
derived from _sceFiosKernelOverlayThreadIsDisabled
int sceFiosKernelOverlayThreadIsDisabled02(void);
sceFiosKernelOverlayThreadSetDisabled02
Version | NID |
---|---|
3.60 | 0x7F26D4DD |
derived from _sceFiosKernelOverlayThreadSetDisabled
int sceFiosKernelOverlayThreadSetDisabled02(int value);
SceFios2Kernel
_sceFiosKernelOverlayAddForProcess
Version | NID |
---|---|
1.69-3.60 | 0x2A381357 |
_sceFiosKernelOverlayAdd
Version | NID |
---|---|
1.69-3.60 | 0x6DBCF0B2 |
_sceFiosKernelOverlayDHChstatSync
Version | NID |
---|---|
1.69-3.60 | 0xF6A3E335 |
returns 0x80820000
? is it not callable from userspace?
_sceFiosKernelOverlayDHCloseSync
Version | NID |
---|---|
1.69-3.60 | 0x021B4AF7 |
returns 0x80820000
? is it not callable from userspace?
_sceFiosKernelOverlayDHOpenSync
Version | NID |
---|---|
1.69-3.60 | 0x5D6A1CCE |
returns 0x80820000
? is it not callable from userspace?
_sceFiosKernelOverlayDHReadSync
Version | NID |
---|---|
1.69-3.60 | 0x2F06ADC6 |
returns 0x80820000
? is it not callable from userspace?
_sceFiosKernelOverlayDHStatSync
Version | NID |
---|---|
1.69-3.60 | 0x759EBEE6 |
returns 0x80820000
? is it not callable from userspace?
_sceFiosKernelOverlayDHSyncSync
Version | NID |
---|---|
1.69-3.60 | 0x2A9724C9 |
returns 0x80820000
? is it not callable from userspace?
_sceFiosKernelOverlayGetInfoForProcess
Version | NID |
---|---|
1.69-3.60 | 0xBC6B3CC5 |
_sceFiosKernelOverlayGetInfo
Version | NID |
---|---|
1.69-3.60 | 0xF44F3505 |
_sceFiosKernelOverlayGetList
Version | NID |
---|---|
1.69-3.60 | 0x9379E2D5 |
_sceFiosKernelOverlayGetRecommendedScheduler
Version | NID |
---|---|
1.69-3.60 | 0xB02E0B26 |
_sceFiosKernelOverlayModifyForProcess
Version | NID |
---|---|
1.69-3.60 | 0x6DF2FC05 |
_sceFiosKernelOverlayModify
Version | NID |
---|---|
1.69-3.60 | 0x6D6CDE05 |
_sceFiosKernelOverlayRemoveForProcess
Version | NID |
---|---|
1.69-3.60 | 0xF8277E07 |
_sceFiosKernelOverlayRemove
Version | NID |
---|---|
1.69-3.60 | 0xB4927173 |
_sceFiosKernelOverlayResolveSync
Version | NID |
---|---|
1.69-3.60 | 0xE9AE60FB |
_sceFiosKernelOverlayResolveWithRangeSync
Version | NID |
---|---|
1.69-3.60 | 0x8CCA471A |
_sceFiosKernelOverlayThreadIsDisabled
Version | NID |
---|---|
1.69-3.60 | 0x629F4FE4 |
_sceFiosKernelOverlayThreadSetDisabled
Version | NID |
---|---|
1.69-3.60 | 0x3E9172EA |