Ticket #3377: interlocked.hpp.patch

File interlocked.hpp.patch, 1.6 KB (added by mdorey@…, 13 years ago)

use Interlocked(Compare)?ExchangePointer for mingw64

  • boost/detail/interlocked.hpp

    ===== boost/detail/interlocked.hpp 1.1 vs edited =====
    old new  
    106106extern "C" __declspec(dllimport) long __stdcall InterlockedExchange( long volatile *, long );
    107107extern "C" __declspec(dllimport) long __stdcall InterlockedExchangeAdd( long volatile *, long );
    108108
     109# if defined(_M_IA64) || defined(_M_AMD64)
     110extern "C" __declspec(dllimport) void* __stdcall InterlockedCompareExchangePointer( void* volatile *, void*, void* );
     111extern "C" __declspec(dllimport) void* __stdcall InterlockedExchangePointer( void* volatile *, void* );
     112# endif
     113
    109114} // namespace detail
    110115
    111116} // namespace boost
     
    116121# define BOOST_INTERLOCKED_EXCHANGE ::boost::detail::InterlockedExchange
    117122# define BOOST_INTERLOCKED_EXCHANGE_ADD ::boost::detail::InterlockedExchangeAdd
    118123
    119 # define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
     124# if defined(_M_IA64) || defined(_M_AMD64)
     125#  define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER ::boost::detail::InterlockedCompareExchangePointer
     126#  define BOOST_INTERLOCKED_EXCHANGE_POINTER ::boost::detail::InterlockedExchangePointer
     127# else
     128#  define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
    120129    ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
    121 # define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
     130#  define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
    122131    ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
     132# endif
    123133
    124134#else
    125135