X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FCapability.h;h=c50fe7ffab41ef1bcad2412c33d92f3d3e183a5f;hp=a2551d0cc5025b7427879aad57bf7ba069f2c212;hb=8604da0136707cc14845d14a88c2272fe576b6d0;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1 diff --git a/rts/Capability.h b/rts/Capability.h index a2551d0..c50fe7f 100644 --- a/rts/Capability.h +++ b/rts/Capability.h @@ -89,7 +89,8 @@ struct Capability_ { #endif // Per-capability STM-related data - StgTVarWaitQueue *free_tvar_wait_queues; + StgTVarWatchQueue *free_tvar_watch_queues; + StgInvariantCheckQueue *free_invariant_check_queues; StgTRecChunk *free_trec_chunks; StgTRecHeader *free_trec_headers; nat transaction_tokens; @@ -199,6 +200,10 @@ void waitForCapability (Task *task, Mutex *mutex, Capability **pCap); // from the one held by the current Task). // void wakeupThreadOnCapability (Capability *cap, StgTSO *tso); +void wakeupThreadOnCapability_lock (Capability *cap, StgTSO *tso); + +void migrateThreadToCapability (Capability *cap, StgTSO *tso); +void migrateThreadToCapability_lock (Capability *cap, StgTSO *tso); // Wakes up a worker thread on just one Capability, used when we // need to service some global event. @@ -212,7 +217,7 @@ void prodAllCapabilities (void); // Waits for a capability to drain of runnable threads and workers, // and then acquires it. Used at shutdown time. // -void shutdownCapability (Capability *cap, Task *task); +void shutdownCapability (Capability *cap, Task *task, rtsBool wait_foreign); // Attempt to gain control of a Capability if it is free. // @@ -227,6 +232,9 @@ extern void grabCapability (Capability **pCap); #endif /* !THREADED_RTS */ +// Free a capability on exit +void freeCapability (Capability *cap); + /* ----------------------------------------------------------------------------- * INLINE functions... private below here * -------------------------------------------------------------------------- */