/dev/fs: Difference between revisions
< /dev
m added some information about the input of 'CreateFile' |
added error codes |
||
| Line 29: | Line 29: | ||
== 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
/shared1
/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 |