In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

/dev/fs: Difference between revisions

From WiiBrew
Jump to navigation Jump to search
ExtremsAlt (talk | contribs)
Undo revision 100489 by BrianJones (talk)
-103
 
(32 intermediate revisions by 5 users not shown)
Line 5: Line 5:
   
   
Files can be directly opened with IOS_Open("/tmp/data.bin",1);
Files can be directly opened with IOS_Open("/tmp/data.bin",1);


The root folder looks like that:
The [[:/|root folder]] contains these subfolders, some of which have their own pages:
 
[[:/tmp]]
 
[[:/meta]]


/tmp
[[:/import]]
/meta
   
   
/import
[[:/shared1]]
   
   
[[:/shared2]]
[[:/shared2]]
/shared1
   
   
[[:/title]]
[[:/title]]
   
   
/ticket
[[:/ticket]]
   
   
/sys
[[:/sys]]
 
[[:/wfs]] (4.3 only)


== Ioctl listing ==
== Ioctl listing ==
Line 39: Line 38:
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Format
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Format
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Don't try this!!!
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Can only be called by UID 0.
Deletes the entire FS, not like the [[System Menu]] button. Will probably brick the console. Do not use!
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetStats
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetStats
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0x1C bytes: 7 u32's: cluster size, free clusters, used clusters, bad clusters, reserved clusters, free inodes, used inodes.
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |  
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x3
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x3
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | CreateDir
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | CreateDir
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x4A bytes: 4 for owner ID, 2 for group ID, 0x40 filename, 1 for each owner/group/other permissions, 1 for attributes.
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ReadDir
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ReadDir
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" |  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | Directory name (0x40), Max file count (0x4)
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" |  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | File names (0x13*maxFileCount), File count (0x4)
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |


