summaryrefslogtreecommitdiff
path: root/barrier.c
diff options
context:
space:
mode:
authorrpj <rpj>2001-10-25 13:24:58 +0000
committerrpj <rpj>2001-10-25 13:24:58 +0000
commit222a76c37c89ee37eebecd53dd32fd481245e6fa (patch)
tree160ed8d069da4d9e94b16c436943def676e355c5 /barrier.c
parent7b714286cfd65e797364fbdc583e13adba71a2ee (diff)
* barrier.c: Move _LONG and _LPLONG defines into
implement.h; rename to PTW32_INTERLOCKED_LONG and PTW32_INTERLOCKED_LPLONG respectively. * spin.c: Likewise; ptw32_interlocked_compare_exchange used in place of InterlockedCompareExchange directly. * global.c (ptw32_interlocked_compare_exchange): Add prototype for this new routine pointer to be used when InterlockedCompareExchange isn't supported by Windows. * nonportable.c (pthread_win32_process_attach_np): Check for support of InterlockedCompareExchange in kernel32 and assign its address to ptw32_interlocked_compare_exchange if it exists, or our own ix86 specific implementation ptw32_InterlockedCompareExchange. *private.c (ptw32_InterlockedCompareExchange): An implementation of InterlockedCompareExchange() which is specific to ix86; written directly in assembler for either MSVC or GNU C; needed because Windows 95 doesn't support InterlockedCompareExchange(). * sched.c (sched_get_priority_min): Extend to return THREAD_PRIORITY_IDLE. (sched_get_priority_max): Extend to return THREAD_PRIORITY_CRITICAL.
Diffstat (limited to 'barrier.c')
-rw-r--r--barrier.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/barrier.c b/barrier.c
index 3cfa66f..e989095 100644
--- a/barrier.c
+++ b/barrier.c
@@ -27,14 +27,6 @@
#include "implement.h"
-#ifdef __MINGW32__
-#define _LONG long
-#define _LPLONG long*
-#else
-#define _LONG PVOID
-#define _LPLONG PVOID*
-#endif
-
int
pthread_barrier_init(pthread_barrier_t * barrier,
const pthread_barrierattr_t * attr,
@@ -169,14 +161,14 @@ pthread_barrier_wait(pthread_barrier_t *barrier)
/*
* The first thread across will be the PTHREAD_BARRIER_SERIAL_THREAD.
- * It also sets up the alternate semaphore as the next barrier.
+ * This also sets up the alternate semaphore as the next barrier.
*/
if (0 == result)
{
- result = ((_LONG) step ==
- InterlockedCompareExchange((_LPLONG) &(b->iStep),
- (_LONG) (1L - step),
- (_LONG) step)
+ result = ((PTW32_INTERLOCKED_LONG) step ==
+ ptw32_interlocked_compare_exchange((PTW32_INTERLOCKED_LPLONG) &(b->iStep),
+ (PTW32_INTERLOCKED_LONG) (1L - step),
+ (PTW32_INTERLOCKED_LONG) step)
? PTHREAD_BARRIER_SERIAL_THREAD
: 0);
}