X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=includes%2FConstants.h;h=ef2a4865e2bf891d73100037dbadab8c0f934ea7;hp=4f3c35b7448fe814facc595cc6bc31f47ec45212;hb=9da4639011348fb6c318e3cba4b08622f811d9c4;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1 diff --git a/includes/Constants.h b/includes/Constants.h index 4f3c35b..ef2a486 100644 --- a/includes/Constants.h +++ b/includes/Constants.h @@ -230,6 +230,36 @@ #define ThreadBlocked 4 #define ThreadFinished 5 +/* + * 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. + */ +#define TSO_LOCKED 2 + +/* + * TSO_BLOCKEX: the TSO is blocking exceptions + * + * TSO_INTERRUPTIBLE: the TSO can be interrupted if it blocks + * interruptibly (eg. with BlockedOnMVar). + */ +#define TSO_BLOCKEX 4 +#define TSO_INTERRUPTIBLE 8 + /* ----------------------------------------------------------------------------- RET_DYN stack frames -------------------------------------------------------------------------- */