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