summaryrefslogtreecommitdiff
path: root/pthread_win32_attach_detach_np.c
diff options
context:
space:
mode:
authorrpj <rpj>2011-07-01 00:51:56 +0000
committerrpj <rpj>2011-07-01 00:51:56 +0000
commit1e0bb8a09c86d144f3779bc4d5724afe3f637922 (patch)
treeb4c0c0a6221360107d2bf816523594352eac5f34 /pthread_win32_attach_detach_np.c
parent5af9e85e56dbcae60f771619131ecbc17980fdaa (diff)
Redo Interlocked macros; see the ChangeLog
Diffstat (limited to 'pthread_win32_attach_detach_np.c')
-rw-r--r--pthread_win32_attach_detach_np.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/pthread_win32_attach_detach_np.c b/pthread_win32_attach_detach_np.c
index 6a42c93..c3ff0a2 100644
--- a/pthread_win32_attach_detach_np.c
+++ b/pthread_win32_attach_detach_np.c
@@ -58,7 +58,11 @@ pthread_win32_process_attach_np ()
pthread_count++;
#endif
+#if defined(__GNUC__)
ptw32_features = 0;
+#else
+ ptw32_features = PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE;
+#endif
/*
* Load QUSEREX.DLL and try to get address of QueueUserAPCEx
@@ -208,9 +212,9 @@ pthread_win32_thread_detach_np ()
{
pthread_mutex_t mx = sp->robustMxList->mx;
ptw32_robust_mutex_remove(&mx, sp);
- (void) PTW32_INTERLOCKED_EXCHANGE(
+ (void) PTW32_INTERLOCKED_EXCHANGE_LONG(
(PTW32_INTERLOCKED_PTR)&mx->robustNode->stateInconsistent,
- (PTW32_INTERLOCKED_VALUE)-1);
+ (PTW32_INTERLOCKED_LONG)-1);
/*
* If there are no waiters then the next thread to block will
* sleep, wakeup immediately and then go back to sleep.