RTS tidyup sweep, first phase
[ghc-hetmet.git] / includes / Parallel.h
diff --git a/includes/Parallel.h b/includes/Parallel.h
deleted file mode 100644 (file)
index e18fbe9..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
-  Definitions for GUM i.e. running on a parallel machine.
-
-  This section contains definitions applicable only to programs compiled
-  to run on a parallel machine, i.e. on GUM. Some of these definitions
-  are also used when simulating parallel execution, i.e. on GranSim.
-*/
-
-#ifndef PARALLEL_H
-#define PARALLEL_H
-
-#if defined(PAR) || defined(GRAN)        /* whole file */
-
-/*
- * @node Parallel definitions, End of File
- * @section Parallel definitions
- *
- * @menu
- * * Basic definitions::               
- * * GUM::                     
- * * GranSim::                 
- * @end menu
- *
- * @node Basic definitions, GUM, Parallel definitions, Parallel definitions
- * @subsection Basic definitions
- */
-
-/* This clashes with TICKY, but currently TICKY and PAR hate each other anyway */
-#define _HS  sizeofW(StgHeader)
-
-/* SET_PAR_HDR and SET_STATIC_PAR_HDR now live in ClosureMacros.h */
-
-/* Needed for dumping routines */
-#if defined(PAR)
-# define NODE_STR_LEN              20
-# define TIME_STR_LEN              120
-# define TIME                      rtsTime
-# define CURRENT_TIME              (msTime() - startTime)
-# define TIME_ON_PROC(p)           (msTime() - startTime)
-# define CURRENT_PROC              thisPE
-# define BINARY_STATS              RtsFlags.ParFlags.ParStats.Binary
-#elif defined(GRAN)
-# define NODE_STR_LEN              20
-# define TIME_STR_LEN              120
-# define TIME                      rtsTime
-# define CURRENT_TIME              CurrentTime[CurrentProc]
-# define TIME_ON_PROC(p)           CurrentTime[p]
-# define CURRENT_PROC              CurrentProc
-# define BINARY_STATS              RtsFlags.GranFlags.GranSimStats.Binary
-#endif
-
-#if defined(PAR)
-#  define MAX_PES      256             /* Maximum number of processors */
-       /* MAX_PES is enforced by SysMan, which does not
-          allow more than this many "processors".
-          This is important because PackGA [GlobAddr.lc]
-          **assumes** that a PE# can fit in 8+ bits.
-       */
-
-# define SPARK_POOLS   2   /* no. of spark pools */
-# define REQUIRED_POOL         0   /* idx of pool of mandatory sparks (concurrency) */
-# define ADVISORY_POOL         1   /* idx of pool of advisory sparks (parallelism) */
-#endif
-
-/*
- * @menu
- * * GUM::                     
- * * GranSim::                 
- * @end menu
- *
- * @node GUM, GranSim, Basic definitions, Parallel definitions
- * @subsection GUM
- */
-
-#if defined(PAR) 
-/*
-  Symbolic constants for the packing code.
-  
-  This constant defines how many words of data we can pack into a single
-  packet in the parallel (GUM) system.
-*/
-
-/*
- * @menu
- * * Types::                   
- * * Externs::                 
- * * Prototypes::              
- * * Macros::                  
- * @end menu
- *
- * @node Types, Externs, GUM, GUM
- * @subsubsection Types
- */
-
-/* Sparks and spark queues */
-typedef StgClosure  *rtsSpark;
-typedef rtsSpark    *rtsSparkQ;
-
-typedef struct rtsPackBuffer_ {
-  StgInt /* nat */           id; 
-  StgInt /* nat */           size;
-  StgInt /* nat */           unpacked_size;
-  StgTSO       *tso;
-  StgWord     *buffer[0];  
-} rtsPackBuffer;
-
-#define PACK_BUFFER_HDR_SIZE 4
-
-/*
- * @node Externs, Prototypes, Types, GUM
- * @subsubsection Externs
- */
-
-/* extern rtsBool do_sp_profile; */
-
-extern globalAddr theGlobalFromGA, theGlobalToGA;
-extern StgBlockedFetch *PendingFetches;
-extern GlobalTaskId    *allPEs;
-
-extern rtsBool      IAmMainThread, GlobalStopPending;
-/*extern rtsBool      fishing; */
-extern rtsTime      last_fish_arrived_at;
-extern nat          outstandingFishes;
-extern GlobalTaskId SysManTask;
-extern int          seed;     /* pseudo-random-number generator seed: */
-                              /* Initialised in ParInit */
-extern StgInt       threadId; /* Number of Threads that have existed on a PE */
-extern GlobalTaskId mytid;
-
-extern GlobalTaskId *allPEs;
-extern nat nPEs;
-extern nat sparksIgnored, sparksCreated, threadsIgnored, threadsCreated;
-extern nat advisory_thread_count;
-
-extern rtsBool InGlobalGC;  /* Are we in the midst of performing global GC */
-
-extern ullong startTime;    /* start of comp; in RtsStartup.c */
-
-/* the spark pools proper */
-extern rtsSpark *pending_sparks_hd[];  /* ptr to start of a spark pool */ 
-extern rtsSpark *pending_sparks_tl[];  /* ptr to end of a spark pool */ 
-extern rtsSpark *pending_sparks_lim[]; 
-extern rtsSpark *pending_sparks_base[]; 
-extern nat spark_limit[];
-
-extern rtsPackBuffer *PackBuffer;      /* size: can be set via option */
-extern rtsPackBuffer *buffer;
-extern rtsPackBuffer *freeBuffer;
-extern rtsPackBuffer *packBuffer;
-extern rtsPackBuffer *gumPackBuffer;
-
-extern nat thisPE;
-
-/* From Global.c 
-extern GALA *freeGALAList;
-extern GALA *freeIndirections;
-extern GALA *liveIndirections;
-extern GALA *liveRemoteGAs;
-*/
-
-/*
- * @node Prototypes, Macros, Externs, GUM
- * @subsubsection Prototypes
- */
-
-/* From ParInit.c */
-void          initParallelSystem(void);
-void          SynchroniseSystem(void);
-void          par_exit(StgInt n);
-
-PEs           taskIDtoPE (GlobalTaskId gtid);
-void          registerTask (GlobalTaskId gtid);
-globalAddr   *LAGAlookup (StgClosure *addr);
-StgClosure   *GALAlookup (globalAddr *ga);
-/*static GALA  *allocIndirection (StgPtr addr); */
-globalAddr   *makeGlobal (StgClosure *addr, rtsBool preferred);
-globalAddr   *setRemoteGA (StgClosure *addr, globalAddr *ga, rtsBool preferred);
-void          splitWeight (globalAddr *to, globalAddr *from);
-globalAddr   *addWeight (globalAddr *ga);
-void          initGAtables (void);
-void          RebuildLAGAtable (void);
-StgWord       PackGA (StgWord pe, int slot);
-
-# if defined(DEBUG)
-/* from Global.c */
-/* highest_slot breaks the abstraction of the slot counter for GAs; it is
-   only used for sanity checking and should used nowhere else */
-StgInt highest_slot (void); 
-# endif
-
-/*
- * @node Macros,  , Prototypes, GUM
- * @subsubsection Macros
- */
-
-/* delay (in us) between dying fish returning and sending out a new fish */
-#define FISH_DELAY                   1000
-/* max no. of outstanding spark steals */
-#define MAX_FISHES                   1  
-
-/* ToDo: check which of these is actually needed! */
-
-#    define PACK_HEAP_REQUIRED  ((RtsFlags.ParFlags.packBufferSize - PACK_HDR_SIZE) / (PACK_GA_SIZE + _HS) * (MIN_UPD_SIZE + 2))
-
-#  define MAX_GAS      (RtsFlags.ParFlags.packBufferSize / PACK_GA_SIZE)
-
-
-#  define PACK_GA_SIZE 3       /* Size of a packed GA in words */
-                               /* Size of a packed fetch-me in words */
-#  define PACK_FETCHME_SIZE (PACK_GA_SIZE + _HS)
-
-#  define PACK_HDR_SIZE        1       /* Words of header in a packet */
-
-#  define PACK_PLC_SIZE        2       /* Size of a packed PLC in words */
-
-/*
-  Definitions relating to the entire parallel-only fixed-header field.
-
-  On GUM, the global addresses for each local closure are stored in a
-  separate hash table, rather then with the closure in the heap.  We call
-  @getGA@ to look up the global address associated with a local closure (0
-  is returned for local closures that have no global address), and @setGA@
-  to store a new global address for a local closure which did not
-  previously have one.  */
-
-#  define GA_HDR_SIZE                  0
-  
-#  define GA(closure)                  getGA(closure)
-  
-#  define SET_GA(closure, ga)             setGA(closure,ga)
-#  define SET_STATIC_GA(closure)
-#  define SET_GRAN_HDR(closure,pe)
-#  define SET_STATIC_PROCS(closure)
-  
-#  define MAX_GA_WEIGHT                        0       /* Treat as 2^n */
-  
-/* At the moment, there is no activity profiling for GUM.  This may change. */
-#  define SET_TASK_ACTIVITY(act)        /* nothing */
-
-/* 
-   The following macros are only needed for sanity checking (see Sanity.c).
-*/
-
-/* NB: this is PVM specific and should be updated for MPI etc
-       in PVM a task id (tid) is split into 2 parts: the id for the 
-       physical processor it is running on and an index of tasks running
-       on a processor; PVM_PE_MASK indicates which part of a tid holds the 
-       id of the physical processor (the other part of the word holds the 
-       index on that processor)
-       MAX_PVM_PES and MAX_PVM_TIDS are maximal values for these 2 components
-       in GUM we have an upper bound for the total number of PVM PEs allowed:
-       it's MAX_PE defined in Parallel.h
-       to check the slot field of a GA we call a fct highest_slot which just
-       returns the internal counter 
-*/
-#define PVM_PE_MASK    0xfffc0000
-#define MAX_PVM_PES    MAX_PES
-#define MAX_PVM_TIDS   MAX_PES
-
-#if 0
-#define LOOKS_LIKE_TID(tid)  (((tid & PVM_PE_MASK) != 0) && \
-                              (((tid & PVM_PE_MASK) + (tid & ~PVM_PE_MASK)) < MAX_PVM_TIDS))
-#define LOOKS_LIKE_SLOT(slot) (slot<=highest_slot())
-
-#define LOOKS_LIKE_GA(ga)    (LOOKS_LIKE_TID((ga)->payload.gc.gtid) && \
-                             LOOKS_LIKE_SLOT((ga)->payload.gc.slot))
-#else
-rtsBool looks_like_tid(StgInt tid);
-rtsBool looks_like_slot(StgInt slot);
-rtsBool looks_like_ga(globalAddr *ga);
-#define LOOKS_LIKE_TID(tid)  looks_like_tid(tid)
-#define LOOKS_LIKE_GA(ga)    looks_like_ga(ga)
-#endif /* 0 */
-
-#endif /* PAR */
-
-/*
- * @node GranSim,  , GUM, Parallel definitions
- * @subsection GranSim
- */
-
-#if defined(GRAN)
-/* ToDo: Check which of the PAR routines are needed in GranSim -- HWL */
-
-/*
- * @menu
- * * Types::                   
- * * Prototypes::              
- * * Macros::                  
- * @end menu
- *
- * @node Types, Prototypes, GranSim, GranSim
- * @subsubsection Types
- */
-
-typedef StgWord *StgBuffer;
-typedef struct rtsPackBuffer_ {
-  StgInt /* nat */           id;
-  StgInt /* nat */           size;
-  StgInt /* nat */           unpacked_size;
-  StgTSO       *tso;
-  StgWord      *buffer;  
-} rtsPackBuffer;
-
-/*
- * @node Macros,  , Prototypes, GranSim
- * @subsubsection Macros
- */
-
-/* max no. of outstanding spark steals */
-#define MAX_FISHES                   1  
-
-/* These are needed in the packing code to get the size of the packet
-   right. The closures itself are never built in GrAnSim. */
-#  define FETCHME_VHS                          IND_VHS
-#  define FETCHME_HS                           IND_HS
-  
-#  define FETCHME_GA_LOCN                       FETCHME_HS
-  
-#  define FETCHME_CLOSURE_SIZE(closure)                IND_CLOSURE_SIZE(closure)
-#  define FETCHME_CLOSURE_NoPTRS(closure)              0L
-#  define FETCHME_CLOSURE_NoNONPTRS(closure)   (IND_CLOSURE_SIZE(closure)-IND_VHS)
-  
-#  define MAX_GAS      (RtsFlags.GranFlags.packBufferSize / PACK_GA_SIZE)
-#  define PACK_GA_SIZE 3       /* Size of a packed GA in words */
-                               /* Size of a packed fetch-me in words */
-#  define PACK_FETCHME_SIZE (PACK_GA_SIZE + _HS)
-#  define PACK_HDR_SIZE        4       /* Words of header in a packet */
-
-#    define PACK_HEAP_REQUIRED  \
-      (RtsFlags.GranFlags.packBufferSize * sizeofW(StgClosure*) + \
-      2 * sizeofW(StgInt) + sizeofW(StgTSO*))
-
-#    define PACK_FLAG_LOCN           0  
-#    define PACK_TSO_LOCN            1
-#    define PACK_UNPACKED_SIZE_LOCN  2
-#    define PACK_SIZE_LOCN           3
-#    define MAGIC_PACK_FLAG          0xfabc
-
-#  define GA_HDR_SIZE                  1
-
-#  define PROCS_HDR_POSN               PAR_HDR_POSN
-#  define PROCS_HDR_SIZE               1
-
-/* Accessing components of the field */
-#  define PROCS(closure)               ((closure)->header.gran.procs)
-/* SET_PROCS is now SET_GRAN_HEADER in ClosureMacros.h. */
-
-#endif   /* GRAN */
-
-/*
- * @node End of File,  , Parallel definitions
- * @section End of File
- */
-
-#endif /* defined(PAR) || defined(GRAN)         whole file */
-
-#endif /* Parallel_H */
-
-