From: Derrick Brashear Date: Mon, 4 Jan 2010 22:57:30 +0000 (-0500) Subject: linux kernel lacks uintptr X-Git-Tag: openafs-stable-1_4_12pre1~1 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=2556d49ec5115419fb1db0b7e2f55a191e0e53d7;p=packages%2Fo%2Fopenafs.git linux kernel lacks uintptr sadly only recent kernels include uintptr_t. change the cast to use unsigned long Change-Id: Ib69f7aa0f2d316c5ea8bdc960b15ee0f89f96250 Reviewed-on: http://gerrit.openafs.org/1059 Reviewed-by: Simon Wilkinson Tested-by: Derrick Brashear Reviewed-by: Derrick Brashear (cherry picked from commit 165571947be770645900bb8d55ba7b6a3c58f8fd) Reviewed-on: http://gerrit.openafs.org/1081 --- diff --git a/acinclude.m4 b/acinclude.m4 index b76f8d6f7..65380560d 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1419,6 +1419,10 @@ else AC_MSG_RESULT(no) fi +AC_CHECK_SIZEOF(void *) +AC_CHECK_SIZEOF(unsigned long long) +AC_CHECK_SIZEOF(unsigned long) +AC_CHECK_SIZEOF(unsigned int) AC_CHECK_TYPE(ssize_t, int) AC_SIZEOF_TYPE(long) diff --git a/src/afs/afs_call.c b/src/afs/afs_call.c index 3b2b4a031..5e0058cab 100644 --- a/src/afs/afs_call.c +++ b/src/afs/afs_call.c @@ -1396,13 +1396,22 @@ struct iparam32 { #if defined(AFS_HPUX_64BIT_ENV) || defined(AFS_SUN57_64BIT_ENV) || (defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)) || defined(NEED_IOCTL32) +#if SIZEOF_VOID_P == SIZEOF_UNSIGNED_INT +# define uintptrsz unsigned int +#elif SIZEOF_VOID_P == SIZEOF_UNSIGNED_LONG +# define uintptrsz unsigned long +#elif SIZEOF_VOID_P == SIZEOF_UNSIGNED_LONG_LONG +# define uintptrsz unsigned long long +#else +# error "Unable to determine casting for pointers" +#endif static void iparam32_to_iparam(const struct iparam32 *src, struct iparam *dst) { - dst->param1 = (iparmtype)(uintptr_t)src->param1; - dst->param2 = (iparmtype)(uintptr_t)src->param2; - dst->param3 = (iparmtype)(uintptr_t)src->param3; - dst->param4 = (iparmtype)(uintptr_t)src->param4; + dst->param1 = (iparmtype)(uintptrsz)src->param1; + dst->param2 = (iparmtype)(uintptrsz)src->param2; + dst->param3 = (iparmtype)(uintptrsz)src->param3; + dst->param4 = (iparmtype)(uintptrsz)src->param4; } #endif