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
Version |
World |
Privilege
|
1.69-3.60 |
Non-secure |
Kernel
|
Libraries
Known NIDs
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
|