[Kos-cvs] [kos] Modification CVS par thomas

KOS CVS Gestion CVS KOS <d2@kos.enix.org>
Wed, 13 Mar 2002 12:07:02 +0100 (CET)


Module :	kos
Modifié par :	thomas	13/03/02 12:07:01

Fichiers modifiés :
	.              : MkVars 
	modules/fat    : _fat.c 
	modules/ide    : _ide.c _ide.h _ide_babel.c ide.h 
	modules/kos    : Makefile _vr_test.c system.h wolfgang.c 
	modules/part   : _part.c _part.h part.h 

Détails :
File mapping en place. Dans wolfgang.c, on fait un open("/rep/test")
qui est un fichier ELF. Ensuite on ajoute une region, qui mappe cette
shadow resource. On ne mappe AUCUNE page pour le moment.

Puis on cree un thread_user qui utilise du code dans cette region. On
le lance. Ca genere un #PF (normal) => chargement du fichier en
memoire, puis relancement du code. Ca ca marche.

Maintenant 2 questions :
- les twiddles continuent de tourner pendant le chargement du fichier
(qui prend un peu de temps sur mon Bochs), alors qu'on est dans un
#PF... je trouve ca louche. Une idee ?
- j'arrive pas a voir comment je peux implementer l'histoire de
l'offset dans le read du fat. Evidemment si l'offset est multiple de
512 (taille des clusters) c'est facile, je zappe autant de secteurs
que besoin, mais si c'est un truc bizarre genre 173 ? Surtout que la
tel que c'est je passe par aucun buffer intermediaire ! Ca marche
parce qu'a chaque fois je charge des secteurs complets, si c'est pu le
cas => CACA.

Je propose : on suppose que le noyau n'a besoin que des lires des gros
blocs de donnees (en general des pages entieres), donc que la
granularite 512 octets suffit. Ensuite quand l'utilisateur utilisera
le noyau pour lire un fichier, bin la libc se demmerdera pour faire ce
qu'il faut. Qu'en pensez-vous ?

Thomas