vol: Move VOL_CV_TIMEDWAIT to volume_inline.h
authorAndrew Deason <adeason@sinenomine.net>
Tue, 23 Nov 2010 03:23:02 +0000 (22:23 -0500)
committerDerrick Brashear <shadow@dementia.org>
Thu, 25 Nov 2010 21:19:08 +0000 (13:19 -0800)
Some platforms will give errors for the vol package glock not being
defined in VOL_CV_TIMEDWAIT, since some utilities include volume.h
(with pthreaded ubik enabled) but do not have the vol glock. This
isn't a problem for the other CV_WAIT (et al) macros, since, being
macros, they are not expanded if never referenced. Since
VOL_CV_TIMEDWAIT is a static inline function, however, and at least
some platforms try to compile/link it even if it's not referenced.

So, move it to volume_inline.h, which is only used by the volume
package itself, where we will have the vol glock.

Change-Id: I3e1513869c03d16d274c23e0bbb075df85d6d3a3
Reviewed-on: http://gerrit.openafs.org/3363
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

src/vol/volume.h
src/vol/volume_inline.h

index 1bc2cde..598283e 100644 (file)
@@ -96,36 +96,6 @@ extern pthread_t vol_glock_holder;
 #define VOL_CV_WAIT(cv) CV_WAIT((cv), &vol_glock_mutex)
 #endif /* !VOL_LOCK_DEBUG */
 
-/**
- * @param[in] cv cond var
- * @param[in] ts deadline, or NULL to wait forever
- * @param[out] timedout  set to 1 if we returned due to the deadline, 0 if we
- *                       returned due to the cond var getting signalled. If
- *                       NULL, it is ignored.
- */
-static_inline void
-VOL_CV_TIMEDWAIT(pthread_cond_t *cv, const struct timespec *ts, int *timedout)
-{
-    int code;
-    if (timedout) {
-       *timedout = 0;
-    }
-    if (!ts) {
-       VOL_CV_WAIT(cv);
-       return;
-    }
-    VOL_LOCK_DBG_CV_WAIT_BEGIN;
-    code = CV_TIMEDWAIT(cv, &vol_glock_mutex, ts);
-    VOL_LOCK_DBG_CV_WAIT_END;
-    if (code == ETIMEDOUT) {
-       code = 0;
-       if (timedout) {
-           *timedout = 1;
-       }
-    }
-    osi_Assert(code == 0);
-}
-
 #define VSALVSYNC_LOCK MUTEX_ENTER(&vol_salvsync_mutex)
 #define VSALVSYNC_UNLOCK MUTEX_EXIT(&vol_salvsync_mutex)
 #define VTRANS_LOCK MUTEX_ENTER(&vol_trans_mutex)
index b270a00..b6f92cd 100644 (file)
 # include "lock.h"
 #endif
 
+#ifdef AFS_PTHREAD_ENV
+/**
+ * @param[in] cv cond var
+ * @param[in] ts deadline, or NULL to wait forever
+ * @param[out] timedout  set to 1 if we returned due to the deadline, 0 if we
+ *                       returned due to the cond var getting signalled. If
+ *                       NULL, it is ignored.
+ */
+static_inline void
+VOL_CV_TIMEDWAIT(pthread_cond_t *cv, const struct timespec *ts, int *timedout)
+{
+    int code;
+    if (timedout) {
+       *timedout = 0;
+    }
+    if (!ts) {
+       VOL_CV_WAIT(cv);
+       return;
+    }
+    VOL_LOCK_DBG_CV_WAIT_BEGIN;
+    code = CV_TIMEDWAIT(cv, &vol_glock_mutex, ts);
+    VOL_LOCK_DBG_CV_WAIT_END;
+    if (code == ETIMEDOUT) {
+       code = 0;
+       if (timedout) {
+           *timedout = 1;
+       }
+    }
+    osi_Assert(code == 0);
+}
+#endif /* AFS_PTHREAD_ENV */
+
 /**
  * tell caller whether the given program type represents a salvaging
  * program.