IOS/fr

From WiiBrew
< IOS
Jump to navigation Jump to search

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 (Instruction Per Cycle) qui est la fréquence des actions exécuter par cycle . Il existe 7 actions :

  1. open
  2. close
  3. read
  4. write
  5. seek
  6. ioctl
  7. ioctlv

Voici un exemple d'implémentation, sans garantie de fonctionnement : 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 est un handle que vous récupérez d'ios avec "open" et que vous devriez passer en retour à tous les autres appels --segher

La plupart des opérations non triviales sont effectuées par l'ouverture d'une des ressources ci-dessous, puis par un appel à ioctl ou ioctlv sur celles-ci.

Le noyau du Starlet distribue ces appels aux drivers et processus individuels au sein du Starlet. Les processus s'enregistrent eux-même pour prendre en compte des requêtes en créant une ou plusieurs files et en leur assignant la prise en compte de requêtes provenant d'un périphérique /dev particulier.

Pour tester ces périphériques IOS, vous pouvez utiliser l'application EasyIOS pour Wii.

/dev tree

Known resources in the /dev tree: