Définitions des types | |
typedef jmp_buf | SolarisSparc32FredContext |
Contexte de sauvegarde : un jmp_buf de solaris. | |
Fonctions | |
void | SolarisSparc32FredContextRestore (SolarisSparc32FredContext ctx) |
Restaurer un contexte processeur. Le contexte courant est perdu. | |
void | SolarisSparc32FredContextSwitch (SolarisSparc32FredContext old, SolarisSparc32FredContext ctx) |
Restaurer un contexte processeur. Le contexte courant est sauvé. | |
void | SolarisSparc32FredContextInit (FredContext ctx, char *sp, void(*entry)()) |
Initialiser un contexte processeur. |
|
Implantation C'est totalement dépendant du type de processeur et de l'implantation des fonction setjmp() et longjmp() car on doit connaitre les registres à modifier et leurs emplacements dans le jmp_buf.
00126 { 00127 ctx[ 1 ]= (long)sp; 00128 ctx[ 2 ]= (long)entry; 00129 }; |
|
Implantation
C'est exactement un
00084 { 00085 longjmp(ctx,1); 00086 /* Il n'y a pas de retour possible en séquence d'un tel appel */ 00087 KernelAbort(" FredContext Restore : erreur fatale..... "); 00088 } |
|
Implantation
C'est exactement une combinaison de
00102 { 00103 if(setjmp(old))return; /* cas de reprise du contexte*/ 00104 /* contexte courant sauvegardé : on restaure un autre contexte*/ 00105 longjmp(ctx,1); 00106 /* on ne revient jamais ici */ 00107 KernelError(" FredContext switch : erreur ????...???... "); 00108 } |