extern void passCapabilityToWorker( void );
extern nat rts_n_free_capabilities;
+
+extern Capability *free_capabilities;
+
/* number of worker threads waiting for a return capability
*/
extern nat rts_n_waiting_workers;
static inline rtsBool allFreeCapabilities (void)
{
+#if defined(SMP)
+ return (rts_n_free_capabilities == RTS_DEREF(RtsFlags).ParFlags.nNodes);
+#else
return (rts_n_free_capabilities == 1);
+#endif
}
#else // !RTS_SUPPORTS_THREADS
//
extern void grabCapability( Capability **pCap );
-#endif // !RTS_SUPPORTS_THREADS
+#endif /* !RTS_SUPPORTS_THREADS */
#endif /* __CAPABILITY_H__ */