Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570/****************************************************************************** * INTERLOCKED Functions * ******************************************************************************/
#define BitScanForward _BitScanForward#define BitScanReverse _BitScanReverse#define BitTest _bittest#define BitTestAndComplement _bittestandcomplement#define BitTestAndSet _bittestandset#define BitTestAndReset _bittestandreset#ifdef _WIN64#define BitScanForward64 _BitScanForward64#define BitScanReverse64 _BitScanReverse64#define BitTest64 _bittest64#define BitTestAndComplement64 _bittestandcomplement64#define BitTestAndSet64 _bittestandset64#define BitTestAndReset64 _bittestandreset64#endif /* _WIN64 */
#if defined(_M_ARM) || defined(_M_IA64)#define __ACQ_(x) x##_acq#define __REL_(x) x##_rel#define __NF_(x) x##_nf#else#define __ACQ_(x) x#define __REL_(x) x#define __NF_(x) x#endif
#define InterlockedBitTestAndSet _interlockedbittestandset#define InterlockedBitTestAndSetAcquire __ACQ_(_interlockedbittestandset)#define InterlockedBitTestAndSetRelease __REL_(_interlockedbittestandset)#define InterlockedBitTestAndSetNoFence __NF_(_interlockedbittestandset)
#define InterlockedBitTestAndReset _interlockedbittestandreset#define InterlockedBitTestAndResetAcquire __ACQ_(_interlockedbittestandreset)#define InterlockedBitTestAndResetRelease __REL_(_interlockedbittestandreset)#define InterlockedBitTestAndResetNoFence __NF_(_interlockedbittestandreset)
#ifdef _WIN64#define InterlockedBitTestAndSet64 _interlockedbittestandset64#define InterlockedBitTestAndSet64Acquire __ACQ_(_interlockedbittestandset64)#define InterlockedBitTestAndSet64Release __REL_(_interlockedbittestandset64)#define InterlockedBitTestAndSet64NoFence __NF_(_interlockedbittestandset64)
#define InterlockedBitTestAndReset64 _interlockedbittestandreset64#define InterlockedBitTestAndReset64Acquire __ACQ_(_interlockedbittestandreset64)#define InterlockedBitTestAndReset64Release __REL_(_interlockedbittestandreset64)#define InterlockedBitTestAndReset64NoFence __NF_(_interlockedbittestandreset64)#endif /* _WIN64 */
#if defined(_M_AMD64) || defined(_M_IX86)FORCEINLINElong_InlineInterlockedAdd( _Inout_ _Interlocked_operand_ volatile long *Addend, _In_ long Value){ return _InterlockedExchangeAdd(Addend, Value) + Value;}#define InterlockedAdd _InlineInterlockedAdd#define InterlockedAddAcquire _InlineInterlockedAdd#define InterlockedAddRelease _InlineInterlockedAdd#define InterlockedAddNoFence _InlineInterlockedAdd#else#define InterlockedAdd _InterlockedAdd#define InterlockedAddAcquire __ACQ_(_InterlockedAdd)#define InterlockedAddRelease __REL_(_InterlockedAdd)#define InterlockedAddNoFence __NF_(_InterlockedAdd)#endif
#define InterlockedAdd64 _InterlockedAdd64#define InterlockedAddAcquire64 __ACQ_(_InterlockedAdd64)#define InterlockedAddRelease64 __REL_(_InterlockedAdd64)#define InterlockedAddNoFence64 __NF_(_InterlockedAdd64)
#define InterlockedAnd _InterlockedAnd#define InterlockedAndAcquire __ACQ_(_InterlockedAnd)#define InterlockedAndRelease __REL_(_InterlockedAnd)#define InterlockedAndNoFence __NF_(_InterlockedAnd)
#define InterlockedAnd8 _InterlockedAnd8#ifdef _M_ARM#define InterlockedAndAcquire8 _InterlockedAnd8_acq#define InterlockedAndRelease8 _InterlockedAnd8_rel#define InterlockedAndNoFence8 _InterlockedAnd8_nf#elif defined(_M_IA64)#define InterlockedAnd8Acquire _InterlockedAnd8_acq#define InterlockedAnd8Release _InterlockedAnd8_rel#endif // _M_ARM
#define InterlockedAnd16 _InterlockedAnd16#ifdef _M_ARM#define InterlockedAndAcquire16 _InterlockedAnd16_acq#define InterlockedAndRelease16 _InterlockedAnd16_rel#define InterlockedAndNoFence16 _InterlockedAnd16_nf#elif defined(_M_IA64)#define InterlockedAnd16Acquire _InterlockedAnd16_acq#define InterlockedAnd16Release _InterlockedAnd16_rel#endif // _M_ARM
#define InterlockedAnd64 _InterlockedAnd64#ifdef _M_ARM#define InterlockedAndAcquire64 __ACQ_(_InterlockedAnd64)#define InterlockedAndRelease64 __REL_(_InterlockedAnd64)#define InterlockedAndNoFence64 __NF_(_InterlockedAnd64)#else // _M_ARM#define InterlockedAnd64Acquire __ACQ_(_InterlockedAnd64)#define InterlockedAnd64Release __REL_(_InterlockedAnd64)#define InterlockedAnd64NoFence __NF_(_InterlockedAnd64)#endif // _M_ARM
#ifdef _WIN64#define InterlockedAndAffinity InterlockedAnd64#else#define InterlockedAndAffinity InterlockedAnd#endif // _WIN64
#define InterlockedCompareExchange _InterlockedCompareExchange#define InterlockedCompareExchangeAcquire __ACQ_(_InterlockedCompareExchange)#define InterlockedCompareExchangeRelease __REL_(_InterlockedCompareExchange)#define InterlockedCompareExchangeNoFence __NF_(_InterlockedCompareExchange)
#define InterlockedCompareExchange16 _InterlockedCompareExchange16#define InterlockedCompareExchangeAcquire16 __ACQ_(_InterlockedCompareExchange16)#define InterlockedCompareExchangeRelease16 __REL_(_InterlockedCompareExchange16)#define InterlockedCompareExchangeNoFence16 __NF_(_InterlockedCompareExchange16)
#define InterlockedCompareExchange64 _InterlockedCompareExchange64#define InterlockedCompareExchangeAcquire64 __ACQ_(_InterlockedCompareExchange64)#define InterlockedCompareExchangeRelease64 __REL_(_InterlockedCompareExchange64)#define InterlockedCompareExchangeNoFence64 __NF_(_InterlockedCompareExchange64)
#ifdef _WIN64#define InterlockedCompareExchange128 _InterlockedCompareExchange128#endif // _WIN64
#ifdef _M_IA64#define InterlockedCompare64Exchange128 _InterlockedCompare64Exchange128#define InterlockedCompare64ExchangeAcquire128 _InterlockedCompare64Exchange128_acq#define InterlockedCompare64ExchangeRelease128 _InterlockedCompare64Exchange128_rel#endif // _M_IA64
#define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer#define InterlockedCompareExchangePointerAcquire __ACQ_(_InterlockedCompareExchangePointer)#define InterlockedCompareExchangePointerRelease __REL_(_InterlockedCompareExchangePointer)#define InterlockedCompareExchangePointerNoFence __NF_(_InterlockedCompareExchangePointer)
#define InterlockedDecrement _InterlockedDecrement#define InterlockedDecrementAcquire __ACQ_(_InterlockedDecrement)#define InterlockedDecrementRelease __REL_(_InterlockedDecrement)#define InterlockedDecrementNoFence __NF_(_InterlockedDecrement)
#define InterlockedDecrement16 _InterlockedDecrement16#define InterlockedDecrementAcquire16 __ACQ_(_InterlockedDecrement16)#define InterlockedDecrementRelease16 __REL_(_InterlockedDecrement16)#define InterlockedDecrementNoFence16 __NF_(_InterlockedDecrement16)
#define InterlockedDecrement64 _InterlockedDecrement64#define InterlockedDecrementAcquire64 __ACQ_(_InterlockedDecrement64)#define InterlockedDecrementRelease64 __REL_(_InterlockedDecrement64)#define InterlockedDecrementNoFence64 __NF_(_InterlockedDecrement64)
#ifdef _WIN64#define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONG64 *)a)#define InterlockedDecrementSizeTNoFence(a) InterlockedDecrementNoFence64((LONG64 *)a)#else#define InterlockedDecrementSizeT(a) InterlockedDecrement((LONG *)a)#define InterlockedDecrementSizeTNoFence(a) InterlockedDecrementNoFence((LONG *)a)#endif // _WIN64
#define InterlockedExchange _InterlockedExchange#define InterlockedExchangeAcquire __ACQ_(_InterlockedExchange)/* No release here */#define InterlockedExchangeNoFence __NF_(_InterlockedExchange)
#if (_MSC_VER >= 1600)#define InterlockedExchange8 _InterlockedExchange8#endif // (_MSC_VER >= 1600)
#define InterlockedExchange16 _InterlockedExchange16/* No release here */#define InterlockedExchangeAcquire16 __ACQ_(_InterlockedExchange16)#define InterlockedExchangeNoFence16 __NF_(_InterlockedExchange16)
#define InterlockedExchange64 _InterlockedExchange64#define InterlockedExchangeAcquire64 __ACQ_(_InterlockedExchange64)/* No release here */#define InterlockedExchangeNoFence64 __NF_(_InterlockedExchange64)
#define InterlockedExchangePointer _InterlockedExchangePointer#define InterlockedExchangePointerAcquire __ACQ_(_InterlockedExchangePointer)/* No release here */#define InterlockedExchangePointerNoFence __NF_(_InterlockedExchangePointer)
#define InterlockedExchangeAdd _InterlockedExchangeAdd#define InterlockedExchangeAddAcquire __ACQ_(_InterlockedExchangeAdd)#define InterlockedExchangeAddRelease __REL_(_InterlockedExchangeAdd)#define InterlockedExchangeAddNoFence __NF_(_InterlockedExchangeAdd)
#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64#define InterlockedExchangeAddAcquire64 __ACQ_(_InterlockedExchangeAdd64)#define InterlockedExchangeAddRelease64 __REL_(_InterlockedExchangeAdd64)#define InterlockedExchangeAddNoFence64 __NF_(_InterlockedExchangeAdd64)
#ifdef _WIN64#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd64((LONG64 *)a, b)#define InterlockedExchangeAddSizeTAcquire(a, b) InterlockedExchangeAddAcquire64((LONG64 *)a, b)#define InterlockedExchangeAddSizeTNoFence(a, b) InterlockedExchangeAddNoFence64((LONG64 *)a, b)#else#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd((LONG *)a, b)#define InterlockedExchangeAddSizeTAcquire(a, b) InterlockedExchangeAddAcquire((LONG *)a, b)#define InterlockedExchangeAddSizeTNoFence(a, b) InterlockedExchangeAddNoFence((LONG *)a, b)#endif // _WIN64
#define InterlockedIncrement _InterlockedIncrement#define InterlockedIncrementAcquire __ACQ_(_InterlockedIncrement)#define InterlockedIncrementRelease __REL_(_InterlockedIncrement)#define InterlockedIncrementNoFence __NF_(_InterlockedIncrement)
#define InterlockedIncrement16 _InterlockedIncrement16#define InterlockedIncrementAcquire16 __ACQ_(_InterlockedIncrement16)#define InterlockedIncrementRelease16 __REL_(_InterlockedIncrement16)#define InterlockedIncrementNoFence16 __NF_(_InterlockedIncrement16)
#define InterlockedIncrement64 _InterlockedIncrement64#define InterlockedIncrementAcquire64 __ACQ_(_InterlockedIncrement64)#define InterlockedIncrementRelease64 __REL_(_InterlockedIncrement64)#define InterlockedIncrementNoFence64 __NF_(_InterlockedIncrement64)
#ifdef _WIN64#define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONG64 *)a)#define InterlockedIncrementSizeTNoFence(a) InterlockedIncrementNoFence64((LONG64 *)a)#else#define InterlockedIncrementSizeT(a) InterlockedIncrement((LONG *)a)#define InterlockedIncrementSizeTNoFence(a) InterlockedIncrementNoFence((LONG *)a)#endif // _WIN64
#define InterlockedOr _InterlockedOr#define InterlockedOrAcquire __ACQ_(_InterlockedOr)#define InterlockedOrRelease __REL_(_InterlockedOr)#define InterlockedOrNoFence __NF_(_InterlockedOr)
#define InterlockedOr8 _InterlockedOr8#ifdef _M_ARM#define InterlockedOrAcquire8 _InterlockedOr8_acq#define InterlockedOrRelease8 _InterlockedOr8_rel#define InterlockedOrNoFence8 _InterlockedOr8_nf#elif defined(_M_IA64)#define InterlockedOr8Acquire _InterlockedOr8_acq#define InterlockedOr8Release _InterlockedOr8_rel#endif // _M_ARM
#define InterlockedOr16 _InterlockedOr16#ifdef _M_ARM#define InterlockedOrAcquire16 _InterlockedOr16_acq#define InterlockedOrRelease16 _InterlockedOr16_rel#define InterlockedOrNoFence16 _InterlockedOr16_nf#elif defined(_M_IA64)#define InterlockedOr16Acquire _InterlockedOr16_acq#define InterlockedOr16Release _InterlockedOr16_rel#endif // _M_ARM
#define InterlockedOr64 _InterlockedOr64#ifdef _M_ARM#define InterlockedOrAcquire64 _InterlockedOr64_acq#define InterlockedOrRelease64 _InterlockedOr64_rel#define InterlockedOrNoFence64 _InterlockedOr64_nf#elif defined(_M_IA64) || defined(_M_AMD64)#define InterlockedOr64Acquire __ACQ_(_InterlockedOr64)#define InterlockedOr64Release __REL_(_InterlockedOr64)#define InterlockedOr64NoFence __NF_(_InterlockedOr64)#endif // _M_ARM
#ifdef _WIN64#define InterlockedOrAffinity InterlockedOr64#else#define InterlockedOrAffinity InterlockedOr#endif // _WIN64
#define InterlockedXor _InterlockedXor#define InterlockedXorAcquire __ACQ_(_InterlockedXor)#define InterlockedXorRelease __REL_(_InterlockedXor)#define InterlockedXorNoFence __NF_(_InterlockedXor)
#define InterlockedXor8 _InterlockedXor8#ifdef _M_ARM#define InterlockedXorAcquire8 _InterlockedXor8_acq#define InterlockedXorRelease8 _InterlockedXor8_rel#define InterlockedXorNoFence8 _InterlockedXor8_nf#elif defined(_M_IA64)#define InterlockedXor8Acquire _InterlockedXor8_acq#define InterlockedXor8Release _InterlockedXor8_rel#endif /* _M_ARM */
#define InterlockedXor16 _InterlockedXor16#ifdef _M_ARM#define InterlockedXorAcquire16 _InterlockedXor16_acq#define InterlockedXorRelease16 _InterlockedXor16_rel#define InterlockedXorNoFence16 _InterlockedXor16_nf#elif defined(_M_IA64)#define InterlockedXor16Acquire _InterlockedXor16_acq#define InterlockedXor16Release _InterlockedXor16_rel#endif /* _M_ARM */
#define InterlockedXor64 _InterlockedXor64#ifdef _M_ARM#define InterlockedXorAcquire64 _InterlockedXor64_acq#define InterlockedXorRelease64 _InterlockedXor64_rel#define InterlockedXorNoFence64 _InterlockedXor64_nf#elif defined(_M_IA64) || defined(_M_AMD64)#define InterlockedXor64Acquire __ACQ_(_InterlockedXor64)#define InterlockedXor64Release __REL_(_InterlockedXor64)#define InterlockedXor64NoFence __NF_(_InterlockedXor64)#endif /* _M_ARM */
#ifdef _M_IX86
#undef _InterlockedExchange64#define _InterlockedExchange64 _InlineInterlockedExchange64FORCEINLINELONG64_InlineInterlockedExchange64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value){ LONG64 Old, Prev; for (Old = *Target; ; Old = Prev) { Prev = _InterlockedCompareExchange64(Target, Value, Old); if (Prev == Old) return Prev; }}
#undef _InterlockedAdd64#define _InterlockedAdd64 _InlineInterlockedAdd64FORCEINLINELONG64_InlineInterlockedAdd64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value){ LONG64 Old, Prev, New; for (Old = *Target; ; Old = Prev) { New = Old + Value; Prev = _InterlockedCompareExchange64(Target, New, Old); if (Prev == Old) return New; }}
#undef _InterlockedExchangeAdd64#define _InterlockedExchangeAdd64 _InlineInterlockedExchangeAdd64FORCEINLINELONG64_InlineInterlockedExchangeAdd64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value ){ LONG64 Old, Prev, New; for (Old = *Target; ; Old = Prev) { New = Old + Value; Prev = _InterlockedCompareExchange64(Target, New, Old); if (Prev == Old) return Prev; }}
#undef _InterlockedAnd64#define _InterlockedAnd64 _InlineInterlockedAnd64FORCEINLINELONG64_InlineInterlockedAnd64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value){ LONG64 Old, Prev, New; for (Old = *Target; ; Old = Prev) { New = Old & Value; Prev = _InterlockedCompareExchange64(Target, New, Old); if (Prev == Old) return New; }}
#undef _InterlockedOr64#define _InterlockedOr64 _InlineInterlockedOr64FORCEINLINELONG64_InlineInterlockedOr64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value){ LONG64 Old, Prev, New; for (Old = *Target; ; Old = Prev) { New = Old | Value; Prev = _InterlockedCompareExchange64(Target, New, Old); if (Prev == Old) return New; }}
#undef _InterlockedXor64#define _InterlockedXor64 _InlineInterlockedXor64FORCEINLINELONG64_InlineInterlockedXor64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value){ LONG64 Old, Prev, New; for (Old = *Target; ; Old = Prev) { New = Old ^ Value; Prev = _InterlockedCompareExchange64(Target, New, Old); if (Prev == Old) return New; }}
#undef _InterlockedIncrement64#define _InterlockedIncrement64 _InlineInterlockedIncrement64FORCEINLINELONG64_InlineInterlockedIncrement64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target){ return _InterlockedAdd64(Target, 1);}
#undef _InterlockedDecrement64#define _InterlockedDecrement64 _InlineInterlockedDecrement64FORCEINLINELONG64_InlineInterlockedDecrement64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target){ return _InterlockedAdd64(Target, -1);}
#undef _InterlockedExchangePointer#define _InterlockedExchangePointer _InlineInterlockedExchangePointerFORCEINLINE_Ret_writes_(_Inexpressible_(Unknown))PVOID_InterlockedExchangePointer( _Inout_ _At_(*Destination, _Pre_writable_byte_size_(_Inexpressible_(Unknown)) _Post_writable_byte_size_(_Inexpressible_(Unknown))) _Interlocked_operand_ volatile PVOID *Destination, _In_opt_ PVOID Value){ return (PVOID)InterlockedExchange((volatile long *)Destination, (long)Value);}
#undef _InterlockedCompareExchangePointer#define _InterlockedCompareExchangePointer _InlineInterlockedCompareExchangePointerFORCEINLINE_Ret_writes_(_Inexpressible_(Unknown))PVOID_InterlockedCompareExchangePointer( _Inout_ _At_(*Destination, _Pre_writable_byte_size_(_Inexpressible_(Unknown)) _Post_writable_byte_size_(_Inexpressible_(Unknown))) _Interlocked_operand_ volatile PVOID *Destination, _In_opt_ PVOID ExChange, _In_opt_ PVOID Comperand){ return (PVOID)InterlockedCompareExchange((volatile long *)Destination, (long)ExChange, (long)Comperand);}
#endif /* _M_IX86 */
#ifdef _M_AMD64
FORCEINLINELONG64_InterlockedAdd64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value)
{ return _InterlockedExchangeAdd64(Target, Value) + Value;}
#endif /* _M_AMD64 */
#ifdef _M_IA64
#undef _InterlockedBitTestAndSet#define _InterlockedBitTestAndSet InterlockedBitTestAndSet_InlineFORCEINLINEBOOLEAN_InterlockedBitTestAndSet( _Inout_ _Interlocked_operand_ volatile LONG *Target, _In_ LONG Bit){ ULONG Mask = 1 << (Bit & 31); return (BOOLEAN)((InterlockedOr(&Target[Bit / 32], Mask) & Mask) != 0);}
#undef _InterlockedBitTestAndReset#define _InterlockedBitTestAndReset InterlockedBitTestAndReset_InlineFORCEINLINEBOOLEAN_InterlockedBitTestAndReset( _Inout_ _Interlocked_operand_ volatile LONG *Target, _In_ LONG Bit){ ULONG Mask = 1 << (Bit & 31); return (BOOLEAN)((InterlockedAnd(&Target[Bit / 32], ~Mask) & Mask) != 0);}
#undef _InterlockedBitTestAndSet64#define _InterlockedBitTestAndSet64 InterlockedBitTestAndSet64_InlineFORCEINLINEBOOLEAN_InterlockedBitTestAndSet64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Bit){ ULONG64 Mask = 1LL << (Bit & 63); return (BOOLEAN)((InterlockedOr64(&Target[Bit / 64], Mask) & Mask) != 0);}
#undef _InterlockedBitTestAndReset64#define _InterlockedBitTestAndReset64 InterlockedBitTestAndReset64_InlineFORCEINLINEBOOLEAN_InterlockedBitTestAndReset64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Bit){ ULONG64 Mask = 1LL << (Bit & 63); return (BOOLEAN)((InterlockedAnd64(&Target[Bit / 64], ~Mask) & Mask) != 0);}
#undef _InterlockedBitTestAndComplement#define _InterlockedBitTestAndComplement InterlockedBitTestAndComplement_InlineFORCEINLINEBOOLEAN_InterlockedBitTestAndComplement( _Inout_ _Interlocked_operand_ volatile LONG *Target, _In_ LONG Bit){ ULONG Mask = 1 << (Bit & 31); return (BOOLEAN)((InterlockedXor(&Target[Bit / 32], Mask) & Mask) != 0);}
#undef _InterlockedBitTestAndComplement64#define _InterlockedBitTestAndComplement64 InterlockedBitTestAndComplement64_InlineFORCEINLINEBOOLEAN_InterlockedBitTestAndComplement64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Bit){ ULONG64 Mask = 1LL << (Bit & 63); return (BOOLEAN)((InterlockedXor64(&Target[Bit / 64], Mask) & Mask) != 0);}
#endif /* M_IA64 */