From e4059c1b812410bd96481cc60c86c67f8733b66f Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Mon, 22 Nov 2010 22:23:02 -0500 Subject: [PATCH] vol: Move VOL_CV_TIMEDWAIT to volume_inline.h 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 Tested-by: BuildBot --- src/vol/volume.h | 30 ------------------------------ src/vol/volume_inline.h | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/src/vol/volume.h b/src/vol/volume.h index 1bc2cde33..598283ed6 100644 --- a/src/vol/volume.h +++ b/src/vol/volume.h @@ -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) diff --git a/src/vol/volume_inline.h b/src/vol/volume_inline.h index b270a001e..b6f92cdce 100644 --- a/src/vol/volume_inline.h +++ b/src/vol/volume_inline.h @@ -17,6 +17,38 @@ # 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. -- 2.39.5