/dev/fs: Difference between revisions

From WiiBrew
Jump to navigation Jump to search
Crediar (talk | contribs)
m added some information about the input of 'CreateFile'
added error codes
Line 29: Line 29:




Ioctls:
== Ioctl listing ==
 
 
 


{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
Line 47: Line 44:
| 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="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" |
|- style="background-color: #ddd;"
|}
== /dev/fs error codes ==
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
|- style="background-color: #ddd;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #cdc;" | '''Error code'''
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ccd;" | '''POSIX equivalent'''
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dcc;" | '''notes'''
|- 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: #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: #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;" | -102
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | EACCESS
| 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;" | -103
| 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="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: #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;" | -106
| 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;" | -107
| 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="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: #dde;" | EFBIG?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | max block count reached?
|- 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: #dde;" | ENFILE
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | Too many fds open
|- 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: #dde;" | ENAMETOOLONG
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | pathname is too long
|- 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: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | FD is already open
|- 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: #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;" | -115
| 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="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: #dde;" | ENAMETOOLONG?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | max directory depth exceeded
|- 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: #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;" | -119
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | ?
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | fatal error
|- style="background-color: #ddd;"
|- style="background-color: #ddd;"
|}
|}

Revision as of 14:24, 5 March 2008

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 looks like that:

/tmp

/meta

/import

/shared2

/shared1

/title

/ticket

/sys

For a more detailed example of how the file system structure can look, see http://www.openwii.org/forums/viewtopic.php?p=1241#1241.


Ioctl listing

Request number Name input output notes
0x9 CreateFile 0x4C bytes. First 0x40 are used for the filename, 0x40-0x45 are unused,0x46-0x48 unknown but used, 0x49 is used for the attribute, 0x4A-0x4C unused. 0

/dev/fs error codes

Error code POSIX equivalent notes
-1 EACCES Permission denied
-2 EEXIST File exists
-4 EINVAL Invalid argument
-6 ENOENT File not found
-8 EBUSY Resource busy
-12 EIO ? returned on ECC error
-22 ENOMEM Alloc failed during request
-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 EFBIG? max block count reached?
-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