IOS/fr

< IOS

IOS est le systÚme d'exploitation qui tourne sur le coprocesseur Starlet à l'intérieur du processeur principal Hollywood. Il fournit les services employés par le systÚme de la Wii pour accéder à la plupart des dispositifs du systÚme.

Voir Ă©galement : IOS/QA (en anglais).

IPC

La communication avec l'IOS depuis du code PPC est possible avec un mĂ©canisme IPC (Instruction Per Cycle) qui est la frĂ©quence des actions exĂ©cutĂ©es 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

Ressources connues de l'arborescence /dev :