[Kos-dev] Progression du WE

Thomas Petazzoni kos-dev@enix.org
Sun, 25 May 2003 21:14:22 +0200


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Bonjour,

Durant ce WE, David était avec moi à Montpellier, et nous avons pu
travailler sur KOS. Nous sommes parti d'un bug trouvé lors du re-codage
de tty, qui concernait une ASSERTion qui pétait à propos de l'état du
thread courant. Le bug s'est avéré être une race condition, et nous a
poussé à retravailler le scheduler, les primitives de synchro et la
façon de terminer un thread.

 * Une implémentation des wait queues est disponible dans le scheduler.
 * Tout thread du système est dans une waitqueue, sauf le thread en
cours d'éxécution sur le processeur : un thread prêt à être éxécuter
attend sur une waitqueue appelée cpu_waitqueue, et les threads bloqués
attendent sur les waitqueues des objets de synchro.
 * Recodage complet des primitives de synchro dans kitc : suppression
des waitqueues, utilisation des waitqueues de scheduler pour coder les
sémaphores et les mutexes. Utilisation des sémaphores pour coder les
messages queues.
 * Suppression du thread_end_handler et de sa pile pourrie dans "task" :
l'éxécution de tout thread commence et se termine dans la fonction
execute_thread de x86/task. Cette fonction appelle la fonction du
thread, puis si celle-ci se termine appelle la fonction
reschedule_after_termination() (du scheduler). A son tour, celle-ci va
appeler cpl0_switch_no_return, qui va marquer le thread comme étant à
supprimer, et attendre d'avoir switche sur un nouveau contexte (avec une
pile valide) pour supprimer le thread (cf mon prochain mail sur la
mailing list)

Pas d'avancées notables en terme de fonctionnalités, mais un recodage
propre qu'on devait faire depuis un certain temps. Il reste surement des
races conditions à certains endroits, j'ai déjà commencé la chasse.

La version CVS compile et tourne.

Thomas
- --
PETAZZONI Thomas - thomas.petazzoni@enix.org - UIN : 34937744
http://www.enix.org/~thomas/
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)
Comment: Using GnuPG with Debian - http://enigmail.mozdev.org

iD8DBQE+0RYN9lPLMJjT96cRAnsuAJ9YdBJuZzmDEWIZnf8LJ4oE93EQagCggiha
EEHwpluiulL6LwQcDWKOc1I=
=Wv+9
-----END PGP SIGNATURE-----