From: Phil Sorber Date: Thu, 5 Oct 2017 19:36:43 +0000 (-0600) Subject: Remove custom memory barriers from header_rewrite and replace with std::atomic X-Git-Tag: archive/raspbian/8.0.2+ds-1+rpi1~1^2^2^2^2^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ecaaaf033ef274d7c07495796a4e617bf886f28e;p=trafficserver.git Remove custom memory barriers from header_rewrite and replace with std::atomic Gbp-Pq: Name 0010-Remove-custom-memory-barriers-from-header_rewrite-an.patch --- diff --git a/plugins/header_rewrite/conditions.cc b/plugins/header_rewrite/conditions.cc index d72bfbdd..46746e37 100644 --- a/plugins/header_rewrite/conditions.cc +++ b/plugins/header_rewrite/conditions.cc @@ -24,6 +24,7 @@ #include #include #include +#include #include "ts/ts.h" @@ -174,7 +175,7 @@ ConditionAccess::eval(const Resources & /* res ATS_UNUSED */) bool check = !access(_qualifier.c_str(), R_OK); tv.tv_sec += 2; - mb(); + std::atomic_thread_fence(std::memory_order_seq_cst); _next = tv.tv_sec; // I hope this is an atomic "set"... _last = check; // This sure ought to be } diff --git a/plugins/header_rewrite/lulu.h b/plugins/header_rewrite/lulu.h index 76883713..b66ee724 100644 --- a/plugins/header_rewrite/lulu.h +++ b/plugins/header_rewrite/lulu.h @@ -33,39 +33,6 @@ std::string getIP(sockaddr const *s_sockaddr); char *getIP(sockaddr const *s_sockaddr, char res[INET6_ADDRSTRLEN]); uint16_t getPort(sockaddr const *s_sockaddr); -// Memory barriers -#if defined(__i386__) -#define mb() __asm__ __volatile__("lock; addl $0,0(%%esp)" : : : "memory") -#define rmb() __asm__ __volatile__("lock; addl $0,0(%%esp)" : : : "memory") -#define wmb() __asm__ __volatile__("" : : : "memory") -#elif defined(__x86_64__) -#define mb() __asm__ __volatile__("mfence" : : : "memory") -#define rmb() __asm__ __volatile__("lfence" : : : "memory") -#define wmb() __asm__ __volatile__("" : : : "memory") -#elif defined(__mips__) -#define mb() __asm__ __volatile__("sync" : : : "memory") -#define rmb() __asm__ __volatile__("sync" : : : "memory") -#define wmb() __asm__ __volatile__("" : : : "memory") -#elif defined(__arm__) -#define mb() __asm__ __volatile__("dmb" : : : "memory") -#define rmb() __asm__ __volatile__("dmb" : : : "memory") -#define wmb() __asm__ __volatile__("" : : : "memory") -#elif defined(__mips__) -#define mb() __asm__ __volatile__("sync" : : : "memory") -#define rmb() __asm__ __volatile__("sync" : : : "memory") -#define wmb() __asm__ __volatile__("" : : : "memory") -#elif defined(__powerpc64__) -#define mb() __asm__ __volatile__("sync" : : : "memory") -#define rmb() __asm__ __volatile__("sync" : : : "memory") -#define wmb() __asm__ __volatile__("sync" : : : "memory") -#elif defined(__aarch64__) -#define mb() __asm__ __volatile__("dsb sy" : : : "memory") -#define rmb() __asm__ __volatile__("dsb ld" : : : "memory") -#define wmb() __asm__ __volatile__("dsb st" : : : "memory") -#else -#error "Define barriers" -#endif - extern const char PLUGIN_NAME[]; extern const char PLUGIN_NAME_DBG[];