[Kos-dev] Travaux de la semaine derniere

d2 kos-dev@enix.org
Thu Aug 28 21:01:23 CEST 2003


Bonjour,

Chose promise, chose due... Voici un resume des changements appoprtes
la semaine derniere, pendant notre reunion Thomas/d2.

 * Karm(Julien, faut que tu nous rappelles ce que ca veut dire), srructure :
   - revu API generale :
     Une kres n'est pas grand chose. Ca pointe vers une liste de
     "views", POINT. Une view est associee a 1 interface particuliere,
     et correspond a :
       - l'implantation de l'interface => ptr vers un tableau de
         methodes
       - la liste des ures de la kres ouvertes selon l'interface
     C'est la methode "lookup" de l'interface Directory qui cree les
     kres et les views associees. Ca ne peut se faire qu'a ce moment
     la. Le lookup selectionne les vues de la kres a creer en
     fonction du type de la kres (block, file, ...).
     C'est tres simple, et facile a utiliser et etendre.
   - les interfaces supportees sont declarees dans
     modules/karm/interface/ et interface.c s'occupe de les repertorier
     toutes. Pour l'instant, tout est defini en dur a la
     compil. Quelques verifs sont faites pour assurer un minimum de
     coherence entre ce qu'il y a dans interface/ et interface.h
   - libblockfile pour ajouter automatiquement la view file a 1 kres
     qui supporte la view block
   - libfilemap : rajoute un view mapping sur une kres qui dispose de
     la view file
   - nscache : prise en compte correcte des . et ..

 * Karm, interfaces, drivers, etc...
   - devfs : mise a jour nouvelle API. Aucune modif profonde
   - fakefs : idem + ajout de 1 repertoire "file", qui sert pour le
     moment uniquement a monter un disque.
   - driver IDE (detecte des CD sous bochs, bizarre) + integration
     dans karm => montage dans devfs (dev/disk) + export de
     l'interface Block + utilisation de libblockfile pour exporter une
     view File.
   - modules/part/ : lecture de la table des partoches PC + montage
     dans devfs (/dev/part). Supportent la view block et la view file
     grace a libblockfile (simplifie considerablement FAT).
   - FAT : support de FAT12/16/32, teste et approuve (noms courts
     uniquement). Suppose qu'on monte le FS sur une ures ouverte avec
     le view file. Montage sur un repertoire de fakefs, en
     l'occurence /file
   - kres devzero (cf modules/vmm) avec view mapping pour faire
     l'equivalent d'un map /dev/zero

 * VMM
   - mapping de kres qui ont une interface file avec
     libfilemap. demand paging Ok
   - revu architecture interne. Plus de notion d'access_range_t. Tout
     est simple region dans un espace d'adressage. Adoption de la
     philosophie "on fait le minimum, on ajoute en cours de route
     suivant le besoin" : toutes les structures reduites au minimum,
     API reduite au minimum, juste pour aller jusqu'a mapper devzero
     et des kres, et tester le plus vite possible. Pas de "cassage" de
     region pour l'instant (mprotect, mmap, ...).

 * src : reorganisation
   - repertoire lib/ avec 1 sous-rep par type de bibliotheque (std
     correspond a une mini libc)
   - team plus clean : plus de mm_context dans team, puisque ca
     concerne la memoire, c'est donc deplace dans address_space.
   - evite quelques typedef sur des struct, ca oblige a mettre struct
     explicitement, c'est plus clair.

 * misc
   - plus de fonction de chaines de caracteres dangereuses (strcpy,
     sprintf, ...). Tout se fait de facon controlee, avec ajout
     garanti du 0 terminal et respect des tailles de chaines =>
     strzcpy, snprintf, ...
   - debug : revu la config du debug ; separation nette 1/ detection
     des methodes supportees, 2/ methodes activees. Fonction dumpmem
     pratique (analogue hexdump).
   - types count_t, size_t, offset_t, large_size_t, large_offset_t
     pour eviter de tout faire avec size_t/offset_t. Seek utilise des
     large_offset (64bits, signe)
   - snprintf utilise un sprintf  a usage interne uniquement (static)
     pour certains types. Trouver un snprintf POTABLE (kvprintf de BSD ?)
   - tty : generation du .c de la kmap a partir d'un fichier .map
   - wolfgang : tout uniforme pour la gestion des commandes du shell
     basique (tableau utilise par commande help), passage d'argument(s),
     "script" sous la forme d'un tableau de chaines contenant les
     commandes a executer a l'init.
   - liblist : la visite est exhaustive, mais ne respecte pas l'ordre
     croissant/decroissant. Pour le moment, on a essaye de trouver une
     machine a ete pour eviter la recusrivite, mais ca marche
     peut-etre pas. A terme, on va utiliser un marquage.

Aucune synchro serieuse pour le moment.

Bonne soiree,

-- 
d2



More information about the Kos-dev mailing list