[SOS] Demande info sur Wrapper Exception

Thomas Petazzoni thomas.petazzoni at enix.org
Sam 30 Juil 22:57:10 CEST 2005


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 256 bytes
Desc: OpenPGP digital signature
Url : http://the-doors.enix.org/pipermail/sos/attachments/20050730/c4eca395/signature.pgp


Plus d'informations sur la liste de diffusion Sos