X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fwin32%2FOSThreads.c;h=410346916bddde9122bbd95a906fac5cdb602ce7;hb=f84a0b7028424ea167658c06e75e871198371f00;hp=6f3629be4b5390df9c4fce92de5e17c6f792be04;hpb=e4fdc426413d178c86d3ba93702aad5eb17734bf;p=ghc-hetmet.git diff --git a/rts/win32/OSThreads.c b/rts/win32/OSThreads.c index 6f3629b..4103469 100644 --- a/rts/win32/OSThreads.c +++ b/rts/win32/OSThreads.c @@ -11,8 +11,8 @@ #include "Rts.h" #if defined(THREADED_RTS) -#include "OSThreads.h" #include "RtsUtils.h" +#include /* For reasons not yet clear, the entire contents of process.h is protected * by __STRICT_ANSI__ not being defined. @@ -94,6 +94,7 @@ void shutdownThread() { _endthreadex(0); + barf("_endthreadex returned"); // avoid gcc warning } int @@ -197,6 +198,17 @@ setThreadLocalVar (ThreadLocalKey *key, void *value) } } +void +freeThreadLocalKey (ThreadLocalKey *key) +{ + BOOL r; + r = TlsFree(*key); + if (r == 0) { + DWORD dw = GetLastError(); + barf("freeThreadLocalKey failed: %lu", dw); + } +} + static unsigned __stdcall forkOS_createThreadWrapper ( void * entry ) @@ -220,6 +232,26 @@ forkOS_createThread ( HsStablePtr entry ) (unsigned*)&pId) == 0); } +nat +getNumberOfProcessors (void) +{ + static nat nproc = 0; + + if (nproc == 0) { + SYSTEM_INFO si; + GetSystemInfo(&si); + nproc = si.dwNumberOfProcessors; + } + + return nproc; +} + +void +setThreadAffinity (nat n STG_UNUSED, nat m STG_UNUSED) +{ + /* ToDo */ +} + #else /* !defined(THREADED_RTS) */ int