[OpenAFS-devel] RE: Progress with OpenAFS-1.2.8 on HP-UX 11.22
Carl E. Davidson
carl_davidson@hp.com
Tue, 28 Jan 2003 12:00:24 -0800
Hi Doug,
Thanks for the update. I was out of the office yesterday, so I didn't
see this until this morning. I'll take a look at your changes as soon
as possible. This will probably not be until the end of the week, due
to interference from my day job. :-)
Regards,
Carl
> -----Original Message-----
> From: Douglas E. Engert [mailto:deengert@anl.gov]
> Sent: Friday, January 24, 2003 2:37 PM
> To: Carl E. Davidson; Srikanth Vishwanathan;
> openafs-devel@openafs.org; Derrick J Brashear
> Subject: Progress with OpenAFS-1.2.8 on HP-UX 11.22
>
>
> More progress on OpenAFS on HP UX 11.22 on Itanium. I now
> have the readdir
> somewhat working in 32 and 64 bit mode, thanks to a tip from
> Srikanth Vishwanathan.
>
> But there are still problems.
>
> I am attaching a diff file for the 1.2.8 source. This file
> can also be
> found at: ftp://achilles.ctd.anl.gov/pub/DEE/cdiff.hpux1122.20030124
> and the source with these changes at:
> ftp://achilles.ctd.anl.gov/pub/DEE/oa128.hp1122.tar
>
> The main changes include:
>
> o Changes to Makefiles and param files for hp_ux1122 as
> defined by AFS_HPUX1122_ENV
> and compiler flags and options. Only the STATIC.64 kernel
> is built.
> All the non-kernel code is 32 bit.
>
> o The code no longer lock on the "VM Empire", as it is not needed
>
> o Convert the AFS_GLOCK to a beta_semaphore, as alpha_semaphores are
> not supported.
>
> o Some spinlock code was replaced, as the SPL6 and SPLX are
> not supported.
>
> o Changes to sleep and wakeup to release and acquire the AFS_GLOCK
> over a sleep. This also uses the HP get_sleep_lock I
> think it is correct.
>
> o The code refers to mpproc_info for updating stats, I
> #ifdefed these
> out, so I could get it to compile, This needs to be fixed.
>
> o the VFS afs_readdir, afs_readdir2 and afs_readdir3 need a
> lot of work!
> It looks like even in 32 bit mode, the dirent entries need to be
> aligned on 8 byte boundaries. (See the use of DIRPAD to
> define 3 or 7)
> The dirent entries used in the kernel, and the the 32 and
> 64 bit mods for
> the user are all different sizes.
> The code in these three routines is so convoluted I am
> surprised it
> ever worked! And the comments in the code about the HP
> with NFS, having stack
> problems, makes it even worse!
> (I am not comfortable with the change I have made, but at
> least now
> "ls" and "ls -l" work. but "pwd" does not!
>
> o The afsHash was called for HP, but not sure why. I have it
> commented
> out in one place. Needs to be looked at.
>
> o I can get a PAG. It appears that if some routines are not
> defined the
> compiler can generate the wrong code. crdup() was not
> being defined,
> because HP added a #ifdef for FINE_GRAINED_PROTO_FILES to
> the cred.h
> There may be other places where this is a problem.
>
> o Some HP hearers indicate kmem_alloc is being replaced by
> kalloc, so I changes
> these too.
>
> o The mbuf.h and code to use it was still being included
> even though the
> code was not being called.
>
> o LWP depended on accessing the stack pointer. It is now
> using the same code
> as the Linux IA64 for the hardware context.
>
> o df does not show /afs as being mounted. Although during
> one test boot it did.
> I had been playing around with /etc/mnttab. That might
> have done it.
>
> o There are still lots of compiler warning messages.
>
> Some additional comments.
>
> o I am testing on a uniprocessor, so don't know if the
> locking is actually
> working.
>
> o I have read some data from AFS, and looked at publicly
> readable data,
> I have not tried to write to AFS.
>
> o I have gotten a ticket, but have not attempted to use it at all.
>
> o fs and vos appear to work, but I have not tried very many
> functions.
>
> o You will also need an updated config.guess and config.sub
> that know as about
> ia64-hp-hpux11.22 I got it from somewhere, (Its Friday
> afternoon, my brain is not
> working.)
>
>
> Carl, Can you look over these changes, and see if the locking
> looks OK?
> If yoiu can seperate out any 11.i vs 11.22 features that
> would be good too.
>
> ANy other comments or suggestions are welcome too!
>
>
> Thanks.
>
>
> *** ./,Makefile.in Tue Sep 10 17:33:24 2002
> --- ./Makefile.in Tue Dec 17 14:34:14 2002
> ***************
> *** 243,249 ****
>
> tviced: project viced vlserver libafsrpc libafsauthent
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun*_5*|rs_aix*|*linux*|hp_ux110) \
> ${COMPILE_PART1} tviced ${COMPILE_PART2} ;; \
> *) \
> echo Not building MT viced for ${SYS_NAME} ;; \
> --- 243,249 ----
>
> tviced: project viced vlserver libafsrpc libafsauthent
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun*_5*|rs_aix*|*linux*|hp_ux11*) \
> ${COMPILE_PART1} tviced ${COMPILE_PART2} ;; \
> *) \
> echo Not building MT viced for ${SYS_NAME} ;; \
> ***************
> *** 264,270 ****
>
> gtx: project null auth # kauth rxkad ?
> case ${SYS_NAME} in \
> ! rs_aix* | sun4x_5? | sgi_6? | *linux* | ppc_darwin* |
> *fbsd*) \
> $(RM) -f ${TOP_LIBDIR}/libtermlib.a; \
> ln -s libnull.a ${TOP_LIBDIR}/libtermlib.a; \
> ${COMPILE_PART1} gtx ${COMPILE_PART2};; \
> --- 264,270 ----
>
> gtx: project null auth # kauth rxkad ?
> case ${SYS_NAME} in \
> ! rs_aix* | sun4x_5? | sgi_6? | *linux* | ppc_darwin* |
> *fbsd* | hp_ux1122) \
> $(RM) -f ${TOP_LIBDIR}/libtermlib.a; \
> ln -s libnull.a ${TOP_LIBDIR}/libtermlib.a; \
> ${COMPILE_PART1} gtx ${COMPILE_PART2};; \
> ***************
> *** 414,420 ****
>
> tbutc: project bubasics butm budb bucoord cmd butc
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|rs_aix4*|*linux*|hp_ux110) \
> ${COMPILE_PART1} tbutc ${COMPILE_PART2} ;; \
> *) \
> echo Not building MT butc for ${SYS_NAME} ;; \
> --- 414,420 ----
>
> tbutc: project bubasics butm budb bucoord cmd butc
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|rs_aix4*|*linux*|hp_ux11*) \
> ${COMPILE_PART1} tbutc ${COMPILE_PART2} ;; \
> *) \
> echo Not building MT butc for ${SYS_NAME} ;; \
> ***************
> *** 437,443 ****
> # pthread based user space RX library
> libafsrpc: rx rxkad des
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110|*fbsd*) \
> ${COMPILE_PART1} libafsrpc ${COMPILE_PART2} ;; \
> *) \
> echo Not building MT libafsrpc for ${SYS_NAME} ;; \
> --- 437,443 ----
> # pthread based user space RX library
> libafsrpc: rx rxkad des
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux11*|*fbsd*) \
> ${COMPILE_PART1} libafsrpc ${COMPILE_PART2} ;; \
> *) \
> echo Not building MT libafsrpc for ${SYS_NAME} ;; \
> ***************
> *** 445,451 ****
>
> libafsauthent: ubik auth kauth libafsrpc
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110|*fbsd*) \
> ${COMPILE_PART1} libafsauthent ${COMPILE_PART2} ;; \
> *) \
> echo Not building MT libafsrpc for ${SYS_NAME} ;; \
> --- 445,451 ----
>
> libafsauthent: ubik auth kauth libafsrpc
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux11*|*fbsd*) \
> ${COMPILE_PART1} libafsauthent ${COMPILE_PART2} ;; \
> *) \
> echo Not building MT libafsrpc for ${SYS_NAME} ;; \
> ***************
> *** 453,459 ****
>
> shlibafsrpc: rx rxkad des
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux110) \
> ${COMPILE_PART1} shlibafsrpc ${COMPILE_PART2} ;; \
> *) \
> echo Not building shared libafsrpc for ${SYS_NAME} ;; \
> --- 453,459 ----
>
> shlibafsrpc: rx rxkad des
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*) \
> ${COMPILE_PART1} shlibafsrpc ${COMPILE_PART2} ;; \
> *) \
> echo Not building shared libafsrpc for ${SYS_NAME} ;; \
> ***************
> *** 461,467 ****
>
> shlibafsauthent: ubik auth kauth shlibafsrpc
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux110) \
> ${COMPILE_PART1} shlibafsauthent ${COMPILE_PART2} ;; \
> *) \
> echo Not building shared libafsrpc for ${SYS_NAME} ;; \
> --- 461,467 ----
>
> shlibafsauthent: ubik auth kauth shlibafsrpc
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*) \
> ${COMPILE_PART1} shlibafsauthent ${COMPILE_PART2} ;; \
> *) \
> echo Not building shared libafsrpc for ${SYS_NAME} ;; \
> ***************
> *** 481,487 ****
>
> libadmin: libafsauthent bozo
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110) \
> $(MAKE) libadmin_real ;; \
> *) \
> echo Not building MT libadmin for ${SYS_NAME} ;; \
> --- 481,487 ----
>
> libadmin: libafsauthent bozo
> case ${SYS_NAME} in \
> ! alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux11*) \
> $(MAKE) libadmin_real ;; \
> *) \
> echo Not building MT libadmin for ${SYS_NAME} ;; \
> *** ./src/afs/,sysincludes.h Thu Nov 14 14:20:39 2002
> --- ./src/afs/sysincludes.h Tue Dec 17 13:33:30 2002
> ***************
> *** 219,224 ****
> --- 219,227 ----
> struct vfspage; /* for vnode.h compiler
> warnings */
> # include "../h/swap.h" /* for struct swpdbd, for
> vnode.h compiler warnings */
> # include "../h/dbd.h" /* for union idbd, for vnode.h
> compiler warnings */
> + #ifdef AFS_HPUX1122_ENV
> + # include "h/resource.h"
> + #endif
> # endif /* AFS_HPUX_ENV */
> #if defined(AFS_DARWIN_ENV) || defined(AFS_FBSD40_ENV)
> # include <sys/uio.h>
> ***************
> *** 270,276 ****
> --- 273,281 ----
> #ifdef AFS_SUN5_ENV
> # include "../h/time.h"
> #else
> + #if !defined(AFS_HPUX_ENV)
> # include "../h/mbuf.h"
> + #endif
> #endif /* AFS_SUN5_ENV */
>
> #include "../rpc/types.h"
> *** ./src/afs/HPUX/,osi_vnodeops.c Thu Nov 14 14:08:34 2002
> --- ./src/afs/HPUX/osi_vnodeops.c Fri Jan 24 09:59:34 2003
> ***************
> *** 49,55 ****
> --- 49,66 ----
>
> #define vtoblksz(vp) ((vp)->v_vfsp->vfs_bsize)
>
> + #if defined(AFS_HPUX1122_ENV)
> + /* We no longer need to lock on the VM Empire,
> + * or at least that is what is claimed.
> + * so we will noopt the vmemp_ routines
> + * This needs to be looked at closer. DEE
> + */
> + #define vmemp_lockx()
> + #define vmemp_returnx(a)
> + #define vmemp_unlockx()
> + #endif
>
> + #if !defined(AFS_HPUX1122_ENV)
> /*
> * Copy an mbuf to the contiguous area pointed to by cp.
> * Skip <off> bytes and copy <len> bytes.
> ***************
> *** 92,97 ****
> --- 103,109 ----
>
> return (len);
> }
> + #endif
>
> /*
> * Note that the standard Sun vnode interface doesn't
> haven't an vop_lockf(), so this
> code is
> ***************
> *** 160,166 ****
> --- 172,182 ----
> }
>
>
> + #if defined(AFS_HPUX1122_ENV)
> + #include "machine/vm/vmparam.h"
> + #else
> #include "../machine/vmparam.h" /* For KERNELSPACE */
> + #endif
> #include "../h/debug.h"
> #include "../h/types.h"
> #include "../h/param.h"
> ***************
> *** 1262,1268 ****
> --- 1278,1287 ----
> if (change_to_fstore)
> afspgin_update_dbd(vm_info, bsize);
>
> + #if !defined(AFS_HPUX1122_ENV)
> + /*DEE needs to be fixed */
> mpproc_info[getprocindex()].cnt.v_exfod += count;
> + #endif
> vmemp_unlockx(); /* free up VM empire */
> *ret_startindex = startindex;
>
> ***************
> *** 1628,1633 ****
> --- 1647,1654 ----
> /*
> * Update statistics
> */
> + #if !defined(AFS_HPUX1122_ENV)
> + /*DEE many changes on 11.22 needs to be looked at */
> if (steal) {
> if (flags & PF_DEACT) {
> mpproc_info[getprocindex()].cnt.v_pswpout += npages;
> ***************
> *** 1638,1643 ****
> --- 1659,1665 ----
> mpproc_info[getprocindex()].cnt.v_pgpgout += npages;
> }
> }
> + #endif
>
> /*
> * If time and patience have delivered enough
> ***************
> *** 1984,1992 ****
> --- 2006,2024 ----
> return(ENOTTY);
> }
>
> + #if defined(AFS_HPUX1122_ENV)
> + /* looks like even if appl is 32 bit, we need to round to 8 bytes */
> + /* DEE This had no effect, it must not be being used */
> +
> + #define roundtoint(x) (((x) + (sizeof(long) - 1)) &
> ~(sizeof(long) - 1))
> + #define reclen(dp) roundtoint(((dp)->d_namlen + 1 +
> (sizeof(u_long)) +\
> + sizeof(u_int) + 2 *
> sizeof(u_short)))
> + #else
> +
> #define roundtoint(x) (((x) + (sizeof(int) - 1)) &
> ~(sizeof(int) - 1))
> #define reclen(dp) roundtoint(((dp)->d_namlen + 1 +
> (sizeof(u_long)) +\
> 2 * sizeof(u_short)))
> + #endif
>
> int
> afs_readdir(vp, uiop, cred)
> *** ./src/afs/HPUX/,osi_machdep.h Tue Nov 26 17:40:38 2002
> --- ./src/afs/HPUX/osi_machdep.h Tue Jan 21 16:54:02 2003
> ***************
> *** 49,58 ****
> --- 49,63 ----
> * HP uses global mutex to protect afs land
> */
>
> + #if !defined(AFS_HPUX1122_ENV)
> extern sema_t afs_global_sema;
> + #else
> + extern b_sema_t afs_global_sema;
> + #endif
>
> extern void osi_InitGlock(void);
>
> + #if !defined(AFS_HPUX1122_ENV)
> extern void afsHash(int nbuckets);
> extern sv_sema_t *afsHashInsertFind(tid_t key);
> extern sv_sema_t *afsHashFind(tid_t key);
> ***************
> *** 61,71 ****
> #define AFS_GLOCK_PID kt_tid(u.u_kthreadp)
> #define AFS_SAVE_SEMA afsHashInsertFind(AFS_GLOCK_PID)
> #define AFS_FIND_SEMA afsHashFind(AFS_GLOCK_PID)
> #define AFS_GLOCK() MP_PXSEMA(&afs_global_sema, AFS_SAVE_SEMA)
> #define AFS_GUNLOCK() (AFS_ASSERT_GLOCK(),
> MP_VXSEMA(&afs_global_sema,AFS_FIND_SEMA),
> (!uniprocessor ? (afsHashRelease(AFS_GLOCK_PID),0) : 0))
> #define ISAFS_GLOCK() (!uniprocessor ?
> owns_sema(&afs_global_sema):1)
>
> ! #define AFS_RXGLOCK()
> #define AFS_RXGUNLOCK()
> #define ISAFS_RXGLOCK() 1
>
> --- 66,84 ----
> #define AFS_GLOCK_PID kt_tid(u.u_kthreadp)
> #define AFS_SAVE_SEMA afsHashInsertFind(AFS_GLOCK_PID)
> #define AFS_FIND_SEMA afsHashFind(AFS_GLOCK_PID)
> +
> #define AFS_GLOCK() MP_PXSEMA(&afs_global_sema, AFS_SAVE_SEMA)
> #define AFS_GUNLOCK() (AFS_ASSERT_GLOCK(),
> MP_VXSEMA(&afs_global_sema,AFS_FIND_SEMA),
> (!uniprocessor ? (afsHashRelease(AFS_GLOCK_PID),0) : 0))
> #define ISAFS_GLOCK() (!uniprocessor ?
> owns_sema(&afs_global_sema):1)
>
> ! #else
> ! #define AFS_GLOCK() b_psema(&afs_global_sema)
> ! #define AFS_GUNLOCK() b_vsema(&afs_global_sema)
> ! #define ISAFS_GLOCK() b_owns_sema(&afs_global_sema)
> !
> ! #endif
> !
> ! #define AFS_RXGLOCK()
> #define AFS_RXGUNLOCK()
> #define ISAFS_RXGLOCK() 1
>
> ***************
> *** 75,80 ****
> --- 88,94 ----
> #define USERPRI NET_SPLX(splvar)
> #endif /* KERNEL */
>
> + #if !defined(AFS_HPUX1122_ENV)
> /*
> * On HP, the global lock is an alpha semaphore, hence it
> is automatically
> * released and reacquired aroubd a sleep() and wakeup().
> ***************
> *** 82,94 ****
> --- 96,130 ----
>
> #define afs_osi_Sleep(x) sleep((caddr_t) x,PZERO-2)
> #define afs_osi_Wakeup(x) wakeup((caddr_t) x)
> + #else
> + /*
> + *DEE On 11.22 global lock is a beta semaphore, hence we nned to
> + * release and reacquire around sllep and wakeup. We also need to
> + * use the get_sleep_lock.
> + * afs_osi_Sleep and afs_osi_Wakeup are defined
> + */
> + void afs_osi_Sleep(char *event);
> + void afs_osi_Wakeup(char *event);
> + #endif
> +
> #define osi_NullHandle(x) ((x)->proc == (caddr_t) 0)
>
> + #if !defined(AFS_HPUX1122_ENV)
> extern caddr_t kmem_alloc();
> + #else
> + #undef kmem_alloc
> + #undef kmem_free
> + #define kmem_alloc(a) kmalloc(a, M_IHV, M_WAITOK)
> + #define kmem_free(a,b) kfree(a, M_IHV)
> + #endif
> #include <sys/kthread_iface.h> /* for kt_cred() */
>
> /* Expected to be available as a patch from HP */
> /* See section D of the top level README for details */
> + #if defined(AFS_HPUX1122_ENV)
> + #include <sys/vfs_vm.h>
> + #else
> #include <vfs_vm.h>
> + #endif
>
> #endif /* _OSI_MACHDEP_H_ */
> *** ./src/afs/HPUX/,osi_vfsops.c Tue Apr 23 20:41:30 2002
> --- ./src/afs/HPUX/osi_vfsops.c Wed Jan 8 14:52:58 2003
> ***************
> *** 182,187 ****
> --- 182,188 ----
> static int afs_Starting = 0;
>
> #pragma align 64
> + #if !defined(AFS_HPUX1122_ENV)
> sema_t afs_global_sema = {
> NULL, 0, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, /*
> sa_type */
> 0, 0, 0, 0, 0, 0, 0, NULL, /* sa_link */
> ***************
> *** 190,195 ****
> --- 191,199 ----
> , 0, 0, 0, NULL
> #endif
> };
> + #else
> + b_sema_t afs_global_sema = {0};
> + #endif
>
> void
> osi_InitGlock()
> ***************
> *** 200,207 ****
> if ( !afs_Starting ) {
> afs_Starting = 1;
> SPINUNLOCK_USAV(sched_lock, context);
> ! initsema(&afs_global_sema, 1, FILESYS_SEMA_PRI,
> FILESYS_SEMA_ORDER);
> ! afsHash(64); /* 64 buckets */
> } else {
> SPINUNLOCK_USAV(sched_lock, context);
> }
> --- 204,211 ----
> if ( !afs_Starting ) {
> afs_Starting = 1;
> SPINUNLOCK_USAV(sched_lock, context);
> ! b_initsema(&afs_global_sema, 1, NFS_LOCK_ORDER2, "AFS GLOCK");
> ! /* afsHash(64); */ /* 64 buckets */
> } else {
> SPINUNLOCK_USAV(sched_lock, context);
> }
> *** ./src/afs/HPUX/,osi_groups.c Thu Jan 9 10:24:17 2003
> --- ./src/afs/HPUX/osi_groups.c Mon Jan 20 15:09:16 2003
> ***************
> *** 133,141 ****
> --- 133,146 ----
> int *gp;
> struct ucred *newcr;
> ulong_t s;
> + #if defined(AFS_HPUX1122_ENV)
> + register ulong_t context;
> + #endif
>
> AFS_STATCNT(afs_setgroups);
>
> + #if 1
> + /*DEE SKIP THIS FOR NOW! */
> if (!change_parent)
> {
> newcr = (struct ucred *)crdup(*cred);
> ***************
> *** 147,156 ****
> --- 152,168 ----
> /* somebody else might have a pointer to this structure.
> ** make sure we do not have a race condition */
> newcr = *cred;
> + #if defined(AFS_HPUX1122_ENV)
> + /*DEE all of the uniprocessor spinlocks are not
> defined. */
> + /* I assume the UP and MP are now handled together */
> + MP_SPINLOCK_USAV(cred_lock, context);
> + #else
> s = UP_SPL6();
> SPINLOCK(cred_lock);
> + #endif
> }
>
> +
> /* copy the group info */
> gp = newcr->cr_groups;
> while (ngroups--)
> ***************
> *** 157,163 ****
> *gp++ = *gidset++;
> for ( ; gp < &(newcr)->cr_groups[NGROUPS]; gp++)
> *gp = ((gid_t) -1);
> !
> if ( !change_parent)
> {
> /* replace the new cred structure in the proc area */
> --- 169,175 ----
> *gp++ = *gidset++;
> for ( ; gp < &(newcr)->cr_groups[NGROUPS]; gp++)
> *gp = ((gid_t) -1);
> !
> if ( !change_parent)
> {
> /* replace the new cred structure in the proc area */
> ***************
> *** 168,175 ****
> --- 180,193 ----
> }
> else
> {
> + #if defined(AFS_HPUX1122_ENV)
> + MP_SPINUNLOCK_USAV(cred_lock, context);
> + #else
> (void) UP_SPLX(s);
> SPINUNLOCK(cred_lock);
> + #endif
> }
> +
> + #endif
> return (setuerror(0), 0);
> }
> *** ./src/afs/HPUX/,osi_sleep.c Thu Jul 12 14:58:20 2001
> --- ./src/afs/HPUX/osi_sleep.c Tue Jan 21 10:10:11 2003
> ***************
> *** 16,24 ****
> #include "../afs/afsincludes.h" /* Afs-based standard headers */
> #include "../afs/afs_stats.h" /* afs statistics */
>
>
>
> -
> static char waitV;
>
> /* call procedure aproc with arock as an argument, in ams
> milliseconds */
> --- 16,27 ----
> #include "../afs/afsincludes.h" /* Afs-based standard headers */
> #include "../afs/afs_stats.h" /* afs statistics */
>
> + #if defined(AFS_HPUX1122_ENV)
> + void afs_osi_Wakeup(char *event);
> + void afs_osi_Sleep(char *event);
> + #endif
>
>
> static char waitV;
>
> /* call procedure aproc with arock as an argument, in ams
> milliseconds */
> ***************
> *** 106,108 ****
> --- 109,196 ----
> } while (osi_Time() < endTime);
> return code;
> }
> +
> + #if defined(AFS_HPUX1122_ENV)
> +
> + /* on HP 11.22 we are using beta semiphore for AFS_GLOCK */
> +
> + 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 */
> + } afs_event_t;
> +
> + #define HASHSIZE 128
> + afs_event_t *afs_evhasht[HASHSIZE];/* Hash table for events */
> + #define afs_evhash(event) (afs_uint32)
> ((((long)event)>>2) & (HASHSIZE-1));
> + int afs_evhashcnt = 0;
> +
> + /* Get and initialize event structure corresponding to lwp
> event (i.e. address)
> + * */
> + static afs_event_t *afs_getevent(char *event)
> + {
> + afs_event_t *evp, *newp = 0;
> + int hashcode;
> +
> + AFS_ASSERT_GLOCK();
> + hashcode = afs_evhash(event);
> + evp = afs_evhasht[hashcode];
> + while (evp) {
> + if (evp->event == event) {
> + evp->refcount++;
> + return evp;
> + }
> + if (evp->refcount == 0)
> + newp = evp;
> + evp = evp->next;
> + }
> + if (!newp) {
> + newp = (afs_event_t *) osi_AllocSmallSpace(sizeof
> (afs_event_t));
> + afs_evhashcnt++;
> + newp->next = afs_evhasht[hashcode];
> + afs_evhasht[hashcode] = newp;
> + newp->seq = 0;
> + }
> + newp->event = event;
> + newp->refcount = 1;
> + return newp;
> + }
> +
> +
> + /* Release the specified event */
> + #define relevent(evp) ((evp)->refcount--)
> +
> + void afs_osi_Sleep(char *event)
> + {
> + struct afs_event *evp;
> + int seq;
> +
> + evp = afs_getevent(event);
> + seq = evp->seq;
> + while (seq == evp->seq) {
> + AFS_ASSERT_GLOCK();
> + get_sleep_lock(event);
> + AFS_GUNLOCK();
> + sleep(event, PZERO-2);
> + AFS_GLOCK();
> + }
> + relevent(evp);
> + }
> +
> + void afs_osi_Wakeup(char *event)
> + {
> + struct afs_event *evp;
> + lock_t * sleep_lock;
> +
> + evp = afs_getevent(event);
> + sleep_lock = get_sleep_lock(event);
> + if (evp->refcount > 1) {
> + evp->seq++;
> + wakeup(event);
> + }
> + spinunlock(sleep_lock);
> + }
> + #endif
> *** ./src/afs/VNOPS/,afs_vnop_readdir.c Fri Nov 22 13:14:53 2002
> --- ./src/afs/VNOPS/afs_vnop_readdir.c Fri Jan 24 14:18:17 2003
> ***************
> *** 32,37 ****
> --- 32,42 ----
> #include "../afs/afs_osidnlc.h"
>
>
> + #if defined(AFS_HPUX1122_ENV)
> + #define DIRPAD 7
> + #else
> + #define DIRPAD 3
> + #endif
> /**
> * A few definitions. This is until we have a proper header file
> * which ahs prototypes for all functions
> ***************
> *** 172,178 ****
> u_short d_reclen;
> u_short d_namlen;
> };
> ! #define NDIRSIZ_LEN(len) ((sizeof (struct dirent)+4 -
> (MAXNAMLEN+1)) + (((len)+1 + 3) &~
> 3))
> #endif
> #endif /* !defined(UKERNEL) */
>
> --- 177,183 ----
> u_short d_reclen;
> u_short d_namlen;
> };
> ! #define NDIRSIZ_LEN(len) ((sizeof (struct dirent)+4 -
> (MAXNAMLEN+1)) + (((len)+1 +
> DIRPAD) &~ DIRPAD))
> #endif
> #endif /* !defined(UKERNEL) */
>
> ***************
> *** 198,206 ****
> *
> *
> */
> #if defined(AFS_HPUX100_ENV)
> #define DIRSIZ_LEN(len) \
> ! ((sizeof (struct __dirent) - (_MAXNAMLEN+1)) +
> (((len)+1 + 3) &~ 3))
> #else
> #if defined(AFS_SUN56_ENV)
> #define DIRSIZ_LEN(len) ((18 + (len) + 1 + 7) & ~7 )
> --- 203,212 ----
> *
> *
> */
> +
> #if defined(AFS_HPUX100_ENV)
> #define DIRSIZ_LEN(len) \
> ! ((sizeof (struct __dirent) - (_MAXNAMLEN+1)) +
> (((len)+1 + DIRPAD) &~ DIRPAD))
> #else
> #if defined(AFS_SUN56_ENV)
> #define DIRSIZ_LEN(len) ((18 + (len) + 1 + 7) & ~7 )
> ***************
> *** 406,412 ****
>
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((slen + 4) & ~3) - slen, UIO_READ,
> auio, code);
> }
> AFS_MOVE_LOCK();
> --- 412,418 ----
>
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((slen + 1 + DIRPAD) & ~DIRPAD)
> - slen, UIO_READ,
> auio, code);
> }
> AFS_MOVE_LOCK();
> ***************
> *** 620,626 ****
> AFS_UIOMOVE(ode->name, o_slen, UIO_READ,
> auio, code);
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 4) & ~3)
> - o_slen, UIO_READ, auio, code);
> }
> /* pad out the difference between rlen and slen... */
> if (DIRSIZ_LEN(o_slen) < rlen) {
> --- 626,632 ----
> AFS_UIOMOVE(ode->name, o_slen, UIO_READ,
> auio, code);
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 1 +
> DIRPAD) & ~DIRPAD) - o_slen, UIO_READ, auio,
> code);
> }
> /* pad out the difference between rlen and slen... */
> if (DIRSIZ_LEN(o_slen) < rlen) {
> ***************
> *** 683,689 ****
> AFS_UIOMOVE(ode->name, o_slen, UIO_READ,
> auio, code);
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 4) & ~3)
> - o_slen, UIO_READ, auio, code);
> }
> /* pad out the difference between rlen and slen... */
> if (DIRSIZ_LEN(o_slen) < rlen) {
> --- 689,695 ----
> AFS_UIOMOVE(ode->name, o_slen, UIO_READ,
> auio, code);
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 1 +
> DIRPAD) & ~DIRPAD) - o_slen, UIO_READ, auio,
> code);
> }
> /* pad out the difference between rlen and slen... */
> if (DIRSIZ_LEN(o_slen) < rlen) {
> ***************
> *** 734,740 ****
> AFS_UIOMOVE(ode->name, o_slen, UIO_READ, auio, code);
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 4) & ~3) - o_slen,
> UIO_READ, auio, code);
> }
> /* pad out the difference between rlen and slen... */
> --- 740,746 ----
> AFS_UIOMOVE(ode->name, o_slen, UIO_READ, auio, code);
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 1 + DIRPAD)
> & ~DIRPAD) - o_slen,
> UIO_READ, auio, code);
> }
> /* pad out the difference between rlen and slen... */
> ***************
> *** 882,888 ****
> }
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 4) & ~3)
> - o_slen, UIO_READ, auio, code);
> }
> /* pad out the difference between rlen and slen... */
> if (NDIRSIZ_LEN(o_slen) < rlen) {
> --- 888,894 ----
> }
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 1 +
> DIRPAD) & ~DIRPAD) - o_slen, UIO_READ, auio,
> code);
> }
> /* pad out the difference between rlen and slen... */
> if (NDIRSIZ_LEN(o_slen) < rlen) {
> ***************
> *** 931,937 ****
> AFS_UIOMOVE(ode->name, o_slen, UIO_READ,
> auio, code);
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 4) & ~3)
> - o_slen, UIO_READ, auio, code);
> }
> /* pad out the difference between rlen and slen... */
> if (NDIRSIZ_LEN(o_slen) < rlen) {
> --- 937,943 ----
> AFS_UIOMOVE(ode->name, o_slen, UIO_READ,
> auio, code);
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 1 +
> DIRPAD) & ~DIRPAD) - o_slen, UIO_READ, auio,
> code);
> }
> /* pad out the difference between rlen and slen... */
> if (NDIRSIZ_LEN(o_slen) < rlen) {
> ***************
> *** 977,983 ****
> AFS_UIOMOVE(ode->name, o_slen, UIO_READ, auio, code);
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 4) & ~3) -
> o_slen, UIO_READ, auio, code);
> }
> /* pad out the difference between rlen and slen... */
> if (NDIRSIZ_LEN(o_slen) < rlen) {
> --- 983,989 ----
> AFS_UIOMOVE(ode->name, o_slen, UIO_READ, auio, code);
> /* pad out the remaining characters with zeros */
> if (code == 0) {
> ! AFS_UIOMOVE(bufofzeros, ((o_slen + 1 + DIRPAD)
> & ~DIRPAD) - o_slen, UIO_READ, auio,
> code);
> }
> /* pad out the difference between rlen and slen... */
> if (NDIRSIZ_LEN(o_slen) < rlen) {
> *** ./src/afs/,afs_util.c Thu Nov 14 15:03:57 2002
> --- ./src/afs/afs_util.c Tue Dec 17 17:09:06 2002
> ***************
> *** 119,125 ****
> --- 119,129 ----
>
> afs_warn(a,b,c,d,e,f,g,h,i,j)
> char *a;
> + #if defined( AFS_USE_VOID_PTR)
> + void *b, *c, *d, *e, *f, *g, *h, *i, *j;
> + #else
> long b,c,d,e,f,g,h,i,j;
> + #endif
> {
> AFS_STATCNT(afs_warn);
>
> ***************
> *** 148,154 ****
> --- 152,162 ----
>
> afs_warnuser(a,b,c,d,e,f,g,h,i,j)
> char *a;
> + #if defined( AFS_USE_VOID_PTR)
> + void *b, *c, *d, *e, *f, *g, *h, *i, *j;
> + #else
> long b,c,d,e,f,g,h,i,j;
> + #endif
> {
> AFS_STATCNT(afs_warnuser);
> if (afs_showflags & GAGUSER)
> *** ./src/afs/,afs_osi.c Tue Sep 10 17:33:27 2002
> --- ./src/afs/afs_osi.c Tue Jan 7 10:58:14 2003
> ***************
> *** 402,407 ****
> --- 402,411 ----
> #endif
> #ifdef AFS_HPUX_ENV
> {
> + #if !defined(AFS_HPUX1122_ENV)
> + /*DEE drop the setting of the clock for now. spl7 is not
> + * known on hpux11.22
> + */
> register ulong_t s;
> struct timeval t;
> t.tv_sec = atv->tv_sec;
> ***************
> *** 408,413 ****
> --- 412,418 ----
> t.tv_usec = atv->tv_usec;
> s = spl7(); time = t; (void) splx(s);
> resettodr(atv);
> + #endif
> }
> #else
> {
> *** ./src/afsd/,Makefile.in Fri Oct 12 23:20:44 2001
> --- ./src/afsd/Makefile.in Wed Dec 18 13:38:12 2002
> ***************
> *** 112,117 ****
> --- 112,120 ----
> hp_ux10? | hp_ux11? ) \
> ${INSTALL} -f afs.rc.hpux10
> ${DEST}/root.client/usr/vice/etc/dkload/afs.rc ;\
> ${INSTALL} -f afs.hpux102.driver
> ${DEST}/root.client/usr/vice/etc/afs.driver ;;\
> + hp_ux1122 ) \
> + ${INSTALL} -f afs.rc.hpux10
> ${DEST}/root.client/usr/vice/etc/dkload/afs.rc ;\
> + ${INSTALL} -f afs.hpux1122.driver
> ${DEST}/root.client/usr/vice/etc/afs.driver ;;\
> alpha_dux* ) \
> ${INSTALL} -f afs.rc.alpha_dux40
> ${DEST}/root.client/usr/vice/etc/dkload/afs.rc ;;\
> hp?00_ux10? ) \
> *** ./src/afsd/,afs.hpux1122.driver Wed Dec 18 13:42:48 2002
> --- ./src/afsd/afs.hpux1122.driver Wed Dec 18 13:43:29 2002
> ***************
> *** 0 ****
> --- 1,126 ----
> + * 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
> +
> + *
> + * $Revision: 1.2 $
> + *
> + * The following devices are those that can be specified in
> the system
> + * description file. The name specified must agree with the
> name shown,
> + * or with an alias.
> + *
> + * name handle type mask block char
> + *
> + $DEVICE
> + afs afsc 10 100 -1 -1
> + ** Reserved for Third Party and User Drivers.
> + * --- - - -1 38
> + * --- - - -1 39
> + * --- - - -1 40
> + * --- - - -1 41
> + * --- - - -1 42
> + * --- - - -1 43
> + * --- - - 8 -1
> + * --- - - 15 -1
> + * --- - - 16 -1
> + * --- - - 17 -1
> + * --- - - 18 -1
> + $$$
> +
> + $CDIO
> + *
> + * The following entries form the cdio table.
> + * field 1: cdio name
> + * field 2: required, optional
> + *
> + $$$
> +
> + $DRIVER_INSTALL
> +
> **************************************************************
> *************
> + * Driver install table
> + *
> + * This table contains the name of drivers which have
> converged I/O header
> + * structures and install entry points. Drivers in this
> table should not
> + * be defined in the driver table above.
> +
> **************************************************************
> *************
> + * Driver Block major Char major
> + $$$
> +
> + $ALIAS
> + *
> + * The following entries form the alias table.
> + * field 1: product # field 2: driver name
> + *
> + $$$
> +
> + $TUNABLE
> + *
> + * The following entries form the tunable parameter table.
> Any of these
> + * values can be overwritten in the dfile. However, before
> changing any
> + * value, know the ramifications of your change.
> + *
> + $$$
> +
> + $DRIVER_DEPENDENCY
> + *
> + * Driver dependency table, if one driver is present, what
> + * other drivers should also be in the dfile.
> + * NOTE: A maximum of 6 dependency entries my follow the driver name.
> + * NOTE: This mechanism does not support chaining. In other
> words, if
> + * a driver is included as a dependency, that driver
> will not be
> + * checked for its dependencies.
> + *
> + * Driver name <dependency> <dependency> .....
> + *
> + $$$
> +
> + $DRIVER_LIBRARY
> + *
> + * The driver/library table. This table defines which
> libraries a given
> + * driver depends on. If the driver is included in the
> dfile, then the
> + * libraries that driver depends on will be included on the
> ld(1) command
> + * line. Only optional libraries *need* to be specified in
> this table,
> + * (but required ones can be included, as well).
> + *
> + * Driver handle <libraries>
> + *
> + * subsystems first
> + afs libafs64.nonfs.a
> + $$$
> +
> + $LIBRARY
> + *
> + * The library table. Each element in the library table describes
> + * one unique library. The flag member is a boolean value, it is
> + * initialized to 1 if the library should *always* be included on
> + * the ld(1) command line, or 0 if the library is optional (i.e. it
> + * is only included when one or more drivers require it). The order
> + * of the library table determines the order of the libraries on the
> + * ld(1) command line, (i.e. defines an implicit load order). New
> + * libraries must be added to this table.
> + * Note: libhp-ux.a must be the last entry, do not place
> anything after it.
> + *
> + * Library <required>
> + *
> + libafs64.nonfs.a 0
> + $$$
> +
> + $SUBSYSTEMS_DEFINE
> + * Subsystem #define table. For any subsystem that is found
> in the dfile
> + * and appears below, a #define is generated in the conf.c
> file. This
> + * is used to include any space defined in space.h.
> + afs
> + $$$
> +
> + $DRIVER_PRODUCT
> + *
> + * Driver product table. The following generates a table of
> supported products
> + * for a given interface card. The input is a driver handle
> followed by a list
> + * of product/vendor id's. What is produced is a table of
> these product/vendor
> + * id's to be used by the interface driver for further
> qualification during
> + * booting and the setting of root device location.
> + *
> + $$$
> *** ./src/config/,afs_sysnames.h Tue Sep 10 17:33:45 2002
> --- ./src/config/afs_sysnames.h Tue Dec 17 13:49:07 2002
> ***************
> *** 43,48 ****
> --- 43,50 ----
> #define SYS_NAME_ID_hp800_ux101 413
> #define SYS_NAME_ID_hp_ux102 414
> #define SYS_NAME_ID_hp_ux110 415
> + /* Assume hp_ux11i is 416 */
> + #define SYS_NAME_ID_hp_ux1122 417
>
> #define SYS_NAME_ID_mac2_51 500
> #define SYS_NAME_ID_mac_aux10 501
> *** ./src/config/,Makefile.hp_ux1122.in Tue Dec 17 13:42:13 2002
> --- ./src/config/Makefile.hp_ux1122.in Tue Dec 17 13:47:47 2002
> ***************
> *** 0 ****
> --- 1,37 ----
> + # 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
> +
> + AFS_OSTYPE = HPUX
> + CC=/opt/ansic/bin/cc
> + MT_CC=/opt/ansic/bin/cc
> + XCFLAGS0=-ldld -lc -Wp,-H200000 -Wl,-a,archive_shared
> -DAUTH_DBM_LOG +z -Wl,+k
> -D_LARGEFILE64_SOURCE
> + XCFLAGS=${XCFLAGS0}
> + XCFLAGS64=${XCFLAGS0} +DD64
> + MT_CFLAGS=-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}
> + XLIBS=@LIB_AFSDB@
> + XLIBELFA=-lelf
> + TXLIBS=/usr/lib/hpux32/libcurses.so
> + MTLIBS=-lpthread
> + SHLIB_SUFFIX=sl
> + SHLIB_LDFLAGS=-b -Bsymbolic
> + SHLIB_LINKER=ld -b
> + LWP_OPTMZ=-O
> + OPTMZ=-O
> + DBG=-g
> + RANLIB=/usr/bin/ranlib
> + INSTALL=${TOP_SRCDIR}/pinstall/pinstall
> + RM=/bin/rm
> + CP=/bin/cp
> + AR=/bin/ar
> + AS=/usr/ccs/bin/as
> + MV=/bin/mv
> + LD=/bin/ld
> + LEX=/opt/langtools/bin/lex
> + DBM=/lib/hpux32/libndbm.so
> + PAM_CFLAGS="-b +z -Wl,+k"
> + PAMLIBS=/usr/lib/hpux32/libpam.so
> + YACC=/opt/langtools/bin/yacc
> *** ./src/config/,param.hp_ux1122.h Tue Dec 17 13:49:42 2002
> --- ./src/config/param.hp_ux1122.h Tue Dec 17 17:07:53 2002
> ***************
> *** 0 ****
> --- 1,101 ----
> + /*
> + * 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
> + */
> +
> + /* THIS FILE IS AUTOMATICALLY GENERATED; DO NOT EDIT */
> +
> + #ifndef AFS_PARAM_H
> + #define AFS_PARAM_H
> +
> + #define AFS_HPUX_ENV 1
> + #define AFS_HPUX90_ENV 1
> + #define AFS_HPUX100_ENV 1
> + #define AFS_HPUX101_ENV 1
> + #define AFS_HPUX102_ENV 1
> + #define AFS_HPUX110_ENV 1
> + #define AFS_HPUX1122_ENV 1
> +
> + #define AFS_64BIT_ENV 1 /* Defines
> afs_int32 as int, not long. */
> + #if defined(__LP64__)
> + #define AFS_64BITPOINTER_ENV 1 /* pointers are
> 64 bits. */
> + #endif
> +
> + #include <afs/afs_sysnames.h>
> +
> + #define AFS_SYSCALL 48 /* slot reserved for AFS */
> +
> + /* Machine / Operating system information */
> + #define SYS_NAME "hp_ux1122"
> + #define SYS_NAME_ID SYS_NAME_ID_hp_ux1122
> + #define AFSBIG_ENDIAN 1
> + #define AFS_HAVE_FFS 1
> + #define AFS_HAVE_STATVFS 1 /* System supports statvfs */
> + #define AFS_GLOBAL_SUNLOCK 1
> + #define RXK_LISTENER_ENV 1
> + #define AFS_USERSPACE_IP_ADDR 1
> + #define AFS_GCPAGS 0 /* if nonzero, garbage
> collect PAGs */
> + #define AFS_USE_VOID_PTR 1
> + /*
> + * #define AFS_VM_RDWR_ENV 1
> + */
> + #define AFS_TEXT_ENV 1 /* Older kernels use TEXT */
> + #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
> + #define _KERNEL 1
> + #define afsio_iov uio_iov
> + #define afsio_iovcnt uio_iovcnt
> + #define afsio_offset uio_offset
> + #define afsio_seg uio_seg
> + #define afsio_resid uio_resid
> + #define AFS_UIOSYS UIOSEG_KERNEL
> + #define AFS_UIOUSER UIOSEG_USER
> + #define AFS_CLBYTES CLBYTES
> + #define AFS_MINCHANGE 2
> + #define osi_GetTime(x) do { struct timeval
> osi_GetTimeVar; uniqtime(&osi_GetTimeVar);
> (x)->tv_sec = osi_GetTimeVar.tv_sec; (x)->tv_usec =
> osi_GetTimeVar.tv_usec; } while(0)
> + #define AFS_KALLOC kmem_alloc
> + #define AFS_KFREE kmem_free
> + #define VATTR_NULL vattr_null
> +
> + #if defined(__LP64__)
> + #define AFS_HPUX_64BIT_ENV 1
> + #endif
> +
> + #ifndef UKERNEL
> + /*
> + * On HP-UX, sys/socket.h includes sys/uio.h, and sys/file.h and
> + * sys/uio.h #include each other, and there's no simple way
> to avoid a
> + * warning about the struct uio declaration not being
> visible outside
> + * of some prototype or other. So, we put in a tenative
> declaration to
> + * supress the warnings.
> + */
> + struct uio;
> +
> + #define memset(A, B, S) bzero(A, S)
> + #define memcpy(B, A, S) bcopy(A, B, S)
> + #define memcmp(A, B, S) bcmp(A, B, S)
> + #endif
> + #endif /* KERNEL */
> + #define AFS_DIRENT
> + /* Non-standard definitions */
> + #ifndef EDQUOT
> + #define EDQUOT 69 /* Disc quota exceeded
> */
> + #endif
> +
> + #define USE_UCONTEXT /* should be in afsconfig.h */
> +
> + #endif /* AFS_PARAM_H */
> *** ./src/dir/,dir.c Wed Aug 21 15:53:25 2002
> --- ./src/dir/dir.c Tue Dec 17 14:04:35 2002
> ***************
> *** 76,82 ****
> #ifndef AFS_LINUX20_ENV
> #include "../netinet/in.h"
> #endif
> ! #if !defined(AFS_SUN5_ENV) && !defined(AFS_LINUX20_ENV)
> #include "../h/mbuf.h"
> #endif
> #else /* !defined(UKERNEL) */
> --- 76,82 ----
> #ifndef AFS_LINUX20_ENV
> #include "../netinet/in.h"
> #endif
> ! #if !defined(AFS_SUN5_ENV) && !defined(AFS_LINUX20_ENV)
> &&!defined(AFS_HPUX1122_ENV)
> #include "../h/mbuf.h"
> #endif
> #else /* !defined(UKERNEL) */
> *** ./src/libafs/,MakefileProto.HPUX.in Thu Nov 14 14:08:41 2002
> --- ./src/libafs/MakefileProto.HPUX.in Mon Jan 20 15:32:48 2003
> ***************
> *** 66,71 ****
> --- 66,72 ----
> # seems to hang). When the compiler sees the +ES1.Xindirect_calls
> # option, however, it issues a warning and turns off +Z.
> #
> + <hp_ux110 hp_ux102>
> KDEFS= +ES1.Xindirect_calls +XixdU +Hx0 +ESlit +ESsfc
> +ESssf -Wp,-H300000 -D_KERNEL
> -D_KERNEL_BUILD -D_UNSUPPORTED \
> -DMP +R500 -Wl,+k $(CPU_KDEFS)
> KDEFS_32 = +DA1.0 +DS1.0
> ***************
> *** 73,78 ****
> --- 74,91 ----
> # warning 478: "+Z" and "+ES1.Xindirect_calls" are mutually
> exclusive. "+Z" ignored.
> # warning 530: LP64 migration: Casting from loose to strict
> alignment: Resulting pointer
> may be misaligned.
> KDEFS_64 = +DA2.0W +DS2.0 +M2 +W 478,530
> +
> + <all>
> +
> + <hp_ux1122>
> + KDEFS= +kernel -Wp,-H300000 -D_KERNEL -D_KERNEL_BUILD
> -D_UNSUPPORTED \
> + -DFINE_GRAINED_PROTO_FILES \
> + -DMP -Wl,+k $(CPU_KDEFS)
> + KDEFS_32 =
> + KDEFS_64 = +DD64
> +
> + <all>
> +
> DEFINES= -DAFSDEBUG -DKERNEL -DAFS -DVICE -DNFS -DUFS
> -DINET -DQUOTA -DGETMOUNT
> -DHPONCPLUS
> OPTF=${OPT}
> OPTF2=${OPT2}
> ***************
> *** 90,100 ****
>
> include Makefile.common
>
> BITS = 64 32
>
> setup:
> -$(RM) -f h net dux machine netinet nfs rpc s200 ufs sys
> ! ln -s /usr/include/sys h
> ln -s /etc/conf/net net
> ln -s /etc/conf/dux dux
> ln -s /etc/conf/machine machine
> --- 103,117 ----
>
> include Makefile.common
>
> + <hp_ux110 hp_ux102>
> BITS = 64 32
> + <hp_ux1122>
> + BITS = 64
> + <all>
>
> setup:
> -$(RM) -f h net dux machine netinet nfs rpc s200 ufs sys
> ! ln -fs /etc/conf/h h
> ln -s /etc/conf/net net
> ln -s /etc/conf/dux dux
> ln -s /etc/conf/machine machine
> ***************
> *** 102,108 ****
> --- 119,129 ----
> ln -s /etc/conf/nfs nfs
> ln -s /usr/include/rpc rpc
> ln -s /etc/conf/machine s200
> + <hp_ux110 hp_ux102>
> ln -s /etc/conf/ufs ufs
> + <hp_ux1122>
> + ln -fs /etc/conf/sys ufs
> + <all>
> ln -s /usr/include/sys sys
> for b in $(BITS); do \
> for t in $(KOBJ); do \
> *** ./src/libafs/,Makefile.common Tue Jan 21 08:50:07 2003
> --- ./src/libafs/Makefile.common Tue Jan 21 08:52:44 2003
> ***************
> *** 19,25 ****
>
> .c.o:
> $(CC) $(CFLAGS) -c $<
> ! CRULE1= $(CC) $(CFLAGS) -c $?
> CRULE2= $(CC) $(OPTF) $(CFLAGS) -c $?
> CRULE3= $(CC) $(OPTF2) $(CFLAGS) -c $?
> CRULE4= $(CC) $(DBG) $(CFLAGS) -c $?
> --- 19,25 ----
>
> .c.o:
> $(CC) $(CFLAGS) -c $<
> ! CRULE1= $(CC) -g0 $(CFLAGS) -c $?
> CRULE2= $(CC) $(OPTF) $(CFLAGS) -c $?
> CRULE3= $(CC) $(OPTF2) $(CFLAGS) -c $?
> CRULE4= $(CC) $(DBG) $(CFLAGS) -c $?
> *** ./src/libuafs/,MakefileProto.HPUX.in Fri Sep 7 18:35:24 2001
> --- ./src/libuafs/MakefileProto.HPUX.in Tue Dec 17 14:12:06 2002
> ***************
> *** 30,41 ****
> --- 30,49 ----
> # System specific build commands and flags
> CC = /opt/ansic/bin/cc
> DEFINES= -D_REENTRANT -DAFSDEBUG -DKERNEL -DUKERNEL -DAFS -DVICE
> + <hp_ux102 hp_ux110>
> KOPTS=-Wp,-H200000 -Wl,-a,archive +DA1.0 +z
> + <hp_ux1122>
> + KOPTS=-Wp,-H200000 -Wl,-a,archive_shared
> + <all>
> CFLAGS=-I. -I.. -I${TOP_SRCDIR}/config ${FSINCLUDES}
> $(DEFINES) $(KOPTS) ${DBUG}
> OPTF=-O
> WEBOPTS = -I../nsapi -DNETSCAPE_NSAPI -DNET_SSL -DXP_UNIX
> -DMCC_HTTPD
>
> + <hp_ux102 hp_ux110>
> TEST_CFLAGS= -Wp,-H200000 +DA1.0 +z
> -D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -Dhpux
> -DAFS_HPUX_ENV
> + <hp_ux1122>
> + TEST_CFLAGS= -Wp,-H200000 -D_POSIX_C_SOURCE=199506L
> -DAFS_PTHREAD_ENV -Dhpux
> -DAFS_HPUX_ENV
> + <all>
> TEST_LDFLAGS=
> TEST_LIBS=-lnsl -lm -lpthread -ldld -lc
>
> *** ./src/lwp/,lwp.h Sun Aug 25 23:34:10 2002
> --- ./src/lwp/lwp.h Tue Dec 17 14:14:41 2002
> ***************
> *** 293,302 ****
> --- 293,311 ----
> * cases, and also between machines apparently running the same OS
> * version.
> */
> + /*
> + * On ia64 where the ucontext is used, it can be an extra 48K
> + * Need to account for this. There might be two of these on the
> + * stack too. This needs to be checked.
> + */
> + #if defined(USE_UCONTEXT) && defined(HAVE_UCONTEXT_H)
> + #define AFS_LWP_MINSTACKSIZE (288 * 1024)
> + #else
> #if defined(AFS_LINUX22_ENV)
> #define AFS_LWP_MINSTACKSIZE (192 * 1024)
> #else
> #define AFS_LWP_MINSTACKSIZE (48 * 1024)
> + #endif
> #endif
>
> /* Action to take on stack overflow. */
> *** ./src/lwp/,Makefile.in Wed Sep 19 17:25:25 2001
> --- ./src/lwp/Makefile.in Tue Dec 17 14:13:07 2002
> ***************
> *** 87,93 ****
> ${CC} -E -I${TOP_INCDIR} process.S >process.ss ; \
> ${AS} process.ss -o process.o ; \
> $(RM) -f process.S ;;\
> ! hp_ux110 ) \
> ${CC} ${CFLAGS} -c process.c;; \
> *) \
> /lib/cpp -P -I${TOP_INCDIR} process.s process.ss; \
> --- 87,93 ----
> ${CC} -E -I${TOP_INCDIR} process.S >process.ss ; \
> ${AS} process.ss -o process.o ; \
> $(RM) -f process.S ;;\
> ! hp_ux11* ) \
> ${CC} ${CFLAGS} -c process.c;; \
> *) \
> /lib/cpp -P -I${TOP_INCDIR} process.s process.ss; \
> *** ./src/pinstall/,install.c Wed Aug 21 15:53:27 2002
> --- ./src/pinstall/install.c Tue Dec 17 14:20:20 2002
> ***************
> *** 163,169 ****
> static int
> quickStrip (iname, oname, ignored, copy_only)
> char *iname, *oname; {
> ! int pid, status;
> static char *strip[] = {
> "strip", 0, 0,
> };
> --- 163,170 ----
> static int
> quickStrip (iname, oname, ignored, copy_only)
> char *iname, *oname; {
> ! int status;
> ! pid_t pid;
> static char *strip[] = {
> "strip", 0, 0,
> };
> ***************
> *** 187,193 ****
> exit(1);
>
> default: /* parent */
> ! if (waitpid(pid, &status, 0) != pid) {
> perror("waitpid");
> return -1;
> }
> --- 188,194 ----
> exit(1);
>
> default: /* parent */
> ! if (waitpid(pid, &status, 0) != pid && errno !=
> ECHILD) {
> perror("waitpid");
> return -1;
> }
> ***************
> *** 233,239 ****
> exit(1);
>
> default: /* parent */
> ! if (waitpid(pid, &status, 0) != pid) {
> perror("waitpid");
> return -1;
> }
> --- 234,240 ----
> exit(1);
>
> default: /* parent */
> ! if (waitpid(pid, &status, 0) != pid && errno !=
> ECHILD) {
> perror("waitpid");
> return -1;
> }
> ***************
> *** 272,278 ****
> static
> quickStrip (iname, oname, ignored, copy_only)
> char *iname, *oname; {
> ! int pid, status;
> static char *strip[] = {
> "strip", 0, 0,
> };
> --- 273,280 ----
> static
> quickStrip (iname, oname, ignored, copy_only)
> char *iname, *oname; {
> ! int status;
> ! pid_t pid;
> static char *strip[] = {
> "strip", 0, 0,
> };
> ***************
> *** 296,302 ****
> exit(1);
>
> default: /* parent */
> ! if (waitpid(pid, &status, 0) != pid) {
> perror("waitpid");
> return -1;
> }
> --- 298,304 ----
> exit(1);
>
> default: /* parent */
> ! if (waitpid(pid, &status, 0) != pid && errno !=
> ECHILD) {
> perror("waitpid");
> return -1;
> }
> ***************
> *** 334,340 ****
> exit(1);
>
> default: /* parent */
> ! if (waitpid(pid, &status, 0) != pid) {
> perror("waitpid");
> return -1;
> }
> --- 336,342 ----
> exit(1);
>
> default: /* parent */
> ! if (waitpid(pid, &status, 0) != pid && errno !=
> ECHILD) {
> perror("waitpid");
> return -1;
> }
> *** ./src/rx/,rx_packet.c Tue Sep 10 17:33:55 2002
> --- ./src/rx/rx_packet.c Tue Dec 17 15:54:15 2002
> ***************
> *** 33,39 ****
> #include "../afs/sysincludes.h"
> #endif
> #include "../h/socket.h"
> ! #if !defined(AFS_SUN5_ENV) && !defined(AFS_LINUX20_ENV)
> #if !defined(AFS_OSF_ENV) && !defined(AFS_AIX41_ENV)
> #include "../sys/mount.h" /* it gets pulled in by
> something later anyway */
> #endif
> --- 33,39 ----
> #include "../afs/sysincludes.h"
> #endif
> #include "../h/socket.h"
> ! #if !defined(AFS_SUN5_ENV) && !defined(AFS_LINUX20_ENV) &&
> !defined(AFS_HPUX1122_ENV)
> #if !defined(AFS_OSF_ENV) && !defined(AFS_AIX41_ENV)
> #include "../sys/mount.h" /* it gets pulled in by
> something later anyway */
> #endif
> ***************
> *** 959,965 ****
> * message receipt is done in rxk_input or rx_put.
> */
>
> ! #ifdef AFS_SUN5_ENV
> /*
> * Copy an mblock to the contiguous area pointed to by cp.
> * MTUXXX Supposed to skip <off> bytes and copy <len> bytes,
> --- 959,965 ----
> * message receipt is done in rxk_input or rx_put.
> */
>
> ! #if defined(AFS_SUN5_ENV) || defined(AFS_HPUX1122_ENV)
> /*
> * Copy an mblock to the contiguous area pointed to by cp.
> * MTUXXX Supposed to skip <off> bytes and copy <len> bytes,
> ***************
> *** 1081,1087 ****
>
> #if !defined(AFS_LINUX20_ENV)
> int rx_mb_to_packet(amb, free, hdr_len, data_len, phandle)
> ! #ifdef AFS_SUN5_ENV
> mblk_t *amb;
> #else
> struct mbuf *amb;
> --- 1081,1087 ----
>
> #if !defined(AFS_LINUX20_ENV)
> int rx_mb_to_packet(amb, free, hdr_len, data_len, phandle)
> ! #if defined(AFS_SUN5_ENV) || defined(AFS_HPUX1122_ENV)
> mblk_t *amb;
> #else
> struct mbuf *amb;
> *** ./src/rx/HPUX/,rx_kmutex.h Thu Nov 14 14:12:51 2002
> --- ./src/rx/HPUX/rx_kmutex.h Tue Dec 17 15:50:23 2002
> ***************
> *** 112,122 ****
> --- 112,129 ----
>
> #define MUTEX_TRYENTER(a) b_cpsema(a)
>
> + #ifdef AFS_HPUX1122_ENV
> #define MUTEX_ENTER(a) \
> + ((b_owns_sema(a)) ? osi_Panic("Already Held") : b_psema(a))
> + #define MUTEX_EXIT(a) \
> + ((b_owns_sema(a)) ? b_vsema(a) : osi_Panic("mutex not held"))
> + #else
> + #define MUTEX_ENTER(a) \
> ((b_owns_sema(a)) ? (osi_Panic("Already Held"), 0) : b_psema(a))
>
> #define MUTEX_EXIT(a) \
> ((b_owns_sema(a)) ? b_vsema(a) : (osi_Panic("mutex not
> held"), 0))
> + #endif
>
> #undef MUTEX_ISMINE
> #define MUTEX_ISMINE(a) b_owns_sema(a)
> *** ./src/rx/,rx_kcommon.h Thu Nov 14 16:27:16 2002
> --- ./src/rx/rx_kcommon.h Tue Dec 17 14:22:11 2002
> ***************
> *** 41,47 ****
> --- 41,49 ----
> #include "../h/dir.h"
> #endif
> #include "../h/buf.h"
> + #if !defined(AFS_HPUX1122_ENV)
> #include "../h/mbuf.h"
> + #endif
> #else
> #if defined(AFS_XBSD_ENV)
> #include "../h/dirent.h"
> *** ./src/rx/,rx_kcommon.c Thu Dec 19 14:11:36 2002
> --- ./src/rx/rx_kcommon.c Thu Dec 19 14:11:23 2002
> ***************
> *** 750,756 ****
> --- 750,758 ----
> {
> register afs_int32 code;
> struct socket *newSocket;
> + #if !defined(AFS_HPUX1122_ENV)
> register struct mbuf *nam;
> + #endif
> struct sockaddr_in myaddr;
> int wow;
> #ifdef AFS_HPUX110_ENV
> ***************
> *** 804,810 ****
> --- 806,814 ----
> code = sobind(newSocket, bindnam, addrsize);
> if (code) {
> soclose(newSocket);
> + #if !defined(AFS_HPUX1122_ENV)
> m_freem(nam);
> + #endif
> goto bad;
> }
>
> *** ./,acinclude.m4 Wed Dec 4 18:45:26 2002
> --- ./acinclude.m4 Tue Dec 17 13:24:43 2002
> ***************
> *** 292,297 ****
> --- 292,300 ----
> hppa*-hp-hpux11*)
> AFS_SYSNAME="hp_ux110"
> ;;
> + ia64-hp-hpux*)
> + AFS_SYSNAME="hp_ux1122"
> + ;;
> hppa*-hp-hpux10*)
> AFS_SYSNAME="hp_ux102"
> ;;
>