From 6d274905b0b87c4947df9dccc2509295e7b28d09 Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Sun, 11 Sep 2011 12:31:55 +0100 Subject: [PATCH] Unix CM: Fix afs_event fallout on Mac OS X Commit dc077b83c9b1f107efbc3483743f44117748f23c moved the afs_event structure definition into afs_osi.h. However, afs_osi.h is included from lots of places which don't include a complete set of platform headers. This means that the use of lck_mtx_t in this file breaks the build on Darwin. Instead, define the structure in afs.h, along with all of the rest of the cache manager structures. Also take the opportunity to move the definition of shutdown_osisleep it afs_prototypes.h, with the rest of the prototypes. Change-Id: Idd19fc30adcb5ab37e65ad87fa9224668e8cd321 Reviewed-on: http://gerrit.openafs.org/5392 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/afs/afs.h | 28 ++++++++++++++++++++++++++++ src/afs/afs_osi.h | 30 +----------------------------- src/afs/afs_prototypes.h | 1 + 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/src/afs/afs.h b/src/afs/afs.h index 6bf4f0e1f6..93bb776610 100644 --- a/src/afs/afs.h +++ b/src/afs/afs.h @@ -1559,4 +1559,32 @@ struct afssysa { extern int Afs_syscall(struct afssysa *uap, rval_t *rvp); #endif /* AFS_SUN5_ENV */ +/* The event hash table, and array */ + +typedef struct afs_event { + struct afs_event *next; /* next in hash chain */ + char *event; /* lwp event: an address */ + int refcount; /* Is it in use? */ + int seq; /* Sequence number: this is incremented + * by wakeup calls; wait will not return until + * it changes */ +#if defined(AFS_AIX_ENV) + tid_t cond; +#elif defined(AFS_DARWIN_ENV) +# ifdef AFS_DARWIN80_ENV + lck_mtx_t *lck; + thread_t owner; +# endif + /* no cond member */ +#elif defined(AFS_FBSD_ENV) || defined(AFS_OBSD_ENV) + int cond; /* "all this gluck should probably be replaced by CVs" */ +#elif defined(AFS_LINUX_ENV) || defined(AFS_LINUX24_ENV) + wait_queue_head_t cond; +#elif defined(AFS_NBSD_ENV) || defined(AFS_SOLARIS_ENV) || defined(AFS_SGI_ENV) + kcondvar_t cond; /* Currently associated condition variable */ +#endif +} afs_event_t; + +extern afs_event_t *afs_evhasht[AFS_EVHASHSIZE]; /* Hash table for events */ + #endif /* _AFS_H_ */ diff --git a/src/afs/afs_osi.h b/src/afs/afs_osi.h index 153017e6a5..6cea472e60 100644 --- a/src/afs/afs_osi.h +++ b/src/afs/afs_osi.h @@ -17,10 +17,6 @@ #include #endif -#ifdef AFS_SGI_ENV -#include "sys/sema.h" /* for kcondvar_t */ -#endif - #ifdef AFS_NBSD_ENV #include #endif @@ -133,31 +129,7 @@ struct afs_osi_WaitHandle { * DFBSD and SUNOS have no osi_sleep, and HPUX has its own hack for this stuff */ #define AFS_EVHASHSIZE 128 /* size of afs_evhasht, must be power of 2 */ -typedef struct afs_event { - struct afs_event *next; /* next in hash chain */ - char *event; /* lwp event: an address */ - int refcount; /* Is it in use? */ - int seq; /* Sequence number: this is incremented - * by wakeup calls; wait will not return until - * it changes */ -#if defined(AFS_AIX_ENV) - tid_t cond; -#elif defined(AFS_DARWIN_ENV) -#ifdef AFS_DARWIN80_ENV - lck_mtx_t *lck; - thread_t owner; -#endif - /* no cond member */ -#elif defined(AFS_FBSD_ENV) || defined(AFS_OBSD_ENV) - int cond; /* "all this gluck should probably be replaced by CVs" */ -#elif defined(AFS_LINUX_ENV) || defined(AFS_LINUX24_ENV) - wait_queue_head_t cond; -#elif defined(AFS_NBSD_ENV) || defined(AFS_SOLARIS_ENV) || defined(AFS_SGI_ENV) - kcondvar_t cond; /* Currently associated condition variable */ -#endif -} afs_event_t; -extern afs_event_t *afs_evhasht[AFS_EVHASHSIZE]; /* Hash table for events */ -extern void shutdown_osisleep(void); + /* diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h index dee3695803..04f13ad092 100644 --- a/src/afs/afs_prototypes.h +++ b/src/afs/afs_prototypes.h @@ -550,6 +550,7 @@ extern void afs_osi_RxkRegister(void); extern void afs_osi_Invisible(void); extern void shutdown_osi(void); extern void shutdown_osinet(void); +extern void shutdown_osisleep(void); extern int afs_osi_suser(void *credp); extern void afs_osi_TraverseProcTable(void); #if defined(KERNEL) && !defined(UKERNEL)