Difference between revisions of "SceIofilemgr"

From Vita Development Wiki
Jump to navigation Jump to search
Line 1,068: Line 1,068:
 
| 1.69 || 0x36CAF911
 
| 1.69 || 0x36CAF911
 
|-
 
|-
| 3.60 ||  
+
| 3.60 || different NID or not present
 
|-
 
|-
 
|}
 
|}
 +
 
=== _sceIoSetThreadDefaultPriorityForSystem ===
 
=== _sceIoSetThreadDefaultPriorityForSystem ===
 
{| class="wikitable"
 
{| class="wikitable"

Revision as of 14:16, 17 February 2017

SceIofilemgr is the primary interface for file IO. Read File Management for more information on file IO.

Module

This module exists in only in non-secure world. The SELF can be found in os0:kd/iofilemgr.skprx.

Known NIDs

Version Name World Privilege NID
1.69 SceIofilemgr Non-secure Kernel 0x3E244C17

Libraries

This module is accessible by usermode.

Known NIDs

Version Name World Visibility NID
1.69 SceIofilemgrForDriver Non-secure Kernel 0x40FD29C7
1.69 SceIofilemgr Non-secure User 0xF2FF276E

Mount Points

This table is stored in data segment of SceIofilemgr as array of mount_point_info elements

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 exfat sd0: sdstor0:ext-pp-act-a, sdstor0:ext-lp-act-entire 0x100
/os/exfat 0x1000001 0x1002 exfat os0: sdstor0:int-lp-act-os 0x200
/vs/exfat 0x1000001 0x1002 exfat vs0: sdstor0:int-lp-ign-vsh 0x300
/vd/exfat 0x1000001 0x10002 exfat vd0: sdstor0:int-lp-ign-vshdata 0x400
/tm/exfat 0x1000001 0x10002 exfat tm0: sdstor0:int-lp-ign-vtrm 0x500
/ur/exfat 0x1000001 0x50002 exfat ur0: sdstor0:int-lp-ign-user 0x600
/ud/exfat 0x1000001 0x10002 exfat ud0: sdstor0:int-lp-ign-updater 0x700
/ux/exfat 0x2020001 0x30002 exfat ux0: sdstor0:xmc-lp-ign-userext / 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 exfat 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 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

VFS Nodes

Module Name Comment
SceSdstor sdstor_dev_fs
SceExfatfs exfat
SceIofilemgr dummy_ttyp_dev_fs
ScePfsMgr PFS_REDIRECT_INF Redirect Pseudo Drive.
ScePfsMgr PFS_GDSD_INF Gamedata/Savedata Pseudo Drive.
ScePfsMgr PFS_AC_INF AC Pseudo Drive.

VFS Operations

  • implemented operation is marked as implemented
  • not implemented is marked as
  • return 0 placeholder is marked as 0
  • return error is marked with corresponding error name
Function sdstor_dev_fs exfat dummy_ttyp_dev_fs PFS_REDIRECT_INF PFS_GDSD_INF PFS_AC_INF
1 implemented implemented implemented implemented implemented implemented
2 SCE_ERROR_ERRNO_EBUSY implemented 0 implemented implemented implemented
3 implemented implemented implemented implemented implemented implemented
4 implemented
5
6
7 implemented 0 implemented implemented
8
9 0 0 0 0 0 0
10 0 0 0 0 0
11
12 implemented implemented implemented implemented implemented
13 implemented implemented implemented implemented implemented

VFS Node Operations

  • implemented operation is marked as implemented
  • not implemented is marked as
  • return 0 placeholder is marked as 0
  • return error is marked with corresponding error name
Function sdstor_dev_fs exfat dummy_ttyp_dev_fs PFS_REDIRECT_INF PFS_GDSD_INF PFS_AC_INF
1 implemented implemented 0 implemented implemented implemented
2 implemented implemented implemented implemented
3 implemented implemented 0 implemented implemented implemented
4 implemented implemented implemented implemented implemented implemented
5 implemented implemented 0 implemented implemented implemented
6 implemented implemented implemented implemented implemented implemented
7 implemented implemented 0 implemented implemented implemented
8 SCE_ERROR_ERRNO_EUNSUP 0 implemented implemented implemented
9 implemented implemented implemented implemented implemented
10 implemented implemented implemented implemented
11 implemented implemented implemented implemented
12 implemented implemented implemented implemented
13 implemented implemented implemented implemented
14 implemented implemented implemented implemented
15 implemented implemented implemented implemented
16 implemented implemented implemented implemented
17 implemented implemented implemented implemented
18
19 implemented implemented implemented implemented implemented
20 implemented implemented implemented implemented implemented
21 0 implemented 0 implemented implemented implemented
22 implemented
23 implemented
24 0 implemented implemented implemented implemented
25 implemented implemented implemented implemented
26 implemented implemented implemented implemented
27 implemented implemented implemented implemented
28 implemented implemented implemented implemented
29

Types

typedef struct vfs_block_dev_info //size is 0x14
{
  char* vitaMount;
  char* filesystem; // Some name, I guess it is filesystem
  char* blockDevicePrimary;
  char* blockDeviceSecondary; // can be 0
  uint32_t vshMountId; //must be same as in mount_point_info
}vfs_block_dev_info;

typedef struct vfs_mount_point_info_base
{
  char* unixMount;
  uint32_t unk_4; //zero
  uint32_t devMajor;
  uint32_t devMinor;

  char* filesystem;
  uint32_t unk_14; //zero
  vfs_block_dev_info* blockDev1;
  uint32_t unk_1C; //zero
} vfs_mount_point_info_base;

typedef struct vfs_mount_point_info //size is 0x38
{
  uint32_t vshMountId;
  
  vfs_mount_point_info_base base;

  vfs_block_dev_info* blockDev2; //same as blockDev1
  
  uint32_t unk_28; //zero - except for (ux0:, gro0:, grw0:) - maybe related to device specific data?
  uint32_t unk_2C; //zero
  
  uint32_t unk_30; //zero
  uint32_t unk_34; //zero
}vfs_mount_point_info;

//probably vfsops
struct node_ops1 // size is 0x34 (13 pointers)
{
  int (*func1)(void* ctx);
  int (*func2)(void* ctx); // ?
  int (*func3)(void* ctx);
  int (*func4)(void* ctx);
  int (*func5)(void* ctx); // not implemented by all
  int (*func6)(void* ctx); // not implemented by all
  int (*func7)(void* ctx);
  int (*func8)(void* ctx); // not implemented by all
  int (*func9)(void* ctx); // called by sceVfsAddVfs
  int (*func10)(void* ctx); // called by sceVfsDeleteVfs
  int (*func11)(void* ctx); // not implemented by all
  int (*func12)(void* ctx); // sceIoDevctlForDriver
  int (*func13)(void* ctx); // ?
};

//probably vnodeops
struct node_ops2 // size is 0x74 (29 pointers)
{
  int (*func1)(void* ctx); // sceIoOpenForDriver
  int (*func2)(void* ctx); // sceIoOpenForDriver (another one ?)
  int (*func3)(void* ctx); // ?
  int (*func4)(void* ctx); // ?
  int (*func5)(void* ctx); // sceIoReadForDriver
  int (*func6)(void* ctx); // sceIoWriteForDriver
  int (*func7)(void* ctx); // sceIoLseekForDriver or sceIoLseek32?
  int (*func8)(void* ctx); // sceIoIoctlForDriver
  int (*func9)(void* ctx); // ?
  int (*func10)(void* ctx); // sceIoMkdirForDriver
  int (*func11)(void* ctx); // sceIoRmdirForDriver
  int (*func12)(void* ctx); // sceIoDopenForDriver
  int (*func13)(void* ctx); // sceIoDcloseForDriver
  int (*func14)(void* ctx); // sceIoDreadForDriver
  int (*func15)(void* ctx); // sceIoGetstatForDriver or sceIoGetstatByFdForDriver
  int (*func16)(void* ctx); // sceIoChstatForDriver or sceIoChstatByFdForDriver
  int (*func17)(void* ctx); // sceIoRenameForDriver
  int (*func18)(void* ctx); // not implemented by all
  int (*func19)(void* ctx); // sceIoPreadForDriver
  int (*func20)(void* ctx); // sceIoPwriteForDriver
  int (*func21)(void* ctx); // ?
  int (*func22)(void* ctx); // not referenced
  int (*func23)(void* ctx); // not referenced
  int (*func24)(void* ctx); // sceIoSyncForDriver or sceIoSyncByFdForDriver
  int (*func25)(void* ctx); // sceIoGetstatByFdForDriver
  int (*func26)(void* ctx); // sceIoChstatByFdForDriver
  int (*func27)(void* ctx); // ?
  int (*func28)(void* ctx); // ?
  int (*func29)(void* ctx); // not implemented by all
};

struct vfs_add_data
{
    node_ops1* funcs1;
    const char *name; //max size is 0x20
    int flags; //0x0E
    int unk_C; //0x01 / 0x00 (root, leaf ?)
    
    int unk_10; //0x10
    node_ops2* funcs2;
    int unk_18; //0x00
    vfs_add_data* next_element; //ptr to next element, confirmed
};

struct vfs_node
{
   uint8_t data1[0x40];
   
   node_ops2 *ops;
   uint32_t unk_44;
   uint32_t unk_48;
   uint32_t unk_4C;
   
   uint8_t data1[0x80];
   
   uint32_t unk_D0;

}vfs_node;

Data segment layout

Address Size Description
0x0000 0x1A90 unknown
0x1A90 0x700 array of 32 elements of vfs_mount_point_info
0x2190 0x10 unknown
0x21A0 0x40 unknown
0x21E0 0x3C unknown
0x221C 0x20 vfs_add_data dummy_ttyp_dev_fs node

SceIofilemgrForDriver

sceVfsUnmount

Version NID
1.69 0x9C7E7B76
3.60 0x9C7E7B76
struct vfs_unmount_data
{
    const char *mountpoint;
    int flags;
};
int sceVfsUnmount(struct vfs_unmount_data *data);

sceVfsDeleteVfs

Version NID
1.69 0x9CBFA725
3.60 0x9CBFA725
int sceVfsDeleteVfs(const char *name, void **deleted_node);

sceVfsAddVfs

Version NID
1.69 0x673D2FCD
3.60 0x673D2FCD
int sceVfsAddVfs(struct vfs_add_data *data);

sceVfsMount

Version NID
1.69 0xB62DE9A6
3.60 0xB62DE9A6
int sceVfsMount(struct vfs_mount_point_info_base* data);

sceVfsGetNewNode

Version NID
1.69 0xD60B5C63
3.60 0xD60B5C63
int sceVfsGetNewNode(void *ctx, node_ops2 *ops, int unused, vfs_node **node);

sceIoDreadForDriver

Version NID
1.69 0x20CF5FC7
3.60 0x20CF5FC7

Call interface is same as sceIoDread

sceIoWriteForDriver

Version NID
1.69 0x21EE91F0
3.60 0x21EE91F0

Call interface is same as sceIoWrite

sceIoDopenForDriver

Version NID
1.69 0x463B25CC
3.60 0x463B25CC

Call interface is same as sceIoDopen

sceIoLseekForDriver

Version NID
1.69 0x62090481
3.60 0x62090481

Call interface is same as sceIoLseek

sceIoOpenForDriver

Version NID
1.69 0x75192972
3.60 0x75192972

Call interface is same as sceIoOpen

sceIoChstatForDriver

Version NID
1.69 0x7D42B8DC
3.60 0x7D42B8DC

Call interface is same as sceIoChstat

sceIoGetstatForDriver

Version NID
1.69 0x75C96D25
3.60 0x75C96D25

Call interface is same as sceIoGetstat

sceIoMkdirForDriver

Version NID
1.69 0x7F710B25
3.60 0x7F710B25

Call interface is same as sceIoMkdir

sceIoReadForDriver

Version NID
1.69 0xE17EFC03
3.60 0xE17EFC03

Call interface is same as sceIoRead

sceIoCloseForDriver

Version NID
1.69 0xF99DD8A3
3.60 0xF99DD8A3

Call interface is same as sceIoClose

sceIoRenameForDriver

Version NID
1.69 0xDC0C4997
3.60 0xDC0C4997

Call interface is same as sceIoRename

sceIoRemoveForDriver

Version NID
1.69 0x0D7BB3E1
3.60 0x0D7BB3E1

Call interface is same as sceIoRemove

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

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

sceIoDcloseForDriver

Version NID
3.60 0x19C81DD6

Derived from sceIoDclose

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

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

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

sceIoPwriteAsyncForDriver

Version NID
3.60 0x202CDDE3

Derived from _sceIoPwriteAsync

sceIoPwriteForDriver

Version NID
3.60 0x5F1512C8

Derived from _sceIoPwrite

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

sceIoSyncByFdAsyncForDriver

Version NID
3.60 0x041209CF

Derived from sceIoSyncByFdAsync

sceIoSyncByFdForDriver

Version NID
3.60 0x43170575

Derived from sceIoSyncByFd

sceIoSyncAsyncForDriver

Version NID
3.60 0x4F9EA8B0

Derived from _sceIoSyncAsync

sceIoSyncForDriver

Version NID
3.60 0xDDF78594

Derived from _sceIoSync

sceIoWriteAsyncForDriver

Version NID
3.60 0xA1BD13D0

Derived from sceIoWriteAsync

SceIofilemgr

_sceIoDcloseAsync

Version NID
1.69 0xB13031
3.60 different NID or not present

_sceIoOpenAsync

Version NID
1.69 0x9CD0FC8
3.60 0x9CD0FC8

sceIoGetProcessDefaultPriority

Version NID
1.69 0xDC4F1BB
3.60 0xDC4F1BB

_sceIoRmdirAsync

Version NID
1.69 0x13DC3244
3.60 0x13DC3244

sceIoSetPriority

Version NID
1.69 0x14B2D56C
3.60 0x14B2D56C

sceIoSyncByFd

Version NID
1.69 0x16512F59
3.60 0x16512F59

_sceIoIoctl

Version NID
1.69 0x1D2988F1
3.60 0x1D2988F1

_sceIoLseekAsync

Version NID
1.69 0x2300858E
3.60 0x2300858E

sceIoSetPriorityForSystem

Version NID
1.69 0x27373135
3.60 0x27373135

_sceIoComplete

Version NID
1.69 0x34E6A06E
3.60 different NID or not present

sceIoWrite

Version NID
1.69 0x34EFD876
3.60 0x34EFD876

_sceIoGetThreadDefaultPriorityForSystem

Version NID
1.69 0x36CAF911
3.60 different NID or not present

_sceIoSetThreadDefaultPriorityForSystem

Version NID
1.69 0x38FE853B
3.60

sceIoFlockForSystem

Version NID
1.69 0x3E98E422
3.60

_sceIoDevctlAsync

Version NID
1.69 0x3EE3F66E
3.60

sceIoDclose

Version NID
1.69 0x422A221A
3.60

_sceIoRename

Version NID
1.69 0x4912F748
3.60

sceIoLseek32

Version NID
1.69 0x49252B9B
3.60

sceIoSetThreadDefaultPriority

Version NID
1.69 0x49312108
3.60

_sceIoDevctl

Version NID
1.69 0x515AC017
3.60

sceIoGetstatByFdAsync

Version NID
1.69 0x5167AC1E
3.60

_sceIoPread

Version NID
1.69 0x539FD5C4
3.60

_sceIoGetstatByFdAsync

Version NID
1.69 0x554292F0
3.60

_sceIoChstatByFdAsync

Version NID
1.69 0x58010F40
3.60

_sceIoGetThreadDefaultPriority

Version NID
1.69 0x5DC29460
3.60

_sceIoSync

Version NID
1.69 0x5DD867F7
3.60

_sceIoRemoveAsync

Version NID
1.69 0x5FFA47E2
3.60

_sceIoDreadAsync

Version NID
1.69 0x64B233B8
3.60

_sceIoSetThreadDefaultPriority

Version NID
1.69 0x654E27B1
3.60

_sceIoSyncByFdAsync

Version NID
1.69 0x6F78FAFE
3.60

_sceIoGetPriorityForSystem

Version NID
1.69 0x70B7BB52
3.60

sceIoReadAsync

Version NID
1.69 0x773EBD45
3.60

_sceIoRemove

Version NID
1.69 0x78955C65
3.60

sceIoSyncByFdAsync

Version NID
1.69 0x7E1367CB
3.60

sceIoSetProcessDefaultPriority

Version NID
1.69 0x7F2ABBAF
3.60

_sceIoRenameAsync

Version NID
1.69 0x81794921
3.60

_sceIoSyncAsync

Version NID
1.69 0x86DB0C0E
3.60

_sceIoDread

Version NID
1.69 0x8713D662
3.60

_sceIoWrite

Version NID
1.69 0x8C319CF0
3.60

_sceIoGetstat

Version NID
1.69 0x8E7E11F2
3.60

sceIoCloseAsync

Version NID
1.69 0x8EA3616A
3.60

_sceIoMkdir

Version NID
1.69 0x8F1ACC32
3.60

_sceIoCompleteMultiple

Version NID
1.69 0x9111D004
3.60

_sceIoLseek32

Version NID
1.69 0x92BDA6DA
3.60

_sceIoPwrite

Version NID
1.69 0x9654094B
3.60

_sceIoGetPriority

Version NID
1.69 0x9E3F880D
3.60

sceIoGetThreadDefaultPriority

Version NID
1.69 0xA176CD03
3.60

_sceIoLseek

Version NID
1.69 0xA604764A
3.60

sceIoChstatByFdAsync

Version NID
1.69 0xA9F89275
3.60

_sceIoGetProcessDefaultPriority

Version NID
1.69 0xB0486482
3.60

_sceIoSetPriority

Version NID
1.69 0xB14192F0
3.60

_sceIoReadAsync

Version NID
1.69 0xB2B891E6
3.60

_sceIoPwriteAsync

Version NID
1.69 0xB2D0B2F4
3.60

_sceIoChstatAsync

Version NID
1.69 0xB4B021D9
3.60

sceIoSetThreadDefaultPriorityForSystem

Version NID
1.69 0xB9C9C9CF
3.60

_sceIoPreadAsync

Version NID
1.69 0xBCF5684D
3.60

sceIoDopenAsync

Version NID
1.69 0xC49C312F
3.60

sceIoClose

Version NID
1.69 0xC70B8886
3.60

_sceIoWriteAsync

Version NID
1.69 0xC92AF88F
3.60

_sceIoOpen

Version NID
1.69 0xCC67B6FD
3.60

sceIoCancel

Version NID
1.69 0xCEF48835
3.60

sceIoComplete

Version NID
1.69 0xD1C49D2F
3.60

_sceIoChstat

Version NID
1.69 0xD2EE455F
3.60

_sceIoSetProcessDefaultPriority

Version NID
1.69 0xD302DCB9
3.60

_sceIoGetstatAsync

Version NID
1.69 0xD414C89F
3.60

sceIoDcloseAsync

Version NID
1.69 0xDC2D7D38
3.60

_sceIoIoctlAsync

Version NID
1.69 0xE00DC256
3.60

_sceIoChstatByFd

Version NID
1.69 0xE0BE2A30
3.60

sceIoWriteAsync

Version NID
1.69 0xE0D63D2A
3.60

_sceIoGetstatByFd

Version NID
1.69 0xE6C53567
3.60

_sceIoSetPriorityForSystem

Version NID
1.69 0xE6C923B3
3.60

_sceIoDopen

Version NID
1.69 0xE6E614B5
3.60

sceIoGetPriorityForSystem

Version NID
1.69 0xEF5432ED
3.60

sceIoGetPriority

Version NID
1.69 0xF2A472A1
3.60

_sceIoRead

Version NID
1.69 0xF3C9E783
3.60

_sceIoSyncByFd

Version NID
1.69 0xF437545D
3.60

_sceIoCloseAsync

Version NID
1.69 0xF4E13260
3.60

_sceIoDopenAsync

Version NID
1.69 0xF58286C3
3.60

sceIoDreadAsync

Version NID
1.69 0xF59F37B0
3.60

_sceIoMkdirAsync

Version NID
1.69 0xF5C58B21
3.60

_sceIoCancel

Version NID
1.69 0xF5DEEA19
3.60

_sceIoClose

Version NID
1.69 0xF69FB394
3.60

_sceIoDclose

Version NID
1.69 0xFAFF0002
3.60

sceIoGetThreadDefaultPriorityForSystem

Version NID
1.69 0xFCBCEAED
3.60

sceIoRead

Version NID
1.69 0xFDB32293
3.60

_sceIoRmdir

Version NID
1.69 0xFFFB4D76
3.60

Device Drivers