X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FCapability.h;h=70d9ee9e8de418b4f9d3e1a6b17b47c025c00e74;hb=66579ff945831c5fc9a17c58c722ff01f2268d76;hp=94306eb6c008128a16f2704ae0a9041d49ffe211;hpb=d572aed64d9c40dcc38a49b09d18f301555e4efb;p=ghc-hetmet.git diff --git a/rts/Capability.h b/rts/Capability.h index 94306eb..70d9ee9 100644 --- a/rts/Capability.h +++ b/rts/Capability.h @@ -66,6 +66,10 @@ struct Capability_ { // each GC. bdescr **mut_lists; + // Context switch flag. We used to have one global flag, now one + // per capability. Locks required : none (conflicts are harmless) + int context_switch; + #if defined(THREADED_RTS) // Worker Tasks waiting in the wings. Singly-linked. Task *spare_workers; @@ -232,6 +236,9 @@ extern void grabCapability (Capability **pCap); #endif /* !THREADED_RTS */ +// cause all capabilities to context switch as soon as possible. +void setContextSwitches(void); + // Free a capability on exit void freeCapability (Capability *cap);