/dev/fs: Difference between revisions
< /dev
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 | The [[:/|root folder]] contains these subfolders, some of which have their own pages: | ||
[[:/tmp]] | |||
[[:/meta]] | |||
/ | [[:/import]] | ||
/ | [[:/shared1]] | ||
[[:/shared2]] | [[:/shared2]] | ||
[[:/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;" | | | 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;" | 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;" | | | 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;" | | | 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;" | | | 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;" | - | | 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: #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="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;" | | | 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;" | | | 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;" | | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOSPC | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | | | 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;" | | | 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;" | | | 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;" | | | 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;" | | | 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;" | | | 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;" | | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ? | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | | | 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;" | | | 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
This article is a stub. You can help WiiBrew by expanding it. |
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:
/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 |