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 }
|
1.2.17