Difference between revisions of "SceFios2Kernel"
CelesteBlue (talk | contribs) |
|||
(42 intermediate revisions by 2 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. | ||
+ | |||
== Module == | == Module == | ||
Line 8: | Line 15: | ||
| 1.69 || SceFios2Kernel || Non-secure || Kernel || 0x26E15F8F | | 1.69 || SceFios2Kernel || Non-secure || Kernel || 0x26E15F8F | ||
|- | |- | ||
− | | 3.60 || SceFios2Kernel || | + | | 3.60 || SceFios2Kernel || Non-secure || Kernel || 0x10ECF2D0 |
|} | |} | ||
Line 19: | Line 26: | ||
! Version !! Name !! World !! Visibility !! NID | ! Version !! Name !! World !! Visibility !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || [[SceFios2Kernel#SceFios2KernelForDriver|SceFios2KernelForDriver]] || Non-secure || Kernel || 0x54D6B9EB |
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | 3.60 || [[SceFios2Kernel#SceFios2Kernel|SceFios2Kernel]] || | + | | 1.69-3.60 || [[SceFios2Kernel#SceFios2Kernel|SceFios2Kernel]] || Non-secure || User || 0x8757B742 |
|- | |- | ||
− | | 3.60 || [[SceFios2Kernel#SceFios2Kernel02|SceFios2Kernel02]] || | + | | 3.60 || [[SceFios2Kernel#SceFios2Kernel02|SceFios2Kernel02]] || Non-secure || ? || 0xE83E40A6 |
|} | |} | ||
+ | |||
+ | == 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 sceFiosKernelOverlayThreadSetDisabledForDriver(int value); | ||
+ | </source> | ||
+ | |||
+ | === SceFios2KernelForDriver_unk_2649408B === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 182: | Line 243: | ||
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 192: | Line 255: | ||
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 202: | Line 267: | ||
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 212: | Line 279: | ||
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 222: | Line 291: | ||
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 231: | Line 302: | ||
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 241: | Line 314: | ||
| 3.60 || 0xB77C366D | | 3.60 || 0xB77C366D | ||
|} | |} | ||
+ | |||
+ | derived from <code> _sceFiosKernelOverlayAddForProcess</code> | ||
+ | |||
+ | <source lang="C"> | ||
+ | int sceFiosKernelOverlayAddForProcess02(SceUID pid, SceFiosOverlay *overlay, SceFiosOverlayID *outID); | ||
+ | </source> | ||
=== sceFiosKernelOverlayGetInfoForProcess02 === | === sceFiosKernelOverlayGetInfoForProcess02 === | ||
Line 249: | Line 328: | ||
| 3.60 || 0x111DCCFA | | 3.60 || 0x111DCCFA | ||
|} | |} | ||
+ | |||
+ | derived from <code> _sceFiosKernelOverlayGetInfoForProcess</code> | ||
+ | |||
+ | <source lang="C"> | ||
+ | int sceFiosKernelOverlayGetInfoForProcess02(SceUID pid, SceFiosOverlayID id, SceFiosOverlay *overlay); | ||
+ | </source> | ||
=== sceFiosKernelOverlayGetList02 === | === sceFiosKernelOverlayGetList02 === | ||
Line 257: | Line 342: | ||
| 3.60 || 0xD90FC293 | | 3.60 || 0xD90FC293 | ||
|} | |} | ||
+ | |||
+ | 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 265: | Line 365: | ||
| 3.60 || 0x26B9D08A | | 3.60 || 0x26B9D08A | ||
|} | |} | ||
+ | |||
+ | 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 273: | Line 384: | ||
| 3.60 || 0x6A976528 | | 3.60 || 0x6A976528 | ||
|} | |} | ||
+ | |||
+ | derived from <code> _sceFiosKernelOverlayModifyForProcess</code> | ||
+ | |||
+ | <source lang="C"> | ||
+ | int sceFiosKernelOverlayModifyForProcess02(SceUID pid, SceFiosOverlayID id, const SceFiosOverlay *newValue); | ||
+ | </source> | ||
=== sceFiosKernelOverlayRemoveForProcess02 === | === sceFiosKernelOverlayRemoveForProcess02 === | ||
Line 281: | Line 398: | ||
| 3.60 || 0x50A7167C | | 3.60 || 0x50A7167C | ||
|} | |} | ||
+ | |||
+ | derived from <code> _sceFiosKernelOverlayRemoveForProcess</code> | ||
+ | |||
+ | <source lang="C"> | ||
+ | int sceFiosKernelOverlayRemoveForProcess02(SceUID pid, SceFiosOverlayID id); | ||
+ | </source> | ||
=== sceFiosKernelOverlayResolveSync02 === | === sceFiosKernelOverlayResolveSync02 === | ||
Line 289: | Line 412: | ||
| 3.60 || 0xD76F046A | | 3.60 || 0xD76F046A | ||
|} | |} | ||
+ | |||
+ | 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 297: | Line 435: | ||
| 3.60 || 0x8DAD1FED | | 3.60 || 0x8DAD1FED | ||
|} | |} | ||
+ | |||
+ | 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 305: | Line 462: | ||
| 3.60 || 0xD6A4FDD6 | | 3.60 || 0xD6A4FDD6 | ||
|} | |} | ||
+ | |||
+ | derived from <code> _sceFiosKernelOverlayThreadIsDisabled</code> | ||
+ | |||
+ | <source lang="C"> | ||
+ | int sceFiosKernelOverlayThreadIsDisabled02(void); | ||
+ | </source> | ||
=== sceFiosKernelOverlayThreadSetDisabled02 === | === sceFiosKernelOverlayThreadSetDisabled02 === | ||
Line 313: | Line 476: | ||
| 3.60 || 0x7F26D4DD | | 3.60 || 0x7F26D4DD | ||
|} | |} | ||
+ | |||
+ | 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 480: | Line 630: | ||
! 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:Modules]] | [[Category:Modules]] | ||
[[Category:Kernel]] | [[Category:Kernel]] |
Revision as of 17:58, 23 October 2019
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.
Module
Known NIDs
Version | Name | World | Privilege | NID |
---|---|---|---|---|
1.69 | SceFios2Kernel | Non-secure | Kernel | 0x26E15F8F |
3.60 | SceFios2Kernel | Non-secure | Kernel | 0x10ECF2D0 |
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 |
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 |
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 |