X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=includes%2Frts%2Fstorage%2FClosures.h;h=a0ff738aa7ada48a2b85c82ce6f9f68f0f1333ad;hb=f4692220c7cbdadaa633f50eb2b30b59edb30183;hp=d7498e28821d6c56260b244ba90afd3ecbaf8493;hpb=7408b39235bccdcde48df2a73337ff976fbc09b7;p=ghc-hetmet.git diff --git a/includes/rts/storage/Closures.h b/includes/rts/storage/Closures.h index d7498e2..a0ff738 100644 --- a/includes/rts/storage/Closures.h +++ b/includes/rts/storage/Closures.h @@ -127,6 +127,14 @@ typedef struct { StgInfoTable *saved_info; } StgIndStatic; +typedef struct StgBlockingQueue_ { + StgHeader header; + struct StgBlockingQueue_ *link; // here so it looks like an IND + StgClosure *bh; // the BLACKHOLE + StgTSO *owner; + struct MessageBlackHole_ *queue; +} StgBlockingQueue; + typedef struct { StgHeader header; StgWord words; @@ -297,11 +305,17 @@ typedef struct { /* Concurrent communication objects */ +typedef struct StgMVarTSOQueue_ { + StgHeader header; + struct StgMVarTSOQueue_ *link; + struct StgTSO_ *tso; +} StgMVarTSOQueue; + typedef struct { - StgHeader header; - struct StgTSO_ *head; - struct StgTSO_ *tail; - StgClosure* value; + StgHeader header; + struct StgMVarTSOQueue_ *head; + struct StgMVarTSOQueue_ *tail; + StgClosure* value; } StgMVar; @@ -433,10 +447,17 @@ typedef struct MessageWakeup_ { typedef struct MessageThrowTo_ { StgHeader header; - Message *link; + struct MessageThrowTo_ *link; StgTSO *source; StgTSO *target; StgClosure *exception; } MessageThrowTo; +typedef struct MessageBlackHole_ { + StgHeader header; + struct MessageBlackHole_ *link; + StgTSO *tso; + StgClosure *bh; +} MessageBlackHole; + #endif /* RTS_STORAGE_CLOSURES_H */