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