InterlockedExchangePointer & pthread_atfork

Robert Collins robert.collins@itdomain.com.au
Sat Apr 14 19:49:00 GMT 2001


----- Original Message -----
From: "Christopher Faylor" <cgf@redhat.com>
To: <cygwin-developers@cygwin.com>
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
less
> >thing to be fixed in the future).
> >
> >I suspect the function is implmented as inline code. How do I go
about
> >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
in
> >the code.
>
> The function doesn't exist in any of the MSVC v6 headers.  I don't
know
> 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
msdn.microsoft.com, 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.

Rob



More information about the Cygwin-developers mailing list