InterlockedExchangePointer & pthread_atfork

Robert Collins
Sat Apr 14 19:49:00 GMT 2001

----- Original Message -----
From: "Christopher Faylor" <>
To: <>
Sent: Sunday, April 15, 2001 12:46 PM
Subject: Re: InterlockedExchangePointer & pthread_atfork

> On Fri, Apr 13, 2001 at 06:10:02PM +1000, Robert Collins wrote:
> >I have implemented pthread_atfork.
> >
> >The problem is, there's a missing win32 API function:
> >InterlockedExchangePointer.
> >
> >I want to use that rather than InterLockedExchange, because
> >InterlockedExchangePointer is correct code for 64-bit systems (one
> >thing to be fixed in the future).
> >
> >I suspect the function is implmented as inline code. How do I go
> >getting that code into cygwin? (I'm currently trying to find a
> >non-copyrighted version of it).
> >
> >Alternatively I can just use InterlockedExchange, and leave a FIXME
> >the code.
> The function doesn't exist in any of the MSVC v6 headers.  I don't
> if it is inlined or not but InterlockedExchange isn't and IIRC this
> routine was pretty complicated on windows 95, probably owing to the
> fact that W9x runs on more than just pentiums.
> cgf

The InterlockedExchangePointer function on 32-bit x86 systems should be
InterlockedExchange with different cast variables. The actual guts and
operations are identical. It's on IA64 (& alpha ?) systems that
different guts are needed. The function is documented at, and is probably in the .NET headers. The portability
reference in the doco includes 95 as a target.

For now I've just #defined it'd, and typecast the variables. There's  a
FIXME in the code.


More information about the Cygwin-developers mailing list