Mailing List Archive

r2533 - trunk/varnish-cache/bin/varnishd
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)))