… | |
… | |
567 | #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("sfence") /* play safe - not needed in any current cpu */ |
567 | #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("sfence") /* play safe - not needed in any current cpu */ |
568 | #elif __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__ |
568 | #elif __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__ |
569 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory") |
569 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory") |
570 | #elif defined(__ARM_ARCH_6__ ) || defined(__ARM_ARCH_6J__ ) \ |
570 | #elif defined(__ARM_ARCH_6__ ) || defined(__ARM_ARCH_6J__ ) \ |
571 | || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__) |
571 | || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__) |
572 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mcr p15,0,%0,c7,c10,5" : : "r" (0) : "memory") |
572 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mcr p15,0,%0,c7,c10,5" : : "r" (0) : "memory") |
573 | #elif defined(__ARM_ARCH_7__ ) || defined(__ARM_ARCH_7A__ ) \ |
573 | #elif defined(__ARM_ARCH_7__ ) || defined(__ARM_ARCH_7A__ ) \ |
574 | || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7R__ ) |
574 | || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7R__ ) |
575 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("dmb" : : : "memory") |
575 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("dmb" : : : "memory") |
576 | #elif __sparc || __sparc__ |
576 | #elif __sparc || __sparc__ |
577 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad | #StoreStore | #StoreLoad | " : : : "memory") |
577 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad | #StoreStore | #StoreLoad | " : : : "memory") |
578 | #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad" : : : "memory") |
578 | #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad" : : : "memory") |
579 | #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("membar #LoadStore | #StoreStore") |
579 | #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("membar #LoadStore | #StoreStore") |
580 | #elif defined(__s390__) || defined(__s390x__) |
580 | #elif defined(__s390__) || defined(__s390x__) |
581 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("bcr 15,0" : : : "memory") |
581 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("bcr 15,0" : : : "memory") |
|
|
582 | #elif defined(__mips__) |
|
|
583 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory") |
582 | #endif |
584 | #endif |
583 | #endif |
585 | #endif |
584 | #endif |
586 | #endif |
585 | |
587 | |
586 | #ifndef ECB_MEMORY_FENCE |
588 | #ifndef ECB_MEMORY_FENCE |
… | |
… | |
599 | #elif __SUNPRO_C >= 0x5110 || __SUNPRO_CC >= 0x5110 |
601 | #elif __SUNPRO_C >= 0x5110 || __SUNPRO_CC >= 0x5110 |
600 | #include <mbarrier.h> |
602 | #include <mbarrier.h> |
601 | #define ECB_MEMORY_FENCE __machine_rw_barrier () |
603 | #define ECB_MEMORY_FENCE __machine_rw_barrier () |
602 | #define ECB_MEMORY_FENCE_ACQUIRE __machine_r_barrier () |
604 | #define ECB_MEMORY_FENCE_ACQUIRE __machine_r_barrier () |
603 | #define ECB_MEMORY_FENCE_RELEASE __machine_w_barrier () |
605 | #define ECB_MEMORY_FENCE_RELEASE __machine_w_barrier () |
|
|
606 | #elif __xlC__ |
|
|
607 | #define ECB_MEMORY_FENCE __sync () |
604 | #endif |
608 | #endif |
605 | #endif |
609 | #endif |
606 | |
610 | |
607 | #ifndef ECB_MEMORY_FENCE |
611 | #ifndef ECB_MEMORY_FENCE |
608 | #if !ECB_AVOID_PTHREADS |
612 | #if !ECB_AVOID_PTHREADS |
… | |
… | |
1871 | /* win32 people keep sending patches that change this write() to send() */ |
1875 | /* win32 people keep sending patches that change this write() to send() */ |
1872 | /* and then run away. but send() is wrong, it wants a socket handle on win32 */ |
1876 | /* and then run away. but send() is wrong, it wants a socket handle on win32 */ |
1873 | /* so when you think this write should be a send instead, please find out */ |
1877 | /* so when you think this write should be a send instead, please find out */ |
1874 | /* where your send() is from - it's definitely not the microsoft send, and */ |
1878 | /* where your send() is from - it's definitely not the microsoft send, and */ |
1875 | /* tell me. thank you. */ |
1879 | /* tell me. thank you. */ |
|
|
1880 | /* it might be that your problem is that your environment needs EV_USE_WSASOCKET */ |
|
|
1881 | /* check the ev documentation on how to use this flag */ |
1876 | write (evpipe [1], &(evpipe [1]), 1); |
1882 | write (evpipe [1], &(evpipe [1]), 1); |
1877 | } |
1883 | } |
1878 | |
1884 | |
1879 | errno = old_errno; |
1885 | errno = old_errno; |
1880 | } |
1886 | } |