From 222a76c37c89ee37eebecd53dd32fd481245e6fa Mon Sep 17 00:00:00 2001 From: rpj Date: Thu, 25 Oct 2001 13:24:58 +0000 Subject: * 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. --- global.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'global.c') diff --git a/global.c b/global.c index 92ea8da..3a1c635 100644 --- a/global.c +++ b/global.c @@ -34,6 +34,14 @@ pthread_key_t ptw32_cleanupKey = NULL; int ptw32_concurrency = 0; +/* + * Function pointer to InterlockedCompareExchange if it exists; otherwise NULL + */ +PTW32_INTERLOCKED_LONG +(WINAPI *ptw32_interlocked_compare_exchange)(PTW32_INTERLOCKED_LPLONG, + PTW32_INTERLOCKED_LONG, + PTW32_INTERLOCKED_LONG) = NULL; + /* * Global lock for testing internal state of PTHREAD_MUTEX_INITIALIZER * created mutexes. -- cgit v1.2.3