[Kos-dev] Double fault, maj du handler

d2 kos-dev@enix.org
28 Jun 2001 11:58:45 +0200


Bonjour,

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@meridon.com> writes:
    Thomas> SI (adresse de la pile fautive < cpl0_stack_addr + MARGE -
    Thomas> PAGE_SIZE|| adresse de la pile fautive > cpl0_stack_addr +
    Thomas> STACK_SIZE) => ON ARRETE LE SYSTEME

Ca serait pas plutot :

    SI (adresse de la pile fautive < cpl0_stack_addr + PAGE_SIZE ||
        adresse de la pile fautive > cpl0_stack_addr +
        STACK_SIZE)
      => ON ARRETE LE SYSTEME

(ie pas de "+ MARGE") ???

Pour le reste, le C ca serait plus facile pour voir.
 
    Thomas> J'ai code (enfin je sais pas si c bien fait) le machin de
    Thomas> d2 pour faire la reentrance, mais pour qu'il ait
    Thomas> reentrance faut appeler 2 fois reschedule. Or dans mon
    Thomas> handler de double fault, je vois pas pourquoi dans le cas
    Thomas> precis qui chie j'irais appeler le reschedule. A quoi ca
    Thomas> me sert, je lui donne quoi en argument ? Je fais quoi du
    Thomas> resultat ?

Pour etre clair, rappelons ce qu'il faut faire :

  - Rendre reschedule reentrant (cf algo)
  - Dans #DF, ne pas appeler reschedule(), mais simplement positionner
    "dont_need_another_reschedule = 0"

En effet, le probleme de la reentrance du reschedule est un
sur-probleme a notre probleme. En le resolvant le pb de la reentrance,
non seulement on resoud notre probleme, mais en plus on prend un peu
d'avance sur les problemes a venir (... de /vraie/ reentrance du
reschedule).

Bonne journee,

-- 
d2