[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