+// 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, rtsBool wait_foreign);
+
+// Shut down all capabilities.
+//
+void shutdownCapabilities(Task *task, rtsBool wait_foreign);
+
+// cause all capabilities to context switch as soon as possible.
+void setContextSwitches(void);
+INLINE_HEADER void contextSwitchCapability(Capability *cap);
+
+// Free all capabilities
+void freeCapabilities (void);
+
+// For the GC:
+void markCapability (evac_fn evac, void *user, Capability *cap,
+ rtsBool no_mark_sparks USED_IF_THREADS);
+
+void markCapabilities (evac_fn evac, void *user);
+
+void traverseSparkQueues (evac_fn evac, void *user);
+
+/* -----------------------------------------------------------------------------
+ Messages
+ -------------------------------------------------------------------------- */
+
+#ifdef THREADED_RTS
+
+INLINE_HEADER rtsBool emptyInbox(Capability *cap);;
+
+#endif // THREADED_RTS