X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FCapability.h;h=4030b5efd463cf223d7632f40a52898a93c064a0;hb=07308413a4b20e70c294b657006327b09b65cfc0;hp=4b515485644ad8b2c49e0fe8ac51406933e7a9a6;hpb=32578fc55ac105aa3bd08ef6aa607bfdbe375eec;p=ghc-hetmet.git diff --git a/rts/Capability.h b/rts/Capability.h index 4b51548..4030b5e 100644 --- a/rts/Capability.h +++ b/rts/Capability.h @@ -56,7 +56,7 @@ struct Capability_ { // the suspended TSOs easily. Hence, when migrating a Task from // the returning_tasks list, we must also migrate its entry from // this list. - Task *suspended_ccalling_tasks; + InCall *suspended_ccalls; // One mutable list per generation, so we don't need to take any // locks when updating an old-generation thunk. This also lets us @@ -88,11 +88,8 @@ struct Capability_ { Task *returning_tasks_hd; // Singly-linked, with head/tail Task *returning_tasks_tl; - // A list of threads to append to this Capability's run queue at - // the earliest opportunity. These are threads that have been - // woken up by another Capability. - StgTSO *wakeup_queue_hd; - StgTSO *wakeup_queue_tl; + // Messages, or END_TSO_QUEUE. + Message *inbox; SparkPool *sparks; @@ -285,6 +282,18 @@ void markCapabilities (evac_fn evac, void *user); void traverseSparkQueues (evac_fn evac, void *user); /* ----------------------------------------------------------------------------- + Messages + -------------------------------------------------------------------------- */ + +#ifdef THREADED_RTS + +INLINE_HEADER rtsBool emptyInbox(Capability *cap);; + +void sendMessage (Capability *cap, Message *msg); + +#endif // THREADED_RTS + +/* ----------------------------------------------------------------------------- * INLINE functions... private below here * -------------------------------------------------------------------------- */ @@ -333,6 +342,15 @@ contextSwitchCapability (Capability *cap) cap->context_switch = 1; } +#ifdef THREADED_RTS + +INLINE_HEADER rtsBool emptyInbox(Capability *cap) +{ + return (cap->inbox == (Message*)END_TSO_QUEUE); +} + +#endif + END_RTS_PRIVATE #endif /* CAPABILITY_H */