[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