X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2Frts%2FConstants.h;h=e21a893bbcb4c5cf6ab8db803741618cd40a15b2;hb=150ac5e907ec5096660f90caaa5f076da181d81b;hp=bab45a362c1259f04c5b53294d141cfbc1b16e7f;hpb=a2a67cd520b9841114d69a87a423dabcb3b4368e;p=ghc-hetmet.git diff --git a/includes/rts/Constants.h b/includes/rts/Constants.h index bab45a3..e21a893 100644 --- a/includes/rts/Constants.h +++ b/includes/rts/Constants.h @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * - * (c) The GHC Team, 1998-2002 + * (c) The GHC Team, 1998-2009 * * Constants * @@ -12,6 +12,9 @@ * the system (eg. structure sizes) are generated into the file * DerivedConstants.h by a C program (mkDerivedConstantsHdr). * + * To understand the structure of the RTS headers, see the wiki: + * http://hackage.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes + * * -------------------------------------------------------------------------- */ #ifndef RTS_CONSTANTS_H @@ -63,6 +66,13 @@ #define MAX_CHARLIKE 255 #define MIN_CHARLIKE 0 +/* Each byte in the card table for an StgMutaArrPtrs covers + * (1<msg_cap */ +#define BlockedOnMsgThrowTo 12 + +/* The thread is not on any run queues, but can be woken up + by tryWakeupThread() */ +#define ThreadMigrating 13 /* * These constants are returned to the scheduler by a thread that has @@ -230,19 +246,7 @@ /* * Flags for the tso->flags field. - * - * The TSO_DIRTY flag indicates that this TSO's stack should be - * scanned during garbage collection. The link field of a TSO is - * always scanned, so we don't have to dirty a TSO just for linking - * it on a different list. - * - * TSO_DIRTY is set by - * - schedule(), just before running a thread, - * - raiseAsync(), because it modifies a thread's stack - * - resumeThread(), just before running the thread again - * and unset by the garbage collector (only). */ -#define TSO_DIRTY 1 /* * TSO_LOCKED is set when a TSO is locked to a particular Capability. @@ -266,8 +270,19 @@ */ #define TSO_LINK_DIRTY 32 +/* + * Used by the sanity checker to check whether TSOs are on the correct + * mutable list. + */ #define TSO_MARKED 64 +/* + * Used to communicate between stackSqueeze() and + * threadStackOverflow() that a thread's stack was squeezed and the + * stack may not need to be expanded. + */ +#define TSO_SQUEEZED 128 + /* ----------------------------------------------------------------------------- RET_DYN stack frames -------------------------------------------------------------------------- */ @@ -287,4 +302,22 @@ #error RESERVED_STACK_WORDS may be wrong! #endif +/* + * The number of times we spin in a spin lock before yielding (see + * #3758). To tune this value, use the benchmark in #3758: run the + * server with -N2 and the client both on a dual-core. Also make sure + * that the chosen value doesn't slow down any of the parallel + * benchmarks in nofib/parallel. + */ +#define SPIN_COUNT 1000 + +/* ----------------------------------------------------------------------------- + Spare workers per Capability in the threaded RTS + + No more than MAX_SPARE_WORKERS will be kept in the thread pool + associated with each Capability. + -------------------------------------------------------------------------- */ + +#define MAX_SPARE_WORKERS 6 + #endif /* RTS_CONSTANTS_H */