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

Difference between revisions of "/dev/fs"

From WiiBrew
Jump to navigation Jump to search
(→‎Ioctl listing: directory name is 0x40 bytes, not 0x64 (ReadDir))
(→‎/dev/fs error codes: labeled IOS errors for clarification)
Line 117: Line 117:
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -1
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | -1
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EACCES
 
| 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 (IOS error)
 
|- style="background-color: #ddd;"
 
|- 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: #ded;" | -2
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EEXIST
 
| 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="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | File exists (IOS error)
 
|- style="background-color: #ddd;"
 
|- 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: #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 (IOS error)
 
|- style="background-color: #ddd;"
 
|- 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: #ded;" | -6
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOENT
 
| 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="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | File not found (IOS error)
 
|- style="background-color: #ddd;"
 
|- 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: #ded;" | -8
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EBUSY
 
| 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="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Resource busy (IOS error)
 
|- style="background-color: #ddd;"
 
|- 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: #ded;" | -12
 
| 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;" | returned on ECC error (IOS error)
 
|- style="background-color: #ddd;"
 
|- 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: #ded;" | -22
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ENOMEM
 
| 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="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Alloc failed during request (IOS error)
 
|- style="background-color: #ddd;"
 
|- 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: #ded;" | -101

Revision as of 04:45, 4 September 2022

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 0 0 Deletes the entire FS, not like the System Menu button. Will probably brick the console. Do not use!
0x2 GetStats ? ?
0x3 CreateDir 0x4C bytes: 4 for owner ID, 2 for group ID, 0x40 filename, 1 for each owner/group/other permissions, 1 for attributes, 2 unused (?) 0
0x4 ReadDir Directory name (0x40), Max file count (0x4) File names (0x13*maxFileCount), File count (0x4)
0x5 SetAttr ? ?
0x6 GetAttr 64 bytes for filename 78 bytes for file attributes
0x7 Delete 64 bytes for filename 0
0x8 Rename ? 0
0x9 CreateFile 0x4C bytes: 4 for owner ID, 2 for group ID, 0x40 filename, 1 for each owner/group/other permissions, 1 for attributes, 2 unused (?) 0
0xb GetFileStats ? ?
0xd Shutdown

/dev/fs error codes

Error code POSIX equivalent notes
-1 EACCES Permission denied (IOS error)
-2 EEXIST File exists (IOS error)
-4 EINVAL Invalid argument (IOS error)
-6 ENOENT File not found (IOS error)
-8 EBUSY Resource busy (IOS error)
-12 EIO ? returned on ECC error (IOS error)
-22 ENOMEM Alloc failed during request (IOS error)
-101 EINVAL Invalid argument (again? Returned e.g. by /dev/fs IOCtls)
-102 EACCESS Permission denied
-103 EIO? returned for "corrupted" NAND
-105 EEXIST File exists
-106 ENOENT File not found
-107 ENFILE Too many fds open
-108 ? Memory is full
-109 ENFILE Too many fds open
-110 ENAMETOOLONG pathname is too long
-111 ? FD is already open
-114 EIO? returned on ECC error
-115 ENOTEMPTY Directory not empty
-116 ENAMETOOLONG? max directory depth exceeded
-118 EBUSY Resource busy
-119 ? fatal error