From a81eb332756ccebf211caad5479dbf23becb7ec3 Mon Sep 17 00:00:00 2001 From: Dale Ghent Date: Thu, 28 Dec 2006 22:02:14 +0000 Subject: [PATCH] DEVEL15-add-solaris-11-support-v2-20061228 FIXES 50343 initial 5.11 support (cherry picked from commit a537d3ae9621ade7d03f289980eb340e435c0d8a) --- Makefile.in | 2 +- acinclude.m4 | 6 ++ src/cf/osconf.m4 | 43 ++++++++ src/config/afs_sysnames.h | 2 + src/config/param.sun4x_511.h | 179 ++++++++++++++++++++++++++++++++++ src/config/param.sunx86_511.h | 189 ++++++++++++++++++++++++++++++++++++ src/libafs/MakefileProto.SOLARIS.in | 18 ++-- 7 files changed, 429 insertions(+), 10 deletions(-) create mode 100644 src/config/param.sun4x_511.h create mode 100644 src/config/param.sunx86_511.h diff --git a/Makefile.in b/Makefile.in index ac1af5f..8671806 100644 --- a/Makefile.in +++ b/Makefile.in @@ -129,7 +129,7 @@ comerr: util cmd: comerr @case ${SYS_NAME} in \ - sgi_6* | sun*_5[789] | sun*_510 | hp_ux11* | ia64_hpux* | sparc64_linux* | alpha_linux* ) \ + sgi_6* | sun*_5[789] | sun*_51[01] | hp_ux11* | ia64_hpux* | sparc64_linux* | alpha_linux* ) \ ${COMPILE_PART1} cmd ${COMPILE_PART2}64 ;; \ *) \ ${COMPILE_PART1} cmd ${COMPILE_PART2} ;; \ diff --git a/acinclude.m4 b/acinclude.m4 index 646331c..252358d 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -448,6 +448,9 @@ else sparc-sun-solaris2.10) AFS_SYSNAME="sun4x_510" ;; + sparc-sun-solaris2.11) + AFS_SYSNAME="sun4x_511" + ;; sparc-sun-sunos4*) AFS_SYSNAME="sun4_413" enable_login="yes" @@ -464,6 +467,9 @@ else i386-pc-solaris2.10) AFS_SYSNAME="sunx86_510" ;; + i386-pc-solaris2.11) + AFS_SYSNAME="sunx86_511" + ;; alpha*-dec-osf4.0*) AFS_SYSNAME="alpha_dux40" ;; diff --git a/src/cf/osconf.m4 b/src/cf/osconf.m4 index d1a0790..a91a962 100644 --- a/src/cf/osconf.m4 +++ b/src/cf/osconf.m4 @@ -862,6 +862,28 @@ case $AFS_SYSNAME in LWP_OPTMZ="-g" ;; + sun4x_511) + CC="/opt/SUNWspro/bin/cc" + CCOBJ="/opt/SUNWspro/bin/cc" + LEX="lex" + LD="/usr/ccs/bin/ld" + MT_CC="/opt/SUNWspro/bin/cc" + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_LIBS="-lpthread -lsocket" + PAM_CFLAGS="-KPIC" + PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" + SHLIB_CFLAGS="-KPIC" + SHLIB_LDFLAGS="-G -Bsymbolic" + TXLIBS="-lcurses" + XCFLAGS64='${XCFLAGS} -xarch=v9' + XCFLAGS="-dy -Bdynamic" + XLIBELFA="-lelf" + XLIBKVM="-lkvm" + XLIBS="${LIB_AFSDB} -lsocket -lnsl -lintl -ldl" + SHLIB_LINKER="${CC} -G -dy -Bsymbolic -z text" + LWP_OPTMZ="-g" + ;; + sunx86_57) CC="/opt/SUNWspro/bin/cc" CCOBJ="/opt/SUNWspro/bin/cc" @@ -945,6 +967,27 @@ case $AFS_SYSNAME in XLIBS="${LIB_AFSDB} -lsocket -lnsl -lintl -ldl" SHLIB_LINKER="${CC} -G -dy -Wl,-M\$(srcdir)/mapfile -Bsymbolic -z text" ;; + + sunx86_511) + CC="/opt/SUNWspro/bin/cc" + CCOBJ="/opt/SUNWspro/bin/cc" + LEX="lex" + LD="/usr/ccs/bin/ld" + MT_CC="/opt/SUNWspro/bin/cc" + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_LIBS="-lpthread -lsocket" + PAM_CFLAGS="-KPIC" + PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" + SHLIB_CFLAGS="-KPIC" + SHLIB_LDFLAGS="-G -Bsymbolic" + TXLIBS="-lcurses" + XCFLAGS64='${XCFLAGS} -xarch=amd64' + XCFLAGS="-dy -Bdynamic" + XLIBELFA="-lelf" + XLIBKVM="-lkvm" + XLIBS="${LIB_AFSDB} -lsocket -lnsl -lintl -ldl" + SHLIB_LINKER="${CC} -G -dy -Bsymbolic -z text" + ;; esac # diff --git a/src/config/afs_sysnames.h b/src/config/afs_sysnames.h index ef1507a..b451c11 100644 --- a/src/config/afs_sysnames.h +++ b/src/config/afs_sysnames.h @@ -99,6 +99,7 @@ #define SYS_NAME_ID_sun4x_58 939 #define SYS_NAME_ID_sun4x_59 940 #define SYS_NAME_ID_sun4x_510 941 +#define SYS_NAME_ID_sun4x_511 942 /* Sigh. If I leave a gap here IBM will do this sequentially. If I don't they won't allocate sunx86 IDs at all. So leave a gap and pray. */ @@ -106,6 +107,7 @@ #define SYS_NAME_ID_sunx86_58 951 #define SYS_NAME_ID_sunx86_59 952 #define SYS_NAME_ID_sunx86_510 953 +#define SYS_NAME_ID_sunx86_511 954 #define SYS_NAME_ID_vax_ul4 1003 #define SYS_NAME_ID_vax_ul40 1004 diff --git a/src/config/param.sun4x_511.h b/src/config/param.sun4x_511.h new file mode 100644 index 0000000..118b24e --- /dev/null +++ b/src/config/param.sun4x_511.h @@ -0,0 +1,179 @@ +#ifndef UKERNEL +/* This section for kernel libafs compiles only */ + +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +#define AFS_VFS_ENV 1 +/* Used only in vfsck code; is it needed any more???? */ + +#define AFS_VFSINCL_ENV 1 /* NOBODY uses this.... */ +#define AFS_GREEDY43_ENV 1 /* Used only in rx/rx_user.c */ +#define AFS_ENV 1 +#define AFS_SUN_ENV 1 +#define AFS_SUN5_ENV 1 +#define AFS_SUN52_ENV 1 +#define AFS_SUN53_ENV 1 +#define AFS_SUN54_ENV 1 +#define AFS_SUN55_ENV 1 +#define AFS_SUN56_ENV 1 +#define AFS_SUN57_ENV 1 +#define AFS_SUN58_ENV 1 +#define AFS_SUN59_ENV 1 +#define AFS_SUN510_ENV 1 +#define AFS_SUN511_ENV 1 +#define AFS_BOZONLOCK_ENV 1 + +#define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */ +#define AFS_64BIT_CLIENT 1 + +#define AFS_HAVE_FLOCK_SYSID 1 + +#ifdef AFS_NAMEI_ENV +#define AFS_64BIT_IOPS_ENV 1 /* needed for NAMEI... */ +#else /* AFS_NAMEI_ENV */ +#define AFS_3DISPARES 1 /* Utilize the 3 available disk inode 'spares' */ +#endif /* AFS_NAMEI_ENV */ + +#include + +#define AFS_GLOBAL_SUNLOCK 1 /* For global locking */ +#define RXK_LISTENER_ENV 1 +#define AFS_GCPAGS 1 /* if nonzero, garbage collect PAGs */ + +#define AFS_SYSCALL 65 + +/* File system entry (used if mount.h doesn't define MOUNT_AFS */ +#define AFS_MOUNT_AFS "afs" + +/* Machine / Operating system information */ +#define sys_sun4x_511 1 +#define SYS_NAME "sun4x_511" +#define SYS_NAME_ID SYS_NAME_ID_sun4x_511 +#define AFSBIG_ENDIAN 1 +#define AFS_HAVE_FFS 1 /* Use system's ffs. */ +#define AFS_HAVE_VXFS 1 /* Support cache on Veritas vxfs file system */ +#define AFS_HAVE_STATVFS 1 /* System supports statvfs */ +#define AFS_VM_RDWR_ENV 1 /* read/write implemented via VM */ +#define AFS_USE_GETTIMEOFDAY 1 /* use gettimeofday to implement rx clock */ + +#define NEARINODE_HINT 1 /* hint to ufs module to scatter inodes on disk */ +#define nearInodeHash(volid, hval) { \ + unsigned char* ts = (unsigned char*)&(volid)+sizeof(volid)-1;\ + for ( (hval)=0; ts >= (unsigned char*)&(volid); ts--){\ + (hval) *= 173; \ + (hval) += *ts; \ + } \ + } + +/* Extra kernel definitions (from kdefs file) */ +#ifdef KERNEL +/* sun definitions here */ +#define AFS_UIOFMODE 1 /* Only in afs/afs_vnodeops.c (afs_ustrategy) */ +#define AFS_SYSVLOCK 1 /* sys v locking supported */ +/*#define AFS_USEBUFFERS 1*/ +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_loffset +#define afsio_seg uio_segflg +#define afsio_fmode uio_fmode +#define afsio_resid uio_resid +#define AFS_UIOSYS UIO_SYSSPACE +#define AFS_UIOUSER UIO_USERSPACE +#define AFS_CLBYTES MCLBYTES +#define AFS_MINCHANGE 2 +#define osi_GetTime(x) uniqtime32(x) + +/** + * These defines are for the 64 bit Solaris 7 port + * AFS_SYSCALL32 is used to protect the ILP32 syscall interface + * AFS_64BIT_ENV is for use of 64 bit inode numbers + */ +#if defined(__sparcv9) +#define AFS_SUN57_64BIT_ENV 1 +#define AFS_64BIT_INO 1 +#endif + +#define AFS_KALLOC(n) kmem_alloc(n, KM_SLEEP) +#define AFS_KALLOC_NOSLEEP(n) kmem_alloc(n, KM_NOSLEEP) +#define AFS_KFREE kmem_free +#define VATTR_NULL vattr_null +#endif /* KERNEL */ +#define AFS_DIRENT +#ifndef CMSERVERPREF +#define CMSERVERPREF +#endif +#define ROOTINO UFSROOTINO + +#endif /* AFS_PARAM_H */ + +#else /* !defined(UKERNEL) */ + +/* This section for user space compiles only */ + +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +#define AFS_VFS_ENV 1 +/* Used only in vfsck code; is it needed any more???? */ +#define RXK_LISTENER_ENV 1 +#define AFS_USERSPACE_IP_ADDR 1 +#define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */ + +#define UKERNEL 1 /* user space kernel */ +#define AFS_GREEDY43_ENV 1 /* Used only in rx/rx_user.c */ +#define AFS_ENV 1 +#define AFS_USR_SUN5_ENV 1 +#define AFS_USR_SUN6_ENV 1 +#define AFS_USR_SUN7_ENV 1 +#define AFS_USR_SUN8_ENV 1 +#define AFS_USR_SUN9_ENV 1 + +#define AFS_64BIT_ENV 1 + +#include + +#if 0 +#define AFS_GLOBAL_SUNLOCK 1 /* For global locking */ +#endif + +#define AFS_3DISPARES 1 /* Utilize the 3 available disk inode 'spares' */ +#define AFS_SYSCALL 65 + +/* File system entry (used if mount.h doesn't define MOUNT_AFS */ +#define AFS_MOUNT_AFS 1 + +/* Machine / Operating system information */ +#define sys_sun4x_511 1 +#define SYS_NAME "sun4x_511" +#define SYS_NAME_ID SYS_NAME_ID_sun4x_511 +#define AFSBIG_ENDIAN 1 +#define AFS_HAVE_FFS 1 /* Use system's ffs. */ +#define AFS_HAVE_STATVFS 0 /* System doesn't support statvfs */ + +/* Extra kernel definitions (from kdefs file) */ +#ifdef KERNEL +#define AFS_UIOFMODE 1 /* Only in afs/afs_vnodeops.c (afs_ustrategy) */ +#define AFS_SYSVLOCK 1 /* sys v locking supported */ +/*#define AFS_USEBUFFERS 1*/ +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_offset +#define afsio_seg uio_segflg +#define afsio_fmode uio_fmode +#define afsio_resid uio_resid +#define AFS_UIOSYS 1 +#define AFS_UIOUSER UIO_USERSPACE +#define AFS_CLBYTES MCLBYTES +#define AFS_MINCHANGE 2 +#define VATTR_NULL usr_vattr_null +#endif /* KERNEL */ +#define AFS_DIRENT +#ifndef CMSERVERPREF +#define CMSERVERPREF +#endif +#define ROOTINO UFSROOTINO + +#endif /* AFS_PARAM_H */ + +#endif /* !defined(UKERNEL) */ diff --git a/src/config/param.sunx86_511.h b/src/config/param.sunx86_511.h new file mode 100644 index 0000000..a934672 --- /dev/null +++ b/src/config/param.sunx86_511.h @@ -0,0 +1,189 @@ +#ifndef UKERNEL +/* This section for kernel libafs compiles only */ + +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +#define AFS_VFS_ENV 1 +/* Used only in vfsck code; is it needed any more???? */ + +#define AFS_VFSINCL_ENV 1 /* NOBODY uses this.... */ +#define AFS_GREEDY43_ENV 1 /* Used only in rx/rx_user.c */ +#define AFS_ENV 1 +#define AFS_SUN_ENV 1 +#define AFS_SUN5_ENV 1 +#define AFS_SUN52_ENV 1 +#define AFS_SUN53_ENV 1 +#define AFS_SUN54_ENV 1 +#define AFS_SUN55_ENV 1 +#define AFS_SUN56_ENV 1 +#define AFS_SUN57_ENV 1 +#define AFS_SUN58_ENV 1 +#define AFS_SUN59_ENV 1 +#define AFS_SUN510_ENV 1 +#define AFS_SUN511_ENV 1 +#define AFS_BOZONLOCK_ENV 1 +#define AFS_X86_ENV 1 + +#define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */ +#define AFS_64BIT_CLIENT 1 + +#define AFS_HAVE_FLOCK_SYSID 1 + +#include + +#define AFS_GLOBAL_SUNLOCK 1 /* For global locking */ +#define RXK_LISTENER_ENV 1 +#define AFS_GCPAGS 1 /* if nonzero, garbage collect PAGs */ + +#ifdef AFS_NAMEI_ENV +#define AFS_64BIT_IOPS_ENV 1 /* needed for NAMEI... */ +#else /* AFS_NAMEI_ENV */ +#define AFS_3DISPARES 1 /* Utilize the 3 available disk inode 'spares' */ +#endif /* AFS_NAMEI_ENV */ + +#define AFS_SYSCALL 65 + +/* File system entry (used if mount.h doesn't define MOUNT_AFS */ +#define AFS_MOUNT_AFS "afs" + +/* Machine / Operating system information */ +#define sys_sunx86_511 1 +#define SYS_NAME "sunx86_511" +#define SYS_NAME_ID SYS_NAME_ID_sunx86_511 +#define AFSLITTLE_ENDIAN 1 +#define AFS_HAVE_FFS 1 /* Use system's ffs. */ +#define AFS_HAVE_VXFS 1 /* Support cache on Veritas vxfs file system */ +#define AFS_HAVE_STATVFS 1 /* System supports statvfs */ +#define AFS_VM_RDWR_ENV 1 /* read/write implemented via VM */ +#define AFS_USE_GETTIMEOFDAY 1 /* use gettimeofday to implement rx clock */ + +#define NEARINODE_HINT 1 /* hint to ufs module to scatter inodes on disk */ +#define nearInodeHash(volid, hval) { \ + unsigned char* ts = (unsigned char*)&(volid)+sizeof(volid)-1;\ + for ( (hval)=0; ts >= (unsigned char*)&(volid); ts--){\ + (hval) *= 173; \ + (hval) += *ts; \ + } \ + } + +/* Extra kernel definitions (from kdefs file) */ +#ifdef KERNEL +/* sun definitions here */ +#define AFS_UIOFMODE 1 /* Only in afs/afs_vnodeops.c (afs_ustrategy) */ +#define AFS_SYSVLOCK 1 /* sys v locking supported */ +/*#define AFS_USEBUFFERS 1*/ +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_loffset +#define afsio_seg uio_segflg +#define afsio_fmode uio_fmode +#define afsio_resid uio_resid +#define AFS_UIOSYS UIO_SYSSPACE +#define AFS_UIOUSER UIO_USERSPACE +#define AFS_CLBYTES MCLBYTES +#define AFS_MINCHANGE 2 +#define osi_GetTime(x) uniqtime32(x) + +/** + * These defines are for the 64 bit Solaris 7 port + * AFS_SYSCALL32 is used to protect the ILP32 syscall interface + * AFS_64BIT_ENV is for use of 64 bit inode numbers + */ +#if defined(__amd64) +#define AFS_SUN57_64BIT_ENV 1 +#define AFS_64BIT_INO 1 +#endif + +#define AFS_KALLOC(n) kmem_alloc(n, KM_SLEEP) +#define AFS_KALLOC_NOSLEEP(n) kmem_alloc(n, KM_NOSLEEP) +#define AFS_KFREE kmem_free +#define VATTR_NULL vattr_null +#endif /* KERNEL */ +#define AFS_DIRENT +#ifndef CMSERVERPREF +#define CMSERVERPREF +#endif +#define ROOTINO UFSROOTINO + +#endif /* AFS_PARAM_H */ + +#else /* !defined(UKERNEL) */ + +/* This section for user space compiles only */ + +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +#define AFS_VFS_ENV 1 +/* Used only in vfsck code; is it needed any more???? */ +#define RXK_LISTENER_ENV 1 +#define AFS_USERSPACE_IP_ADDR 1 +#define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */ + +#define UKERNEL 1 /* user space kernel */ +#define AFS_GREEDY43_ENV 1 /* Used only in rx/rx_user.c */ +#define AFS_ENV 1 +#define AFS_USR_SUN5_ENV 1 +#define AFS_USR_SUN6_ENV 1 +#define AFS_USR_SUN7_ENV 1 +#define AFS_USR_SUN8_ENV 1 +#define AFS_USR_SUN9_ENV 1 + +#define AFS_64BIT_ENV 1 + +#include + +#if 0 +#define AFS_GLOBAL_SUNLOCK 1 /* For global locking */ +#endif + +#define AFS_3DISPARES 1 /* Utilize the 3 available disk inode 'spares' */ +#define AFS_SYSCALL 65 + +/* File system entry (used if mount.h doesn't define MOUNT_AFS */ +#define AFS_MOUNT_AFS 1 + +/* Machine / Operating system information */ +#define sys_sunx86_511 1 +#define SYS_NAME "sunx86_511" +#define SYS_NAME_ID SYS_NAME_ID_sunx86_511 +#define AFSLITTLE_ENDIAN 1 +#define AFS_HAVE_FFS 1 /* Use system's ffs. */ +#define AFS_HAVE_STATVFS 0 /* System doesn't support statvfs */ + +/* Extra kernel definitions (from kdefs file) */ +#ifdef KERNEL +#define AFS_UIOFMODE 1 /* Only in afs/afs_vnodeops.c (afs_ustrategy) */ +#define AFS_SYSVLOCK 1 /* sys v locking supported */ +/*#define AFS_USEBUFFERS 1*/ +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_offset +#define afsio_seg uio_segflg +#define afsio_fmode uio_fmode +#define afsio_resid uio_resid +#define AFS_UIOSYS 1 +#define AFS_UIOUSER UIO_USERSPACE +#define AFS_CLBYTES MCLBYTES +#define AFS_MINCHANGE 2 +#define VATTR_NULL usr_vattr_null +#endif /* KERNEL */ +#define AFS_DIRENT +#ifndef CMSERVERPREF +#define CMSERVERPREF +#endif +#define ROOTINO UFSROOTINO + +#endif /* AFS_PARAM_H */ + +#endif /* !defined(UKERNEL) */ diff --git a/src/libafs/MakefileProto.SOLARIS.in b/src/libafs/MakefileProto.SOLARIS.in index f715b9e..53ef078 100644 --- a/src/libafs/MakefileProto.SOLARIS.in +++ b/src/libafs/MakefileProto.SOLARIS.in @@ -32,11 +32,11 @@ DEFINES= -DAFSDEBUG -DKERNEL -DAFS -DVICE -DNFS -DUFS -DINET -DQUOTA -DGETMOUNT #CC = /opt/SUNWspro/bin/cc KDEFS= -D_KERNEL -DSYSV -dn ${ARCH_DEFS} - + KDEFS_32 = KDEFS_64 = -xarch=v9 - + KDEFS_32 = KDEFS_64 = -xarch=amd64 -xmodel=kernel @@ -44,20 +44,20 @@ KDEFS_64 = -xarch=amd64 -xmodel=kernel CFLAGS=-I. -I.. -I${TOP_OBJDIR}/src/config ${FSINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG} # Name of directory to hold object files and libraries. - + KOBJ = MODLOAD - + KOBJ = MODLOAD32 MODLOAD64 - + KOBJ = MODLOAD64 # This tells Makefile.common to use it's single directory build target. - + COMPDIRS = single_compdir INSTDIRS = single_instdir DESTDIRS = single_destdir - + COMPDIRS = solaris_compdirs INSTDIRS = solaris_instdirs DESTDIRS = solaris_destdirs @@ -89,7 +89,7 @@ setup: ## This is the target for a Solaris 7. Here we build both the 32 bit and ## the 64 bit libafs in MODLOAD32 and MODLOAD64 directories respectively - + ${COMPDIRS} ${INSTDIRS} ${DESTDIRS}: for t in ${KOBJ} ; do \ echo Building directory: $$t ; \ @@ -125,7 +125,7 @@ INST_LIBAFSNONFS = ${DESTDIR}${afskerneldir}/${LIBAFSNONFS} DEST_LIBAFS = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS} DEST_LIBAFSNONFS = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFSNONFS} - + INST_LIBAFSNONFS = ${DESTDIR}${afskerneldir}/libafs${BITS}.nonfs.o INST_LIBAFS = ${DESTDIR}${afskerneldir}/libafs${BITS}.o -- 1.9.4