- give rts_n_free_capabilities an interpretation
in threaded mode (possible values: 0,1)
- noFreeCapabilities() -? noCapabilities()
Capability MainCapability; /* for non-SMP, we have one global capability */
#endif
Capability MainCapability; /* for non-SMP, we have one global capability */
#endif
+nat rts_n_free_capabilities;
+
static
void
initCapability( Capability *cap )
static
void
initCapability( Capability *cap )
void grabCapability(Capability** cap)
{
#if !defined(SMP)
void grabCapability(Capability** cap)
{
#if !defined(SMP)
+ rts_n_free_capabilities = 0;
*cap = &MainCapability;
#else
*cap = free_capabilities;
*cap = &MainCapability;
#else
*cap = free_capabilities;
free_capabilities = cap;
rts_n_free_capabilities++;
#endif
free_capabilities = cap;
rts_n_free_capabilities++;
#endif
+ rts_n_free_capabilities = 1;
extern void grabCapability(Capability** cap);
extern void releaseCapability(Capability* cap);
extern void grabCapability(Capability** cap);
extern void releaseCapability(Capability* cap);
+#if defined(RTS_SUPPORTS_THREADS)
extern nat rts_n_free_capabilities; /* total number of available capabilities */
static inline nat getFreeCapabilities()
extern nat rts_n_free_capabilities; /* total number of available capabilities */
static inline nat getFreeCapabilities()
return rts_n_free_capabilities;
}
return rts_n_free_capabilities;
}
-static inline rtsBool noFreeCapabilities()
+static inline rtsBool noCapabilities()
{
return (rts_n_free_capabilities == 0);
}
static inline rtsBool allFreeCapabilities()
{
{
return (rts_n_free_capabilities == 0);
}
static inline rtsBool allFreeCapabilities()
{
return (rts_n_free_capabilities == RtsFlags.ParFlags.nNodes);
return (rts_n_free_capabilities == RtsFlags.ParFlags.nNodes);
+# else
+ return (rts_n_free_capabilities == 1);
+# endif
+#endif /* RTS_SUPPORTS_THREADS */
#endif /* __CAPABILITY_H__ */
#endif /* __CAPABILITY_H__ */