diff -Naur umem-1.0/umem_impl.h umem-1.0.p1/umem_impl.h --- umem-1.0/umem_impl.h 2006-03-10 02:45:59.000000000 +0000 +++ umem-1.0.p1/umem_impl.h 2008-06-02 09:32:40.000000000 +0000 @@ -235,11 +235,12 @@ umem_cache_t *mt_cache; /* magazine cache */ } umem_magtype_t; -#if (defined(__PTHREAD_MUTEX_SIZE__) && __PTHREAD_MUTEX_SIZE__ >= 24) || defined(UMEM_PTHREAD_MUTEX_TOO_BIG) +#if (defined(__PTHREAD_MUTEX_SIZE__) && __PTHREAD_MUTEX_SIZE__ >= 24) || defined(UMEM_PTHREAD_MUTEX_TOO_BIG) || defined(_LP64) #define UMEM_CPU_CACHE_SIZE 128 /* must be power of 2 */ #else #define UMEM_CPU_CACHE_SIZE 64 /* must be power of 2 */ #endif + #define UMEM_CPU_PAD (UMEM_CPU_CACHE_SIZE - sizeof (mutex_t) - \ 2 * sizeof (uint_t) - 2 * sizeof (void *) - 4 * sizeof (int)) #define UMEM_CACHE_SIZE(ncpus) \ @@ -255,7 +256,7 @@ int cc_prounds; /* number of objects in previous mag */ int cc_magsize; /* number of rounds in a full mag */ int cc_flags; /* CPU-local copy of cache_flags */ -#if (!defined(_LP64) || defined(UMEM_PTHREAD_MUTEX_TOO_BIG)) && !defined(_WIN32) +#if !defined(_WIN32) /* on win32, UMEM_CPU_PAD evaluates to zero, and the MS compiler * won't allow static initialization of arrays containing structures * that contain zero size arrays */