[Kos-dev] Des nouvelles...
PETAZZONI,THOMAS (Non-HP-Germany,ex1)
kos-dev@enix.org
Mon, 22 Jul 2002 13:01:42 +0200
Salut,
> - Pendant l'ISR n tu ne peut pas avoir d' ISR n (parce qu'en
> general il
> faut faire quelque chose a la source de l'ISR, un
> acknowledge) mais tu
> peux avoir les autre ISR.
Bin sur PC, quand une IRQ est levee tu peux pas en avoir une autre avant
d'avoir envoye EOI (soit au PIC Maitre seulement, soit au PIC Maitre et au
PIC Esclave en fonction de la provenance de l'IRQ). Etant donne que dans KOS
on execute le handler de l'IRQ avant d'envoyer EOI (End Of Interrupt), bin
il est pas possible d'avoir l'execution de ISR0 pendant l'execution de ISR1.
Enfin je crois.
Donc en fait si je resume :
- ISR : pas le droit de prendre des locks (code NON bloquant) et non
interruptible. (mais je veux voir ou est le cli() dans KOS)
- DSR : pas le droit de prendre des locks (code NON bloquant) mais
interruptible
- DST : code bloquant et interruptible.
Je crois que c'etait un truc comme ca qu'on avait dit au depart. Alors je
vais reverifier le coup de Interrupt Gate ou Trap Gate et reverifier si on
fait un cli() quelque part. A mon avis on desactive les interruptions, parce
que sinon notre histoire de hw_isr_nested_level serait source de mechantes
race conditions (on fait incl hw_isr_nested_level au debut des handlers
d'IRQ... mais si on est interrompu avant ?) -> ca doit etre ca pas
d'interruptions pendant les IRQ.
Mais alors dans le schema que tu m'avais envoye d2, pourquoi ISR0 au milieu
de ISR1 ? (desole Fabrice j'ai pas le schema sous la main. peut etre d2 tu
peux l'envoyer ?).
Thomas