summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/include/msvc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/src/include/msvc.h')
-rw-r--r--src/third_party/wiredtiger/src/include/msvc.h121
1 files changed, 79 insertions, 42 deletions
diff --git a/src/third_party/wiredtiger/src/include/msvc.h b/src/third_party/wiredtiger/src/include/msvc.h
index f4d8dc942f6..232683b2af2 100644
--- a/src/third_party/wiredtiger/src/include/msvc.h
+++ b/src/third_party/wiredtiger/src/include/msvc.h
@@ -11,50 +11,44 @@
#error "Only x64 is supported with MSVC"
#endif
-#define inline __inline
+#define inline __inline
/* MSVC Doesn't provide __func__, it has __FUNCTION__ */
#ifdef _MSC_VER
-#define __func__ __FUNCTION__
+#define __func__ __FUNCTION__
#endif
-#define WT_PTRDIFFT_FMT "Id" /* ptrdiff_t format string */
-#define WT_SIZET_FMT "Iu" /* size_t format string */
+#define WT_PTRDIFFT_FMT "Id" /* ptrdiff_t format string */
+#define WT_SIZET_FMT "Iu" /* size_t format string */
/* MSVC-specific attributes. */
-#define WT_PACKED_STRUCT_BEGIN(name) \
- __pragma(pack(push,1)) \
- struct name {
+#define WT_PACKED_STRUCT_BEGIN(name) __pragma(pack(push, 1)) struct name {
-#define WT_PACKED_STRUCT_END \
- }; \
- __pragma(pack(pop))
+#define WT_PACKED_STRUCT_END \
+ } \
+ ; \
+ __pragma(pack(pop))
-#define WT_GCC_FUNC_ATTRIBUTE(x)
-#define WT_GCC_FUNC_DECL_ATTRIBUTE(x)
+#define WT_GCC_FUNC_ATTRIBUTE(x)
+#define WT_GCC_FUNC_DECL_ATTRIBUTE(x)
-#define WT_ATOMIC_FUNC(name, ret, type, s, t) \
-static inline ret \
-__wt_atomic_add##name(type *vp, type v) \
-{ \
- return (_InterlockedExchangeAdd ## s((t *)(vp), (t)(v)) + (v)); \
-} \
-static inline ret \
-__wt_atomic_fetch_add##name(type *vp, type v) \
-{ \
- return (_InterlockedExchangeAdd ## s((t *)(vp), (t)(v))); \
-} \
-static inline ret \
-__wt_atomic_sub##name(type *vp, type v) \
-{ \
- return (_InterlockedExchangeAdd ## s((t *)(vp), - (t)v) - (v)); \
-} \
-static inline bool \
-__wt_atomic_cas##name(type *vp, type old, type new) \
-{ \
- return (_InterlockedCompareExchange ## s \
- ((t *)(vp), (t)(new), (t)(old)) == (t)(old)); \
-}
+#define WT_ATOMIC_FUNC(name, ret, type, s, t) \
+ static inline ret __wt_atomic_add##name(type *vp, type v) \
+ { \
+ return (_InterlockedExchangeAdd##s((t *)(vp), (t)(v)) + (v)); \
+ } \
+ static inline ret __wt_atomic_fetch_add##name(type *vp, type v) \
+ { \
+ return (_InterlockedExchangeAdd##s((t *)(vp), (t)(v))); \
+ } \
+ static inline ret __wt_atomic_sub##name(type *vp, type v) \
+ { \
+ return (_InterlockedExchangeAdd##s((t *)(vp), -(t)v) - (v)); \
+ } \
+ static inline bool __wt_atomic_cas##name(type *vp, type old, type new) \
+ { \
+ return (_InterlockedCompareExchange##s((t *)(vp), (t)(new), (t)(old)) == (t)(old)); \
+ }
WT_ATOMIC_FUNC(8, uint8_t, uint8_t, 8, char)
WT_ATOMIC_FUNC(16, uint16_t, uint16_t, 16, short)
@@ -70,17 +64,60 @@ WT_ATOMIC_FUNC(size, size_t, size_t, 64, __int64)
/*
* __wt_atomic_cas_ptr --
- * Pointer compare and swap.
+ * Pointer compare and swap.
*/
static inline bool
__wt_atomic_cas_ptr(void *vp, void *old, void *new)
{
- return (_InterlockedCompareExchange64(
- vp, (int64_t)new, (int64_t)old) == ((int64_t)old));
+ return (_InterlockedCompareExchange64(vp, (int64_t) new, (int64_t)old) == ((int64_t)old));
}
-static inline void WT_BARRIER(void) { _ReadWriteBarrier(); }
-static inline void WT_FULL_BARRIER(void) { _mm_mfence(); }
-static inline void WT_PAUSE(void) { _mm_pause(); }
-static inline void WT_READ_BARRIER(void) { _mm_lfence(); }
-static inline void WT_WRITE_BARRIER(void) { _mm_sfence(); }
+/*
+ * WT_BARRIER --
+ * MSVC implementation of WT_BARRIER.
+ */
+static inline void
+WT_BARRIER(void)
+{
+ _ReadWriteBarrier();
+}
+
+/*
+ * WT_FULL_BARRIER --
+ * MSVC implementation of WT_FULL_BARRIER.
+ */
+static inline void
+WT_FULL_BARRIER(void)
+{
+ _mm_mfence();
+}
+
+/*
+ * WT_PAUSE --
+ * MSVC implementation of WT_PAUSE.
+ */
+static inline void
+WT_PAUSE(void)
+{
+ _mm_pause();
+}
+
+/*
+ * WT_READ_BARRIER --
+ * MSVC implementation of WT_READ_BARRIER.
+ */
+static inline void
+WT_READ_BARRIER(void)
+{
+ _mm_lfence();
+}
+
+/*
+ * WT_WRITE_BARRIER --
+ * MSVC implementation of WT_WRITE_BARRIER.
+ */
+static inline void
+WT_WRITE_BARRIER(void)
+{
+ _mm_sfence();
+}