00001
00002
00012 #ifndef CONTEXTSWITCH_H
00013 #define CONTEXTSWITCH_H
00014
00015 #if defined(_SETJMP_LINUX_IA32_)
00016 #define _USE_SETJMP_LINUX_IA32_
00017 #elif defined(_SETJMP_SOLARIS_SPARC32_)
00018 #define _USE_SETJMP_SOLARIS_SPARC32_
00019 #elif defined( _ARCH_IA32_)
00020 #define _USE_ARCH_IA32_
00021 #else
00022 #error " PAS DE GESTION DE FredContexte"
00023 #endif
00024
00025 #if defined(_USE_SETJMP_LINUX_IA32_)
00026 #include<setjmp.h>
00027 #define FredContext LinuxIA32FredContext
00028 #define FredContextRestore(R) LinuxIA32FredContextRestore(R)
00029 #define FredContextSwitch(O,N) LinuxIA32FredContextSwitch(O,N)
00030 #define FredContextInit(CTX,STK,ENTRY) LinuxIA32FredContextInit(CTX,STK,ENTRY)
00031
00034 typedef jmp_buf LinuxIA32FredContext;
00035
00036 extern void LinuxIA32FredContextRestore(LinuxIA32FredContext restore);
00037 extern void LinuxIA32FredContextSwitch( LinuxIA32FredContext old, FredContext nw);
00038 extern void LinuxIA32FredContextInit(LinuxIA32FredContext ctx ,
00039 char * SP ,
00040 void (*entry)()
00041 );
00042 #endif
00043
00044 #if defined(_USE_SETJMP_SOLARIS_SPARC32_)
00045 #include<setjmp.h>
00046 #define FredContext SolarisSparc32FredContext
00047 #define FredContextRestore(R) SolarisSparc32FredContextRestore(R)
00048 #define FredContextSwitch(O,N) SolarisSparc32FredContextSwitch(O,N)
00049 #define FredContextInit(CTX,STK,ENTRY) SolarisSparc32FredContextInit(CTX,STK,ENTRY)
00050
00053 typedef jmp_buf SolarisSparc32FredContext;
00054
00055 extern void SolarisSparc32FredContextRestore(SolarisSparc32FredContext restore);
00056 extern void SolarisSparc32FredContextSwitch( SolarisSparc32FredContext old, FredContext nw);
00057 extern void SolarisSparc32FredContextInit(SolarisSparc32FredContext ctx ,
00058 char * SP ,
00059 void (*entry)()
00060 );
00061 #endif
00062
00063 #if defined( _USE_ARCH_IA32_)
00064 #define FredContext IA32FredContext
00065 #define FredContextRestore(R) IA32FredContextRestore(R)
00066 #define FredContextSwitch(O,N) IA32FredContextSwitch(O,N)
00067 #define FredContextInit(CTX,STK,ENTRY) IA32FredContextInit(CTX,STK,ENTRY)
00068 #define FredContext IA32FredContext
00069
00072 typedef int IA32FredContext[1];
00073
00074 extern void IA32FredContextRestore(IA32FredContext restore);
00075 extern void IA32FredContextSwitch( IA32FredContext old, FredContext nw);
00076 extern void IA32FredContextInit(IA32FredContext ctx ,
00077 char * SP ,
00078 void (*entry)()
00079 );
00080 #endif
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 #endif
00092