IOS/fr
This is an old revision of this page, as edited by Cortes48 (talk | contribs) at 19:46, 7 July 2008. It may differ significantly from the current revision. |
This article is in the process of translating from English to French.
Please help translate this article if you can. |
IOS est le systeme d' exploitation qui tourne sur le coprossesseur Starlet àl' interieur du processeur principale Hollywood. Il fournit les services qui sont employé par le systeme de la wii pour accéder à la plupart des dispositifs du systeme.
See also: IOS/QA
IPC
La communication avec l' IOS depuis du code PPC est possible avec un mecanisme IPC. Il existe 7 actions :
- open
- close
- read
- write
- seek
- ioctl
- ioctlv
Here is a sample implementation, not guaranteed to work: ipc.c
ipc struct size = 40, aligned to 20 00: cmd // 1=open 2=close 3=read 4=write 5=seek 6=ioctl 7=ioctlv 04: ret 08: fd 0c: arg[5] 20: async1 24: async2 28: 0 40: relaunch, used for ioctlvreboot open: fd = 0 arg0, arg1: name, mode (1=read 2=write) close: fd read: fd arg0, arg1: addr, len write: fd arg0, arg1: addr, len seek: fd arg0, arg1: where, whence ioctl: fd arg0: ioctl # arg1, arg2: addr, len arg3, arg4: addr, len ioctlv: fd arg0: ioctl # arg1: # in arg2: # out (or in-out) arg3: pointer to # in plus # out pairs of (addr, len)
fd is a handle you get back from ios on "open", and that you should pass back to all other calls --segher
Most non-trivial operations are performed by opening one of the below resources, then calling ioctl or ioctlv on it.
The Starlet kernel hands these calls over to the individual drivers / processes within the Starlet. The processes register themselves to handle requests by creating one or more queues and assigning them to handle requests from a particular /dev device.
For testing out IOS devices, you can use the EasyIOS application for the wii.
/dev tree
Known resources in the /dev tree:
- /dev/aes
- /dev/boot2
- /dev/di
- /dev/es
- /dev/hmac
- /dev/flash
- /dev/fs
- /dev/listen
- /dev/net/ip/bottom
- /dev/net/ip/top - TCP/IP Socket operations
- /dev/net/kd/request
- /dev/net/kd/time
- /dev/net/ncd/manage
- /dev/net/ssl
- /dev/net/usbeth/top
- /dev/net/wd/command
- /dev/net/wd/top
- /dev/printserver
- /dev/sdio
- /dev/sdio/slot0
- /dev/sdio/slot1
- /dev/sdio/slotw
- /dev/sha
- /dev/stm/eventhook
- /dev/stm/immediate
- /dev/usb
- /dev/usb/ehc
- /dev/usb/kbd
- /dev/usb/oh0
- /dev/usb/oh1
- /dev/wl0