[SOS] Demande info sur Wrapper Exception <Resolu>

romain romain at hexanium.com
Dim 31 Juil 01:54:35 CEST 2005


Salut,

Ca repond en effet a ma question, je n'avais pas vu l'argument "struct
sos_cpu_state *cpu_kstate" dans la masse de code en fait !
Pas évident à piger le "pont" des interruptions.
Question un peu bête désolé !
Merci d'avoir pris le temps de me repondre.

Bonne soirée à toi aussi.

A++

Romain

-----Message d'origine-----
De : sos-bounces at the-doors.enix.org
[mailto:sos-bounces at the-doors.enix.org] De la part de Thomas Petazzoni
Envoyé : samedi 30 juillet 2005 22:57
À : SOS mailing-list
Objet : Re: [SOS] Demande info sur Wrapper Exception


Salut,

romain a écrit :

> Déjà un grand merci pour toutes ces précisions.

Avec plaisir ! Personnellement, ça ne me dérange pas du tout de répondre
aux questions. D'ailleurs, si il y en a, ça veut dire que des personnes
lisent les articles et s'intéressent au code, c'est donc bon signe ! ;-)

> ; Apparament ici on passe 2 parametre a la fonction
> pushl %esp				; Esp ?
> pushl $\id				; le N° d'interruption
> apparament	

> Si mon raisonnement est juste, esp passé en parametre n'est pas 
> utilisé par la fonction de process de l'interruption.
> 
> Est-ce le cas ? Enfin je ne voit pas bien ce que vient faire ce push 
> esp ici ? Est il la au cas ou pour la fonction ? Ou doit on absolument

> le passer pour une oscure raison ?

La raison n'est pas si obscure que ça. Si tu regardes le fichier
hwcore/exception.h, tu vois:

typedef void (*sos_exception_handler_t)(int exception_number,
                           struct sos_cpu_state *cpu_kstate);

Ainsi, un gestionnaire d'exception prends deux paramètres : le numéro de
l'exception et un pointeur vers le contexte du thread (struct
sos_cpu_state*).

Le "pushl $\id" correspond au "exception_number", et le "pushl %esp"
correspond au "cpu_kstate". En effet, comme expliqué dans les articles,
la structure "sos_cpu_state" qui contient le contexte du thread
interrompu est stockée directement sur la pile.

Tu peux également remarquer que les arguments sont empilés dans l'ordre
inverse : on empile en premier le deuxième argument de la fonction, et
en second le premier argument de la fonction.

J'espère que ça répond à ta question. N'hésites pas à demander plus de
détails si nécessaire.

Bonne soirée,

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni at enix.org http://thomas.enix.org -
Jabber: thomas.petazzoni at jabber.dk
KOS: http://kos.enix.org/ - SOS: http://sos.enix.org Fingerprint : 0BE1
4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7







Plus d'informations sur la liste de diffusion Sos