r2533 - trunk/varnish-cache/bin/varnishd

phk at projects.linpro.no phk at projects.linpro.no
Sat Feb 23 20:48:12 CET 2008


Author: phk
Date: 2008-02-23 20:48:11 +0100 (Sat, 23 Feb 2008)
New Revision: 2533

Modified:
   trunk/varnish-cache/bin/varnishd/cache.h
Log:
Introduce a TRYLOCK() macro, and remove two ';' which could cause grief.


Modified: trunk/varnish-cache/bin/varnishd/cache.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache.h	2008-02-23 19:43:57 UTC (rev 2532)
+++ trunk/varnish-cache/bin/varnishd/cache.h	2008-02-23 19:48:11 UTC (rev 2533)
@@ -595,29 +595,39 @@
 #define MTX			pthread_mutex_t
 #define MTX_INIT(foo)		AZ(pthread_mutex_init(foo, NULL))
 #define MTX_DESTROY(foo)	AZ(pthread_mutex_destroy(foo))
-#define LOCK(foo) 					\
-do { 							\
-	if (!(params->diag_bitmap & 0x18)) {		\
-		AZ(pthread_mutex_lock(foo)); 		\
-	} else if (pthread_mutex_trylock(foo)) {	\
-		VSL(SLT_Debug, 0,			\
-		    "MTX_CONTEST(%s,%s,%d," #foo ")",	\
-		    __func__, __FILE__, __LINE__);	\
-		AZ(pthread_mutex_lock(foo)); 		\
-	} else if (params->diag_bitmap & 0x8) {		\
-		VSL(SLT_Debug, 0,			\
-		    "MTX_LOCK(%s,%s,%d," #foo ")",	\
-		    __func__, __FILE__, __LINE__); 	\
-	}						\
-} while (0);
-#define UNLOCK(foo)					\
-do {							\
-	AZ(pthread_mutex_unlock(foo));			\
-	if (params->diag_bitmap & 0x8)			\
-		VSL(SLT_Debug, 0,			\
-		    "MTX_UNLOCK(%s,%s,%d," #foo ")",	\
-		    __func__, __FILE__, __LINE__);	\
-} while (0);
+#define TRYLOCK(foo, r)						\
+do {								\
+	(r) = pthread_mutex_trylock(foo);			\
+	assert((r) == 0 || errno == EBUSY);			\
+	if (params->diag_bitmap & 0x8) {			\
+		VSL(SLT_Debug, 0,				\
+		    "MTX_TRYLOCK(%s,%s,%d," #foo ") = %d",	\
+		    __func__, __FILE__, __LINE__, (r));		\
+	}							\
+} while (0)
+#define LOCK(foo) 						\
+do { 								\
+	if (!(params->diag_bitmap & 0x18)) {			\
+		AZ(pthread_mutex_lock(foo)); 			\
+	} else if (pthread_mutex_trylock(foo)) {		\
+		VSL(SLT_Debug, 0,				\
+		    "MTX_CONTEST(%s,%s,%d," #foo ")",		\
+		    __func__, __FILE__, __LINE__);		\
+		AZ(pthread_mutex_lock(foo)); 			\
+	} else if (params->diag_bitmap & 0x8) {			\
+		VSL(SLT_Debug, 0,				\
+		    "MTX_LOCK(%s,%s,%d," #foo ")",		\
+		    __func__, __FILE__, __LINE__); 		\
+	}							\
+} while (0)
+#define UNLOCK(foo)						\
+do {								\
+	AZ(pthread_mutex_unlock(foo));				\
+	if (params->diag_bitmap & 0x8)				\
+		VSL(SLT_Debug, 0,				\
+		    "MTX_UNLOCK(%s,%s,%d," #foo ")",		\
+		    __func__, __FILE__, __LINE__);		\
+} while (0)
 
 #if defined(HAVE_PTHREAD_MUTEX_ISOWNED_NP)
 #define ALOCKED(mutex)		AN(pthread_mutex_isowned_np((mutex)))




More information about the varnish-commit mailing list