[Kos-cvs] [kos] Modification CVS par thomas
KOS CVS
Gestion CVS KOS <d2@kos.enix.org>
Tue, 10 Jul 2001 21:32:51 +0200 (CEST)
Module : kos
Modifié par : thomas 10/07/01 21:32:51
Fichiers modifiés :
modules : system.h
modules/debug : bochs.c debug.c debug.h
modules/idt : idt.c idtasm.S
modules/kgc : kgc.c
modules/mm : kmem.h kvalloc.c kvfree.c pmm.h
modules/mm-x86 : dbflt.c mm-x86.h
modules/scheduler: sched.c
modules/task : _task.h _task_init.c _task_kstack.c
_task_kthread.c _task_uthread.c
modules/wolfgang: main.c
Détails :
Passage en pile statique. On definit deux constantes dans
system.h. Une donne la taille PHYSIQUE de la pile (nombre de page
mappes) et l'autre donne la taille VIRTUELLE. En general
VIRTUELLE=PHYSIQUE+1. Comme ca on a une page de garde juste en dessous
de la pile.
Pour l'instant ca marche pas trop mal, mais y'en quand meme des cas on
ca foire. Impossible de le faire foirer avec Bochs, mais sur machine
reelle on obtient soit un #PF sur l'adresse 0, soit un #DF pendant un
General Protection Fault (quand il a lieu c'est parce qu'on charge gs
avec un mauvais segment, lors du pushw %gs d'un prehandler d'IRQ).
A priori l'explication est que les piles s'overwrite. Pas encore
reussi a determine pourquoi, mais ca va venir.
Les bugs sont reproductibles avec le meme nombre de thread. Par contre
des qu'on change le nombre de thread, on a pu la meme chose.