Line 64: Line 64:
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x5
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x5
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | SetAttr
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | SetAttr
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | See CreateDir input.
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
Line 71: Line 71:
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetAttr
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetAttr
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64 bytes for filename
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64 bytes for filename
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 78 bytes for file attributes
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | See CreateDir input.
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x7
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x7
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Delete
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Delete
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64 bytes for filename
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x8
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x8
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Rename
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Rename
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64 bytes for source, 64 bytes for destination
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x9
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0x9
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | CreateFile
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | CreateFile
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0x4C bytes: 4 for owner ID, 2 for group ID, 0x40 filename, 1 for each owner/group/other permissions, 1 for attributes, 2 unused (?)
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | See CreateDir input. Owner ID and group ID will not be used.
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xa
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | SetFileVerCtrl
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xb
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xb
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetFileStats
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetFileStats
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 8 bytes: 4 bytes for file size, 4 bytes for seek position
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xc <ioctlv>
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GetUsage
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 64 bytes for filename
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | 4 bytes for used clusters, 4 bytes for used inodes
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xd
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xd
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Shutdown
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Shutdown
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" |
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" |  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Disables the NAND and refuses any further IPC requests with error -119.
 
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0xe <ioctlv>
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?????
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | List of paths for the files to create. Last vector is an array of u32's with the file sizes.
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fe9;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Creates and allocates a list of files in one go.
Somehow not used by ES, despite probably being the one to benefit the most from such a function.
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
|}
|}
Line 116: Line 133:
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dcc;" | '''notes'''
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dcc;" | '''notes'''
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -101
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EACCES
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Permission denied
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -2
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EEXIST
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | File exists
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -4
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EINVAL
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EINVAL
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Invalid argument
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Invalid argument
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -6
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOENT
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | File not found
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -8
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EBUSY
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Resource busy
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -12
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | returned on ECC error
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -22
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOMEM
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Alloc failed during request
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -101
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EINVAL
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Invalid argument (again? Returned e.g. by /dev/fs IOCtls)
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -102
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -102
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EACCESS
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EACCES
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Permission denied
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Permission denied
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -103
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -103
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | returned for "corrupted" NAND
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Failed to write to any of the 16 superblocks
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -104
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Filesystem not found
ES will call Format if GetStats returns this error code.
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -105
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -105
Line 165: Line 159:
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -107
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -107
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENFILE
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOSPC
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Too many fds open
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Filesystem is full (no free inodes)
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -108
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -108
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOSPC
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Memory is full
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Filesystem is full (no free clusters)
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -109
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -109
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENFILE
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENFILE
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Too many fds open
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Too many fds open (16; includes /dev/fs)
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -110
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -110
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENAMETOOLONG
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENAMETOOLONG
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | pathname is too long
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Max directory depth exceeded (8)
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -111
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -111
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ETXTBSY
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Trying to delete a currently open file
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -112
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | This block is bad ([[:/dev/flash#Return_codes|-13]])
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -113
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | FD is already open
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | ECC error (corrected) ([[:/dev/flash#Return_codes|-11]])
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -114
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -114
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EIO
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | returned on ECC error
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | ECC error (uncorrectable) ([[:/dev/flash#Return_codes|-12]])
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -115
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -115
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOTEMPTY
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOTEMPTY *
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Directory not empty
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | File is not empty
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -116
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -116
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENAMETOOLONG?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | max directory depth exceeded
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Cluster verification failed
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -117
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | -
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | unknown error
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -118
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -118
Line 201: Line 207:
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -119
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -119
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ESHUTDOWN
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | fatal error
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | The filesystem has been shut down
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
|}
|}


[[Category:IOS API documentation]]
[[Category:IOS API documentation]]

Latest revision as of 20:18, 30 April 2025

The filesystem can be directly accessed through "/dev/fs".

There are several IOS functions for FS like Delete/Create/List/Rename/.. .

Files can be directly opened with IOS_Open("/tmp/data.bin",1);

The root folder contains these subfolders, some of which have their own pages:

/tmp

/meta

/import

/shared1

/shared2

/title

/ticket

/sys

/wfs (4.3 only)

Ioctl listing

Request number Name input output notes
0x1 Format - - Can only be called by UID 0.

Deletes the entire FS, not like the System Menu button. Will probably brick the console. Do not use!

0x2 GetStats - 0x1C bytes: 7 u32's: cluster size, free clusters, used clusters, bad clusters, reserved clusters, free inodes, used inodes.
0x3 CreateDir 0x4A bytes: 4 for owner ID, 2 for group ID, 0x40 filename, 1 for each owner/group/other permissions, 1 for attributes. 0
0x4 ReadDir Directory name (0x40), Max file count (0x4) File names (0x13*maxFileCount), File count (0x4)
0x5 SetAttr See CreateDir input. -
0x6 GetAttr 64 bytes for filename See CreateDir input.
0x7 Delete 64 bytes for filename -
0x8 Rename 64 bytes for source, 64 bytes for destination -
0x9 CreateFile See CreateDir input. Owner ID and group ID will not be used. 0
0xa SetFileVerCtrl ? ?
0xb GetFileStats - 8 bytes: 4 bytes for file size, 4 bytes for seek position
0xc <ioctlv> GetUsage 64 bytes for filename 4 bytes for used clusters, 4 bytes for used inodes
0xd Shutdown - - Disables the NAND and refuses any further IPC requests with error -119.
0xe <ioctlv> ????? List of paths for the files to create. Last vector is an array of u32's with the file sizes. - Creates and allocates a list of files in one go.

Somehow not used by ES, despite probably being the one to benefit the most from such a function.

/dev/fs error codes

Error code POSIX equivalent notes
-101 EINVAL Invalid argument
-102 EACCES Permission denied
-103 EIO Failed to write to any of the 16 superblocks
-104 ? Filesystem not found

ES will call Format if GetStats returns this error code.

-105 EEXIST File exists
-106 ENOENT File not found
-107 ENOSPC Filesystem is full (no free inodes)
-108 ENOSPC Filesystem is full (no free clusters)
-109 ENFILE Too many fds open (16; includes /dev/fs)
-110 ENAMETOOLONG Max directory depth exceeded (8)
-111 ETXTBSY Trying to delete a currently open file
-112 ? This block is bad (-13)
-113 ? ECC error (corrected) (-11)
-114 EIO ECC error (uncorrectable) (-12)
-115 ENOTEMPTY * File is not empty
-116 ? Cluster verification failed
-117 - unknown error
-118 EBUSY Resource busy
-119 ESHUTDOWN The filesystem has been shut down