X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FCapability.h;h=cb0b09bd7cfca4db924c51cf122ef0e941433e8e;hb=0bffc410964e1688ad80d277d53400659e697ab5;hp=b878507a228c96c7236c7ad87b8feb3d9b9d3482;hpb=e289780ec23a1934f39d214d60705f8f26d1763d;p=ghc-hetmet.git diff --git a/ghc/rts/Capability.h b/ghc/rts/Capability.h index b878507..cb0b09b 100644 --- a/ghc/rts/Capability.h +++ b/ghc/rts/Capability.h @@ -28,14 +28,22 @@ extern Capability MainCapability; #endif - extern void initCapabilities(void); -extern void grabCapability(Capability** cap); +extern void grabCapability(Capability** pCap); extern void releaseCapability(Capability* cap); -#if defined(RTS_SUPPORTS_THREADS) -/* total number of available capabilities */ extern nat rts_n_free_capabilities; +#if defined(RTS_SUPPORTS_THREADS) +/* number of worker threads waiting to do good work within + the RTS. Used by Task.c (only) to determine whether or not + new worker threads needs to be created (when an external call + is made). + */ +extern nat rts_n_waiting_workers; /* used by Task.c to determine */ + +extern void grabReturnCapability(Mutex* pMutex, Capability** pCap); +extern void yieldToReturningWorker(Mutex* pMutex, Capability** pCap); +extern void waitForWorkCapability(Mutex* pMutex, Capability** pCap, rtsBool runnable); static inline nat getFreeCapabilities (void) {