ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libeio/ecb.h
(Generate patch)

Comparing libeio/ecb.h (file contents):
Revision 1.4 by root, Mon Jul 18 01:27:03 2011 UTC vs.
Revision 1.5 by root, Sun Jul 24 03:32:54 2011 UTC

66/*****************************************************************************/ 66/*****************************************************************************/
67 67
68#ifndef ECB_MEMORY_FENCE 68#ifndef ECB_MEMORY_FENCE
69 #if ECB_GCC_VERSION(2,5) 69 #if ECB_GCC_VERSION(2,5)
70 #if __x86 70 #if __x86
71 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("lock; or.b $0, -1(%%esp)" : : : "memory") 71 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("lock; orb $0, -1(%%esp)" : : : "memory")
72 #define ECB_MEMORY_FENCE_ACQUIRE ECB_MEMORY_FENCE 72 #define ECB_MEMORY_FENCE_ACQUIRE ECB_MEMORY_FENCE
73 #define ECB_MEMORY_FENCE_RELEASE ECB_MEMORY_FENCE /* better be safe than sorry */ 73 #define ECB_MEMORY_FENCE_RELEASE ECB_MEMORY_FENCE /* better be safe than sorry */
74 #elif __amd64 74 #elif __amd64
75 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mfence" : : : "memory") 75 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mfence" : : : "memory")
76 #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("lfence" : : : "memory") 76 #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("lfence" : : : "memory")
82#ifndef ECB_MEMORY_FENCE 82#ifndef ECB_MEMORY_FENCE
83 #if ECB_GCC_VERSION(4,4) 83 #if ECB_GCC_VERSION(4,4)
84 #define ECB_MEMORY_FENCE __sync_synchronize () 84 #define ECB_MEMORY_FENCE __sync_synchronize ()
85 #define ECB_MEMORY_FENCE_ACQUIRE ({ char dummy = 0; __sync_lock_test_and_set (&dummy, 1); }) 85 #define ECB_MEMORY_FENCE_ACQUIRE ({ char dummy = 0; __sync_lock_test_and_set (&dummy, 1); })
86 #define ECB_MEMORY_FENCE_RELEASE ({ char dummy = 1; __sync_lock_release (&dummy ); }) 86 #define ECB_MEMORY_FENCE_RELEASE ({ char dummy = 1; __sync_lock_release (&dummy ); })
87 #elif _MSC_VER >= 1400 87 #elif _MSC_VER >= 1400 && 0 /* TODO: only true when using volatiles */
88 #define ECB_MEMORY_FENCE do { } while (0) 88 #define ECB_MEMORY_FENCE do { } while (0)
89 #define ECB_MEMORY_FENCE_ACQUIRE ECB_MEMORY_FENCE 89 #define ECB_MEMORY_FENCE_ACQUIRE ECB_MEMORY_FENCE
90 #define ECB_MEMORY_FENCE_RELEASE ECB_MEMORY_FENCE 90 #define ECB_MEMORY_FENCE_RELEASE ECB_MEMORY_FENCE
91 #elif defined(_WIN32) && defined(MemoryBarrier) 91 #elif defined(_WIN32) && defined(MemoryBarrier)
92 #define ECB_MEMORY_FENCE MemoryBarrier () 92 #define ECB_MEMORY_FENCE MemoryBarrier ()

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines