[project @ 2005-10-21 14:02:17 by simonmar]
[ghc-hetmet.git] / ghc / rts / Sparks.h
1 /* -----------------------------------------------------------------------------
2  *
3  * (c) The GHC Team, 2000
4  *
5  * Sparking support for GRAN, PAR and SMP versions of the RTS.
6  * 
7  * ---------------------------------------------------------------------------*/
8
9 #ifndef SPARKS_H
10 #define SPARKS_H
11
12 #if defined(GRAN)
13
14 void      findLocalSpark (rtsEvent *event, rtsBool *found_res, rtsSparkQ *spark_res);
15 rtsBool   activateSpark (rtsEvent *event, rtsSparkQ spark);
16 rtsSpark *newSpark(StgClosure *node, nat name, nat gran_info, 
17                    nat size_info, nat par_info, nat local);
18 void      add_to_spark_queue(rtsSpark *spark);
19 rtsSpark *delete_from_sparkq (rtsSpark *spark, PEs p, rtsBool dispose_too);
20 void      disposeSpark(rtsSpark *spark);
21 void      disposeSparkQ(rtsSparkQ spark);
22 void      print_spark(rtsSpark *spark);
23 void      print_sparkq(PEs proc);
24 void      print_sparkq_stats(void);
25 nat       spark_queue_len(PEs proc);
26 void      markSparkQueue(void);
27
28 #elif defined(PAR) || defined(SMP)
29
30 StgClosure  *findSpark( rtsBool );
31 void         initSparkPools( void );
32 void         markSparkQueue( void );
33 #if defined(PAR)
34 StgTSO      *activateSpark (rtsSpark spark) ;
35 rtsBool      add_to_spark_queue( StgClosure *closure, StgSparkPool *pool );
36 void         markSparkQueue( void );
37 nat          spark_queue_len( StgSparkPool *pool );
38 void         disposeSpark( StgClosure *spark );
39 #endif
40
41 #endif
42
43 #endif /* SPARKS_H */