00001 00002 00003 #ifndef _CONC_COMPL_H_ 00004 00005 #define _CONC_COMPL_H_ 00006 00007 #ifdef CONC_COMPL 00008 #define MAX_TDEP_LIST 100 00009 00010 struct subgoal_frame ; 00011 00012 typedef struct thread_dep 00013 { 00014 struct subgoal_frame *Subgoal; 00015 int last ; 00016 } 00017 ThreadDep ; 00018 00019 typedef 00020 struct { 00021 int NumDeps ; 00022 ThreadDep Deps[MAX_TDEP_LIST]; 00023 } ThreadDepList ; 00024 00025 int EmptyThreadDepList( ThreadDepList *TDL ) ; 00026 00027 void InitThreadDepList( ThreadDepList *TDL ) ; 00028 00029 struct th_context ; 00030 00031 void UpdateDeps(struct th_context *th, int *busy, CPtr *leader) ; 00032 int CheckForSCC( struct th_context * th ) ; 00033 int MayHaveAnswers( struct th_context * th ) ; 00034 void CompleteOtherThreads( struct th_context * th ) ; 00035 void WakeOtherThreads( struct th_context * th ) ; 00036 void WakeDependentThreads( struct th_context * th, struct subgoal_frame * subg ) ; 00037 void CompleteTop( struct th_context * th, CPtr leader ) ; 00038 CPtr sched_external( struct th_context *th, CPtr ExtCons ) ; 00039 #endif 00040 00041 #endif