From: sof Date: Tue, 12 Feb 2002 15:34:25 +0000 (+0000) Subject: [project @ 2002-02-12 15:34:25 by sof] X-Git-Tag: Approximately_9120_patches~95 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=3fa805685bb28d93961080ce157dbd1ee8578cc2;p=ghc-hetmet.git [project @ 2002-02-12 15:34:25 by sof] - give rts_n_free_capabilities an interpretation in threaded mode (possible values: 0,1) - noFreeCapabilities() -? noCapabilities() --- diff --git a/ghc/rts/Capability.c b/ghc/rts/Capability.c index 78c10bf..d3eacd6 100644 --- a/ghc/rts/Capability.c +++ b/ghc/rts/Capability.c @@ -26,6 +26,8 @@ Capability MainCapability; /* for non-SMP, we have one global capability */ #endif +nat rts_n_free_capabilities; + static void initCapability( Capability *cap ) @@ -64,6 +66,7 @@ static Capability *free_capabilities; /* Available capabilities for running thre void grabCapability(Capability** cap) { #if !defined(SMP) + rts_n_free_capabilities = 0; *cap = &MainCapability; #else *cap = free_capabilities; @@ -79,6 +82,7 @@ void releaseCapability(Capability* cap) free_capabilities = cap; rts_n_free_capabilities++; #endif + rts_n_free_capabilities = 1; return; } diff --git a/ghc/rts/Capability.h b/ghc/rts/Capability.h index cecbc8b..e59f495 100644 --- a/ghc/rts/Capability.h +++ b/ghc/rts/Capability.h @@ -32,7 +32,7 @@ extern void initCapabilities(void); extern void grabCapability(Capability** cap); extern void releaseCapability(Capability* cap); -#if defined(SMP) +#if defined(RTS_SUPPORTS_THREADS) extern nat rts_n_free_capabilities; /* total number of available capabilities */ static inline nat getFreeCapabilities() @@ -40,16 +40,20 @@ static inline nat getFreeCapabilities() return rts_n_free_capabilities; } -static inline rtsBool noFreeCapabilities() +static inline rtsBool noCapabilities() { return (rts_n_free_capabilities == 0); } static inline rtsBool allFreeCapabilities() { +# if defined(SMP) return (rts_n_free_capabilities == RtsFlags.ParFlags.nNodes); +# else + return (rts_n_free_capabilities == 1); +# endif } -#endif /* SMP */ +#endif /* RTS_SUPPORTS_THREADS */ #endif /* __CAPABILITY_H__ */