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 <sxw@inf.ed.ac.uk>
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit 165571947be770645900bb8d55ba7b6a3c58f8fd)
Reviewed-on: http://gerrit.openafs.org/1081
This commit is contained in:
Derrick Brashear 2010-01-04 17:57:30 -05:00 committed by Derrick Brashear
parent cda65cda6e
commit 2556d49ec5
2 changed files with 17 additions and 4 deletions

View File

@ -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)

View File

@ -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