tviced: cmd comerr viced vlserver libafsrpc libafsauthent
case ${SYS_NAME} in \
- alpha_dux*|sgi_*|sun*_5*|rs_aix*|*linux*|hp_ux110|*fbsd*|*nbsd2*) \
+ alpha_dux*|sgi_*|sun*_5*|rs_aix*|*linux*|hp_ux11*|*fbsd*|*nbsd2*) \
${COMPILE_PART1} tviced ${COMPILE_PART2} ;; \
*) \
echo Not building MT viced for ${SYS_NAME} ;; \
${TOP_LIBDIR}/libtermlib.a:
$(RM) -f ${TOP_LIBDIR}/libtermlib.a
case ${SYS_NAME} in \
- rs_aix* | sun4x_* | sunx86_* | sgi_6? | *linux* | ppc_darwin* | *fbsd*) \
+ rs_aix* | sun4x_* | sunx86_* | sgi_6? | *linux* | ppc_darwin* | *fbsd* | hp_ux1122) \
ln -s libnull.a ${TOP_LIBDIR}/libtermlib.a ;; \
*) \
ln -s /usr/lib/libtermlib.a ${TOP_LIBDIR}/libtermlib.a ;; \
tbutc: cmd comerr bubasics butm budb bucoord cmd butc
case ${SYS_NAME} in \
- alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix4*|*linux*|hp_ux110) \
+ alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix4*|*linux*|hp_ux11*) \
${COMPILE_PART1} tbutc ${COMPILE_PART2} ;; \
*) \
echo Not building MT butc for ${SYS_NAME} ;; \
# pthread based user space RX library
libafsrpc: rx rxkad des
case ${SYS_NAME} in \
- alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux110|*fbsd*|*nbsd2*) \
+ alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*|*fbsd*|*nbsd2*) \
${COMPILE_PART1} libafsrpc ${COMPILE_PART2} ;; \
*) \
echo Not building MT libafsrpc for ${SYS_NAME} ;; \
libafsauthent: ubik auth kauth libafsrpc
case ${SYS_NAME} in \
- alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux110|*fbsd*|*nbsd2*) \
+ alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*|*fbsd*|*nbsd2*) \
${COMPILE_PART1} libafsauthent ${COMPILE_PART2} ;; \
*) \
echo Not building MT libafsrpc for ${SYS_NAME} ;; \
# pthread based user space RX library
shlibafsrpc: rx rxkad des
case ${SYS_NAME} in \
- alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux110) \
+ alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*) \
${COMPILE_PART1} shlibafsrpc ${COMPILE_PART2} ;; \
*) \
echo Not building shared libafsrpc for ${SYS_NAME} ;; \
shlibafsauthent: ubik auth kauth shlibafsrpc
case ${SYS_NAME} in \
- alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux110) \
+ alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*) \
${COMPILE_PART1} shlibafsauthent ${COMPILE_PART2} ;; \
*) \
echo Not building shared libafsrpc for ${SYS_NAME} ;; \
libadmin: libafsauthent bozo
case ${SYS_NAME} in \
- alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux110) \
+ alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*) \
$(MAKE) libadmin_real ;; \
*) \
echo Not building MT libadmin for ${SYS_NAME} ;; \
libjafs: libadmin
case ${SYS_NAME} in \
- alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110) \
+ alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux11*) \
${COMPILE_PART1} JAVA/libjafs ${COMPILE_PART2} ;; \
*) \
echo Not building MT libjafs for ${SYS_NAME} ;; \
hppa*-hp-hpux11*)
AFS_SYSNAME="hp_ux110"
;;
+ ia64-hp-hpux*)
+ AFS_SYSNAME="hp_ux1122"
+ ;;
hppa*-hp-hpux10*)
AFS_SYSNAME="hp_ux102"
;;
int *gp;
struct ucred *newcr;
ulong_t s;
+#if defined(AFS_HPUX1122_ENV)
+ register ulong_t context;
+#endif
AFS_STATCNT(afs_setgroups);
/* 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)
+ /* 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--)
*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 */
}
else
{
+#if defined(AFS_HPUX1122_ENV)
+ MP_SPINUNLOCK_USAV(cred_lock, context);
+#else
(void) UP_SPLX(s);
SPINUNLOCK(cred_lock);
+#endif
}
+
return (setuerror(0), 0);
}
* 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);
#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()
+#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
#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().
*/
#define afs_osi_Sleep(x) sleep((caddr_t) x,PZERO-2)
+#else
+/*
+ * On 11.22 global lock is a beta semaphore, hence we need 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_ */
#include "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;
wakeup((caddr_t) event);
return 0;
}
+
+#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
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 */
, 0, 0, 0, NULL
#endif
};
+#else
+b_sema_t afs_global_sema = {0};
+#endif
void
osi_InitGlock()
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 */
+ b_initsema(&afs_global_sema, 1, NFS_LOCK_ORDER2, "AFS GLOCK");
+ /* afsHash(64); */ /* 64 buckets */
} else {
SPINUNLOCK_USAV(sched_lock, context);
}
#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.
+ */
+#define vmemp_lockx()
+#define vmemp_returnx(a) return(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.
return (len);
}
+#endif
/*
* Note that the standard Sun vnode interface doesn't haven't an vop_lockf(), so this code is
}
-#include "machine/vmparam.h" /* For KERNELSPACE */
+#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"
if (change_to_fstore)
afspgin_update_dbd(vm_info, bsize);
+#if !defined(AFS_HPUX1122_ENV) /* needs to be fixed for 11.22 */
mpproc_info[getprocindex()].cnt.v_exfod += count;
+#endif
vmemp_unlockx(); /* free up VM empire */
*ret_startindex = startindex;
/*
* Update statistics
*/
+#if !defined(AFS_HPUX1122_ENV) /* needs to be checked for 11.22 */
if (steal) {
if (flags & PF_DEACT) {
mpproc_info[getprocindex()].cnt.v_pswpout += npages;
mpproc_info[getprocindex()].cnt.v_pgpgout += npages;
}
}
+#endif
/*
* If time and patience have delivered enough
return(ENOTTY);
}
+#if defined(AFS_HPUX1122_ENV)
+/* looks like even if appl is 32 bit, we need to round to 8 bytes */
+/* 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)
#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
u_short d_reclen;
u_short d_namlen;
};
-#define NDIRSIZ_LEN(len) ((sizeof (struct dirent)+4 - (MAXNAMLEN+1)) + (((len)+1 + 3) &~ 3))
+#define NDIRSIZ_LEN(len) ((sizeof (struct dirent)+4 - (MAXNAMLEN+1)) + (((len)+1 + DIRPAD) &~ DIRPAD))
#endif
#endif /* !defined(UKERNEL) */
*
*
*/
+
#if defined(AFS_HPUX100_ENV)
#define DIRSIZ_LEN(len) \
- ((sizeof (struct __dirent) - (_MAXNAMLEN+1)) + (((len)+1 + 3) &~ 3))
+ ((sizeof (struct __dirent) - (_MAXNAMLEN+1)) + (((len)+1 + DIRPAD) &~ DIRPAD))
#else
#if defined(AFS_SUN56_ENV)
#define DIRSIZ_LEN(len) ((18 + (len) + 1 + 7) & ~7 )
/* pad out the remaining characters with zeros */
if (code == 0) {
- AFS_UIOMOVE(bufofzeros, ((slen + 4) & ~3) - slen, UIO_READ,
+ AFS_UIOMOVE(bufofzeros, ((slen + 1 + DIRPAD) & ~DIRPAD) - slen, UIO_READ,
auio, code);
}
AFS_MOVE_LOCK();
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);
+ 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) {
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);
+ 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) {
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,
+ AFS_UIOMOVE(bufofzeros, ((o_slen + 1 + DIRPAD) & ~DIRPAD) - o_slen,
UIO_READ, auio, code);
}
/* pad out the difference between rlen and slen... */
}
/* pad out the remaining characters with zeros */
if (code == 0) {
- AFS_UIOMOVE(bufofzeros, ((o_slen + 4) & ~3) - o_slen, UIO_READ, auio, code);
+ 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) {
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);
+ 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) {
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);
+ 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) {
#endif
#ifdef AFS_HPUX_ENV
{
+#if !defined(AFS_HPUX1122_ENV)
+ /* 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;
t.tv_usec = atv->tv_usec;
s = spl7(); time = t; (void) splx(s);
resettodr(atv);
+#endif
}
#else
{
#else
void 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
+#endif
{
AFS_STATCNT(afs_warn);
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>
#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"
${INSTALL} -f ${srcdir}/afs.rc.solaris.2_5 ${DEST}/root.client/usr/vice/etc/modload/afs.rc ;;\
alpha_osf* ) \
${INSTALL} -f ${srcdir}/afs.rc.alpha ${DEST}/root.client/usr/vice/etc/dkload/afs.rc ;;\
+ hp_ux1122 ) \
+ ${INSTALL} -f ${srcdir}/afs.rc.hpux10 ${DEST}/root.client/usr/vice/etc/dkload/afs.rc ;\
+ ${INSTALL} -f ${srcdir}/afs.hpux1122.driver ${DEST}/root.client/usr/vice/etc/afs.driver ;;\
hp_ux10? | hp_ux11? ) \
${INSTALL} -f ${srcdir}/afs.rc.hpux10 ${DEST}/root.client/usr/vice/etc/dkload/afs.rc ;\
${INSTALL} -f ${srcdir}/afs.hpux102.driver ${DEST}/root.client/usr/vice/etc/afs.driver ;;\
--- /dev/null
+* 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$
+*
+* 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.
+*
+$$$
SHLIB_LINKER="ld -b"
;;
+ hp_ux1122)
+ AR="/usr/bin/ar"
+ AS="/usr/ccs/bin/as"
+ CC="/opt/ansic/bin/cc"
+ DBM="/lib/hpux32/libndbm.so"
+ LD="/bin/ld "
+ LEX="/opt/langtools/bin/lex"
+ LWP_OPTMZ="-O"
+ MT_CC="$CC"
+ MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}'
+ MT_LIBS="-lpthread"
+ MV="/bin/mv"
+ OPTMZ="-O"
+ PAM_CFLAGS="-b +z -Wl,+k"
+ PAM_LIBS="/usr/lib/hpux32/libpam.so"
+ RANLIB="/usr/bin/ranlib"
+ RM="/bin/rm"
+ SHLIB_LDFLAGS="-b -Bsymbolic"
+ SHLIB_SUFFIX="sl"
+ TXLIBS="/usr/lib/hpux32/libcurses.so"
+ VFSCK_CFLAGS="-I/usr/old/usr/include -D_FILE64"
+ XCFLAGS0="-ldld -lc -Wp,-H200000 -Wl,-a,archive_shared -DAUTH_DBM_LOG +z -Wl,+k -D_LARGEFILE64_SOURCE"
+ XCFLAGS64="${XCFLAGS0} +DD64"
+ XCFLAGS="${XCFLAGS0}"
+ XLIBELFA="-lelf"
+ #XLIBS="${LIB_AFSDB} -lnsl"
+ XLIBS="${LIB_AFSDB}"
+ YACC="/opt/langtools/bin/yacc"
+ SHLIB_LINKER="ld -b"
+ ;;
+
i386_fbsd_4*)
LEX="flex -l"
MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
#define SYS_NAME_ID_hp800_ux101 413
#define SYS_NAME_ID_hp_ux102 414
#define SYS_NAME_ID_hp_ux110 415
+#define SYS_NAME_ID_hp_ux11i 416
+#define SYS_NAME_ID_hp_ux1122 417
#define SYS_NAME_ID_mac2_51 500
#define SYS_NAME_ID_mac_aux10 501
--- /dev/null
+/*
+ * 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 */
#endif /* AFS_MACH_ENV */
#endif
#endif
-#if !defined(AFS_SUN5_ENV) && !defined(AFS_LINUX20_ENV)
+#if !defined(AFS_SUN5_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_HPUX1122_ENV)
#include "h/mbuf.h"
#endif
#ifndef AFS_LINUX20_ENV
# 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
# 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}
include Makefile.common
+<hp_ux110 hp_ux102>
BITS = 64 32
+<hp_ux1122>
+BITS = 64
+<all>
setup:
-$(RM) -f h conf net dux machine netinet nfs rpc s200 ufs sys
+<hp_ux110 hp_ux102>
ln -fs /usr/include/sys h
+<hp_ux1122>
+ ln -fs /etc/conf/h h
+<all>
ln -fs /etc/conf conf
ln -fs /etc/conf/net net
ln -fs /etc/conf/dux dux
ln -fs /etc/conf/nfs nfs
ln -fs /usr/include/rpc rpc
ln -fs /etc/conf/machine s200
+<hp_ux110 hp_ux102>
ln -fs /etc/conf/ufs ufs
+<hp_ux1122>
+ ln -fs /etc/conf/sys ufs
+<all>
ln -fs /usr/include/sys sys
for b in $(BITS); do \
for t in $(KOBJ); do \
# System specific build commands and flags
CC = /opt/ansic/bin/cc
DEFINES= -D_REENTRANT -DKERNEL -DUKERNEL
+<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_OBJDIR}/src/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
all: ${TOP_LIBDIR}/liblwp.a ${TOP_INCDIR}/lock.h ${TOP_INCDIR}/lwp.h ${TOP_INCDIR}/preempt.h ${TOP_INCDIR}/timer.h
depinstall: ${TOP_INCDIR}/lock.h ${TOP_INCDIR}/lwp.h ${TOP_INCDIR}/preempt.h ${TOP_INCDIR}/timer.h
-
#
# Build rules
${CC} -E -I${TOP_INCDIR} process.S >process.ss ; \
${AS} process.ss -o process.o ; \
$(RM) -f process.S ;;\
- hp_ux110 ) \
+ hp_ux11* ) \
${CC} ${CFLAGS} -c ${srcdir}/process.c;; \
*) \
/lib/cpp -P -I${TOP_INCDIR} ${srcdir}/process.s process.ss; \
* 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. */
#define LWP_SOQUIET 1 /* do nothing */
*/
static int quickStrip (char *iname, char *oname, int ignored, int copy_only)
{
- int pid, status;
+ int pid;
+ pid_t status;
static char *strip[] = {
"strip", 0, 0,
};
exit(1);
default: /* parent */
- if (waitpid(pid, &status, 0) != pid) {
+ if (waitpid(pid, &status, 0) != pid && errno != ECHILD) {
perror("waitpid");
return -1;
}
exit(1);
default: /* parent */
- if (waitpid(pid, &status, 0) != pid) {
+ if (waitpid(pid, &status, 0) != pid && errno != ECHILD) {
perror("waitpid");
return -1;
}
exit(1);
default: /* parent */
- if (waitpid(pid, &status, 0) != pid) {
+ if (waitpid(pid, &status, 0) != pid && errno != ECHILD) {
perror("waitpid");
return -1;
}
exit(1);
default: /* parent */
- if (waitpid(pid, &status, 0) != pid) {
+ if (waitpid(pid, &status, 0) != pid && errno != ECHILD) {
perror("waitpid");
return -1;
}
#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)
{
register afs_int32 code;
struct socket *newSocket;
+#if !defined(AFS_HPUX1122_ENV)
struct mbuf *nam;
+#endif
struct sockaddr_in myaddr;
#ifdef AFS_HPUX110_ENV
/* prototype copied from kernel source file streams/str_proto.h */
code = sobind(newSocket, bindnam, addrsize);
if (code) {
soclose(newSocket);
+#if !defined(AFS_HPUX1122_ENV)
m_freem(nam);
+#endif
goto bad;
}
#include "h/proc.h"
#endif
#include "h/socket.h"
-#if !defined(AFS_SUN5_ENV) && !defined(AFS_LINUX20_ENV)
+#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
* message receipt is done in rxk_input or rx_put.
*/
-#ifdef AFS_SUN5_ENV
+#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,
#if !defined(AFS_LINUX20_ENV)
int rx_mb_to_packet(amb, free, hdr_len, data_len, phandle)
-#ifdef AFS_SUN5_ENV
+#if defined(AFS_SUN5_ENV) || defined(AFS_HPUX1122_ENV)
mblk_t *amb;
#else
struct mbuf *amb;