Difference between revisions of "SceFios2Kernel"
CelesteBlue (talk | contribs) |
|||
(36 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 |
− | |||
− | |||
|- | |- | ||
− | | 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 | + | <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 188: | 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 198: | 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 208: | 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 218: | 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 228: | 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 237: | 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 248: | Line 315: | ||
|} | |} | ||
− | 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 258: | Line 329: | ||
|} | |} | ||
− | 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 268: | Line 343: | ||
|} | |} | ||
− | 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 278: | Line 366: | ||
|} | |} | ||
− | 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 288: | Line 385: | ||
|} | |} | ||
− | 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 298: | Line 399: | ||
|} | |} | ||
− | derived from <code> _sceFiosKernelOverlayRemoveForProcess </code> | + | derived from <code> _sceFiosKernelOverlayRemoveForProcess</code> |
+ | |||
+ | <source lang="C"> | ||
+ | int sceFiosKernelOverlayRemoveForProcess02(SceUID pid, SceFiosOverlayID id); | ||
+ | </source> | ||
=== sceFiosKernelOverlayResolveSync02 === | === sceFiosKernelOverlayResolveSync02 === | ||
Line 308: | Line 413: | ||
|} | |} | ||
− | 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 318: | Line 436: | ||
|} | |} | ||
− | 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 328: | Line 463: | ||
|} | |} | ||
− | derived from <code> _sceFiosKernelOverlayThreadIsDisabled </code> | + | derived from <code> _sceFiosKernelOverlayThreadIsDisabled</code> |
+ | |||
+ | <source lang="C"> | ||
+ | int sceFiosKernelOverlayThreadIsDisabled02(void); | ||
+ | </source> | ||
=== sceFiosKernelOverlayThreadSetDisabled02 === | === sceFiosKernelOverlayThreadSetDisabled02 === | ||
Line 338: | Line 477: | ||
|} | |} | ||
− | derived from <code> _sceFiosKernelOverlayThreadSetDisabled </code> | + | derived from <code> _sceFiosKernelOverlayThreadSetDisabled</code> |
+ | |||
+ | <source lang="C"> | ||
+ | int sceFiosKernelOverlayThreadSetDisabled02(int value); | ||
+ | </source> | ||
== SceFios2Kernel == | == SceFios2Kernel == | ||
Line 347: | Line 490: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x2A381357 |
− | |||
− | |||
|} | |} | ||
Line 357: | Line 498: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x6DBCF0B2 |
− | |||
− | |||
|} | |} | ||
Line 367: | Line 506: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0xF6A3E335 |
− | |||
− | |||
|} | |} | ||
Line 379: | Line 516: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x021B4AF7 |
− | |||
− | |||
|} | |} | ||
Line 391: | Line 526: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x5D6A1CCE |
− | |||
− | |||
|} | |} | ||
Line 403: | Line 536: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x2F06ADC6 |
− | |||
− | |||
|} | |} | ||
Line 415: | Line 546: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x759EBEE6 |
− | |||
− | |||
|} | |} | ||
Line 427: | Line 556: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x2A9724C9 |
− | |||
− | |||
|} | |} | ||
Line 439: | Line 566: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0xBC6B3CC5 |
− | |||
− | |||
|} | |} | ||
Line 449: | Line 574: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0xF44F3505 |
− | |||
− | |||
|} | |} | ||
Line 459: | Line 582: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x9379E2D5 |
− | |||
− | |||
|} | |} | ||
Line 469: | Line 590: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0xB02E0B26 |
− | |||
− | |||
|} | |} | ||
Line 479: | Line 598: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x6DF2FC05 |
− | |||
− | |||
|} | |} | ||
Line 489: | Line 606: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x6D6CDE05 |
− | |||
− | |||
|} | |} | ||
Line 499: | Line 614: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0xF8277E07 |
− | |||
− | |||
|} | |} | ||
Line 509: | Line 622: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0xB4927173 |
− | |||
− | |||
|} | |} | ||
Line 519: | Line 630: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0xE9AE60FB |
− | |||
− | |||
|} | |} | ||
Line 529: | Line 638: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x8CCA471A |
− | |||
− | |||
|} | |} | ||
Line 539: | Line 646: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x629F4FE4 |
− | |||
− | |||
|} | |} | ||
Line 549: | Line 654: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
− | | 1.69 | + | | 1.69-3.60 || 0x3E9172EA |
− | |||
− | |||
|} | |} | ||
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 |