StgTRecChunk *free_trec_chunks;
StgTRecHeader *free_trec_headers;
nat transaction_tokens;
-
-}; // typedef Capability, defined in RtsAPI.h
+} // typedef Capability is defined in RtsAPI.h
+ // Capabilities are stored in an array, so make sure that adjacent
+ // Capabilities don't share any cache-lines:
+#ifndef mingw32_HOST_OS
+ ATTRIBUTE_ALIGNED(64)
+#endif
+ ;
#if defined(THREADED_RTS)
// Try to steal a spark from other Capabilities
//
-rtsBool stealWork (Capability *cap);
+StgClosure *stealWork (Capability *cap);
+
+// True if any capabilities have sparks
+//
+rtsBool anySparks (void);
INLINE_HEADER rtsBool emptySparkPoolCap (Capability *cap);
INLINE_HEADER nat sparkPoolSizeCap (Capability *cap);
// cause all capabilities to context switch as soon as possible.
void setContextSwitches(void);
-// Free a capability on exit
-void freeCapability (Capability *cap);
+// Free all capabilities
+void freeCapabilities (void);
// FOr the GC:
void markSomeCapabilities (evac_fn evac, void *user, nat i0, nat delta,