Définitions des types | |
typedef jmp_buf | LinuxIA32FredContext |
Contexte de sauvegarde : un jmp_buf de linux. | |
Fonctions | |
void | LinuxIA32FredContextRestore (LinuxIA32FredContext ctx) |
Restaurer un contexte processeur. Le contexte courant est perdu. | |
void | LinuxIA32FredContextSwitch (LinuxIA32FredContext old, LinuxIA32FredContext ctx) |
Restaurer un contexte processeur. Le contexte courant est sauvé. | |
void | LinuxIA32FredContextInit (LinuxIA32FredContext 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.
00063 { 00064 ctx->__jmpbuf[JB_SP] = (int)sp; 00065 ctx->__jmpbuf[JB_PC] = (int)entry; 00066 }; |
|
Implantation
C'est exactement un
00019 { 00020 longjmp(ctx,1); 00021 /* Il n'y a pas de retour possible en séquence d'un tel appel */ 00022 KernelAbort(" FredContext Restore : erreur fatale..... "); 00023 } |
|
Implantation
C'est exactement une combinaison de
00038 { 00039 if(setjmp(old))return; /* cas de reprise du contexte*/ 00040 /* contexte courant sauvegardé : on restaure un autre contexte*/ 00041 longjmp(ctx,1); 00042 /* on ne revient jamais ici */ 00043 KernelError(" FredContext switch : erreur ????...???... "); 00044 } |