summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2010-09-15 12:06:27 +0000
committerSimon Marlow <marlowsd@gmail.com>2010-09-15 12:06:27 +0000
commit65da401ae6579ad47f06bcf80b1f3022c9963ca4 (patch)
tree71782907aa7a9043b00f0f8e52498817469225e9 /rts
parentc76348fc03f302ffd8201b912eef4724b3fa60a4 (diff)
downloadhaskell-65da401ae6579ad47f06bcf80b1f3022c9963ca4.tar.gz
Windows: use a thread-local variable for myTask()
Which entailed fixing an incorrect #ifdef in Task.c
Diffstat (limited to 'rts')
-rw-r--r--rts/Task.c4
-rw-r--r--rts/Task.h5
2 files changed, 6 insertions, 3 deletions
diff --git a/rts/Task.c b/rts/Task.c
index 8a289be007..e93d60d86f 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(&currentTaskKey);
+#endif
initMutex(&all_tasks_mutex);
#endif
}
diff --git a/rts/Task.h b/rts/Task.h
index f91872f9a0..566c0425cd 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