Page principale   Modules   Liste des composants   Liste des fichiers   Composants   Déclarations  

thread.h

Aller à la documentation de ce fichier.
00001 
00004 #ifndef _THREAD_H
00005 #define _THREAD_H
00006 #include "contextswitch.h"
00007 #include "list.h"
00008 
00009 
00014 typedef void* (*FredRunnable)(void*);
00015 
00019 typedef struct FredThreadDesc* FredThread;
00020 
00030 typedef FredList FredQueue;
00031 
00041 #define FredTHREAD_NIL (FredThread)NIL
00042 
00043 
00057 #define FredQueueGetFirst(Q) (FredThread)FredListGetFirst((FredList*)Q)
00058 
00074 #define FredQueuePutLast(Q,th) FredListPutLast((FredList*)Q,(FredCell*)th)
00075 
00076 
00088 #define FredQueueEmpty(Q) FredListEmpty((FredList*)Q)
00089 
00090 
00103 #define FredQueueInit(Q) FredListInit((FredList*)Q);
00104 
00116 #define FredMutexOn() FredMaskOn()
00117 
00129 #define FredMutexOff() FredMaskOff()
00130 
00131 /*************************************************************************
00132 *  suspension du thread actif dans une file                     
00133 *     
00134 *  DOIT ETRE FAIT MASQUE
00135 **************************************************************************/
00136 extern void FredThreadSuspend( FredQueue* q);
00137 
00138 
00139 /*************************************************************************
00140 *  réveil du premier thread suspendu  dans une file                 
00141 *     On le met dans la file des prêts
00142 *  DOIT ETRE FAIT MASQUE
00143 **************************************************************************/
00144 extern void FredThreadWakeUp( FredQueue* q);
00145 
00146 
00147 /**************************************************************
00148 * création & initialisation & lancement d'un thread  
00149 **************************************************************/
00150 extern FredThread   FredThreadSpawn( 
00151                 int StackSize,
00152                 void * ( *function)(void*),
00153                 void *arg,
00154                 void ** resref);
00155 /**************************************************************
00156 * pour terminer le thread de facon forcee 
00157 *****************************************************************/ 
00158 extern void             FredThreadExit(void *);
00159 
00160 /*************************************************************************
00161 *  Le  thread actif passe la main à un thread prêt                 
00162 **************************************************************************/
00163 extern void FredThreadYield( );
00164 /**************************************************************
00165 * pour recuperer le numero du thread actif 
00166 ****************************************************************/  
00167 extern FredThread   FredThreadCurrent();
00168            
00169 
00170 /**************************************************************
00171 * Initialisation du noyau de gestion de Threads    
00172 **************************************************************/
00173 extern void FredInitialize();
00174 /**************************************************************
00175 * Terminaison du noyau de gestion de Threads    
00176 **************************************************************/
00177 extern void  FredWaitTerminate();
00178 /**************************************************************
00179 * Terminaison brutale du noyau de gestion de Threads    
00180 **************************************************************/
00181 extern void  FredAbort(char *);
00182 
00183 #endif

Généré le Mon Jan 5 16:22:06 2004 par doxygen1.2.17