r5052 - in branches/2.1: . varnish-cache/bin/varnishd varnish-cache/bin/varnishtest/tests varnish-cache/include varnish-cache/lib/libvarnish varnish-cache/lib/libvcl

tfheen at varnish-cache.org tfheen at varnish-cache.org
Wed Jul 28 13:04:31 CEST 2010


Author: tfheen
Date: 2010-07-28 13:04:31 +0200 (Wed, 28 Jul 2010)
New Revision: 5052

Modified:
   branches/2.1/
   branches/2.1/varnish-cache/bin/varnishd/cache_backend.h
   branches/2.1/varnish-cache/bin/varnishd/cache_backend_cfg.c
   branches/2.1/varnish-cache/bin/varnishd/vparam.h
   branches/2.1/varnish-cache/bin/varnishtest/tests/c00019.vtc
   branches/2.1/varnish-cache/bin/varnishtest/tests/r00325.vtc
   branches/2.1/varnish-cache/bin/varnishtest/tests/r00416.vtc
   branches/2.1/varnish-cache/bin/varnishtest/tests/v00011.vtc
   branches/2.1/varnish-cache/include/vct.h
   branches/2.1/varnish-cache/include/vev.h
   branches/2.1/varnish-cache/include/vmb.h
   branches/2.1/varnish-cache/lib/libvarnish/tcp.c
   branches/2.1/varnish-cache/lib/libvarnish/vev.c
   branches/2.1/varnish-cache/lib/libvcl/vcc_dir_random.c
Log:
Merge r4912: Revisit the memory barriers

Try to catch some common platforms with inline assembler.

I cannot possibly express the magnitude of this particular POSIX FAIL!




Property changes on: branches/2.1
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk:4637,4640,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk:4637,4640,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048


Property changes on: branches/2.1/varnish-cache/bin/varnishd/cache_backend.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/bin/varnishd/cache_backend.h:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/bin/varnishd/cache_backend.h:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048


Property changes on: branches/2.1/varnish-cache/bin/varnishd/cache_backend_cfg.c
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/bin/varnishd/cache_backend_cfg.c:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/bin/varnishd/cache_backend_cfg.c:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048


Property changes on: branches/2.1/varnish-cache/bin/varnishd/vparam.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/bin/varnishd/vparam.h:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/bin/varnishd/vparam.h:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048


Property changes on: branches/2.1/varnish-cache/bin/varnishtest/tests/c00019.vtc
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/bin/varnishtest/tests/c00019.vtc:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/bin/varnishtest/tests/c00019.vtc:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048


Property changes on: branches/2.1/varnish-cache/bin/varnishtest/tests/r00325.vtc
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/bin/varnishtest/tests/r00325.vtc:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/bin/varnishtest/tests/r00325.vtc:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048


Property changes on: branches/2.1/varnish-cache/bin/varnishtest/tests/r00416.vtc
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/bin/varnishtest/tests/r00416.vtc:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/bin/varnishtest/tests/r00416.vtc:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048


Property changes on: branches/2.1/varnish-cache/bin/varnishtest/tests/v00011.vtc
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/bin/varnishtest/tests/v00011.vtc:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/bin/varnishtest/tests/v00011.vtc:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048


Property changes on: branches/2.1/varnish-cache/include/vct.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/include/vct.h:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/include/vct.h:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048


Property changes on: branches/2.1/varnish-cache/include/vev.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/include/vev.h:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/include/vev.h:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048

Modified: branches/2.1/varnish-cache/include/vmb.h
===================================================================
--- branches/2.1/varnish-cache/include/vmb.h	2010-07-28 10:58:20 UTC (rev 5051)
+++ branches/2.1/varnish-cache/include/vmb.h	2010-07-28 11:04:31 UTC (rev 5052)
@@ -29,6 +29,10 @@
  *
  * Memory barriers
  *
+ * XXX: It is utterly braindamaged, that no standard facility for this
+ * XXX: is available.  The "just use pthreads locking" excuse does not
+ * XXX: make sense, and does not apply to two unthreaded programs sharing
+ * XXX: a memory segment.
  */
 
 #ifndef VMB_H_INCLUDED
@@ -37,15 +41,43 @@
 void vmb_pthread(void);
 
 #if defined(__FreeBSD__) && __FreeBSD_version >= 800058
+
 #include <sys/types.h>
 #include <machine/atomic.h>
-#define VMB()		mb()
-#define VWMB()		wmb()
-#define VRMB()		rmb()
+#define VMB()	mb()
+#define VWMB()	wmb()
+#define VRMB()	rmb()
+
+#elif defined(__amd64__) && defined(__GNUC__)
+
+#define VMB()	__asm __volatile("mfence;" : : : "memory")
+#define VWMB()	__asm __volatile("sfence;" : : : "memory")
+#define VRMB()	__asm __volatile("lfence;" : : : "memory")
+
+#elif defined(__arm__)
+
+#define VMB()	
+#define VWMB()	
+#define VRMB()	
+
+#elif defined(__i386__) && defined(__GNUC__)
+
+#define VMB()	__asm __volatile("lock; addl $0,(%%esp)" : : : "memory")
+#define VWMB()	__asm __volatile("lock; addl $0,(%%esp)" : : : "memory")
+#define VRMB()	__asm __volatile("lock; addl $0,(%%esp)" : : : "memory")
+
+#elif defined(__sparc64__) && defined(__GNUC__)
+
+#define VMB()	__asm__ __volatile__ ("membar #MemIssue": : :"memory")
+#define VWMB()	VMB()
+#define VRMB()	VMB()
+
 #else
-#define VMB()		vmb_pthread()
-#define VWMB()		vmb_pthread()
-#define VRMB()		vmb_pthread()
+
+#define VMB()	vmb_pthread()
+#define VWMB()	vmb_pthread()
+#define VRMB()	vmb_pthread()
+
 #endif
 
 #endif /* VMB_H_INCLUDED */


Property changes on: branches/2.1/varnish-cache/lib/libvarnish/tcp.c
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/lib/libvarnish/tcp.c:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/lib/libvarnish/tcp.c:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048


Property changes on: branches/2.1/varnish-cache/lib/libvarnish/vev.c
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/lib/libvarnish/vev.c:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/lib/libvarnish/vev.c:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048


Property changes on: branches/2.1/varnish-cache/lib/libvcl/vcc_dir_random.c
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/varnish-cache/lib/libvcl/vcc_dir_random.c:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048
   + /trunk/varnish-cache/lib/libvcl/vcc_dir_random.c:4637,4643-4650,4654-4670,4686,4689-4690,4700,4712,4715-4719,4731,4749-4750,4757-4758,4762,4783,4818,4823,4829,4842,4859-4861,4864-4868,4912,4967-4968,4971,4973-4975,4977,4979-4981,4989,5016,5048




More information about the varnish-commit mailing list