[Kos-dev] Version du noyau avec MMRM,IDE,FAT

Julien Munier kos-dev@enix.org
25 Jul 2003 19:14:46 +0200


Bonjour,

je voulais juste vous faire part de mes recents travaux sur le
noyau. J'avais discute avec thomas et david il y a quelques semaines
de mes intentions. J'ai finalement trouve le temps d'implementer la
version mmrm de babel que j'avais decrite a l'epoque suites aux
contraintes definis par thomas : principalement, la possibilite de
superposer des contextes pour creer des objets de `haut' niveaux.

je n'ai pas encore trouver le tps de documenter tout cela, le code que
vous trouverez [1] n'est la que pour servir de `proof of concept'. Il
y subsiste d'ailleurs de grosses lacunes a mon avis : en particulier
je ne suis pas encore satisfait du fonctionnement du devfs (d'ailleurs
thomas m'avait fait des reproches sur ce point et je compte y
reflechir). Il existe encore en terme de semantique plusieurs choses a
revoir : RD_t et SR_t c'est pas b˘ :-)

neanmoins cette version fonctionne. la version de babel nommee *mmrm*
permet de mounter un devfs, un fakefs, un disque hda0 (au prealable
correctement definit dans bochs) sur un repertoire /mnt du fakefs et
d'ouvrir un repertoire dev sur ce dique. Je n'ai pas implemente de
remount_root, paske ce n'est pas l'objet de mon travail jusque la. je
suis jusque la capable de fournir tout jusqu'a l'ouverture de ce
repertoire (ce qui implique aussi la lecture sur le disque,
l'implementation d'une fat).

une librairie libcachebf montre egalement l'implementation d'un cache
write-through (pour le moment le cache en lecture n'est pas ecrit, la
librairie fait actuellement du read through :-). elle permet de
transformer un RD_t avec une view BLOCK en un RD_t avec une view FILE.
c'est un exemple de ce que j'appelle un `library translator'.

il reste une grosse question que j'ai laissee en suspend : il s'agit
de la synchro. il existe une pseudo peripherique block dans le fichier
mmrm/dummy.c, vous pouvez activer le test pour voir comment cela
fonctionne. dans ce cas j'ai propose un methode de transmission d'un
semaphore qui doit etre utilisÚ pour la synchro. cette essai fait
suite a la demande de thomas de lui presenter une implementation avec
une synchro, neanmoins, je ne suis pas sur de sa pertinence.

d'autres problemes sont apparus comme les questions de mount/remount
et de mis a jour du nscache (en particulier lors d'un mount). Mais
tout ceci serait trop obscur a expliquer si vous n'avez rien vu du
code.

je maintiens que l'esthetique du code laisse vraiment a
desirer. L'implementation de IDE et FAT est directement extrait du
gros travail que thomas avait fait sur les versions precedentes de
babel, sans grande modification. je me suis permis par endroit de
clarifier certaines structures et bien sur d'en compliquer d'autres
pour la glue avec mmrm :-)

j'espere que l'un ou l'autre d'entre vous trouvera quelques minutes
pour eventuellement jeter un oeil et me donner quelques conseils.


Cordialement,

--
Julien


[1] http://www.humanoidz.org/~mejj/pub/kos-mmrm.tar.gz