diff options
author | Simon Marlow <marlowsd@gmail.com> | 2010-09-15 12:06:27 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2010-09-15 12:06:27 +0000 |
commit | 65da401ae6579ad47f06bcf80b1f3022c9963ca4 (patch) | |
tree | 71782907aa7a9043b00f0f8e52498817469225e9 /rts | |
parent | c76348fc03f302ffd8201b912eef4724b3fa60a4 (diff) | |
download | haskell-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.c | 4 | ||||
-rw-r--r-- | rts/Task.h | 5 |
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(¤tTaskKey); +#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 |