From: Simon Marlow Date: Wed, 15 Sep 2010 12:06:27 +0000 (+0000) Subject: Windows: use a thread-local variable for myTask() X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=65da401ae6579ad47f06bcf80b1f3022c9963ca4 Windows: use a thread-local variable for myTask() Which entailed fixing an incorrect #ifdef in Task.c --- diff --git a/rts/Task.c b/rts/Task.c index 8a289be..e93d60d 100644 --- a/rts/Task.c +++ b/rts/Task.c @@ -63,8 +63,10 @@ initTaskManager (void) if (!tasksInitialized) { taskCount = 0; tasksInitialized = 1; -#if defined(THREADED_RTS) && !defined(MYTASK_USE_TLV) +#if defined(THREADED_RTS) +#if !defined(MYTASK_USE_TLV) newThreadLocalKey(¤tTaskKey); +#endif initMutex(&all_tasks_mutex); #endif } diff --git a/rts/Task.h b/rts/Task.h index f91872f..566c042 100644 --- a/rts/Task.h +++ b/rts/Task.h @@ -233,8 +233,9 @@ void startWorkerTask (Capability *cap); // A thread-local-storage key that we can use to get access to the // current thread's Task structure. #if defined(THREADED_RTS) -#if defined(linux_HOST_OS) && \ - (defined(i386_HOST_ARCH) || defined(x86_64_HOST_ARCH)) +#if (defined(linux_HOST_OS) && \ + (defined(i386_HOST_ARCH) || defined(x86_64_HOST_ARCH))) || \ + (defined(mingw32_HOST_OS) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 4) #define MYTASK_USE_TLV extern __thread Task *my_task; #else