powerpc-apple-darwin5.5*)
AFS_SYSNAME="ppc_darwin_14"
;;
+ powerpc-apple-darwin6.0*)
+ AFS_SYSNAME="ppc_darwin_60"
+ ;;
sparc-sun-solaris2.5*)
AFS_SYSNAME="sun4x_55"
;;
/*
* Time related macros
*/
+#ifndef AFS_DARWIN60_ENV
extern struct timeval time;
+#endif
#define osi_Time() (time.tv_sec)
#define afs_hz hz
#include "../afs/sysincludes.h"
#include "../afs/afsincludes.h"
+#ifdef AFS_DARWIN60_ENV /* not in Kernel.framework anymore !?! */
+#include <sys/syscall.h>
+#else
#include "../sys/syscall.h"
+#endif
#include <mach/kmod.h>
struct vfsconf afs_vfsconf;
struct vnode **dirvpp, struct vnode **vpp);
/* osi_vm.c */
extern void osi_VM_NukePages(struct vnode *vp, off_t offset, off_t size);
-extern int osi_VM_Setup(struct vcache *avc);
+extern int osi_VM_Setup(struct vcache *avc, int force);
#endif /* _OSI_PROTO_H_ */
#endif
}
-int osi_VM_Setup(struct vcache *avc)
-{
- int error;
- struct vnode *vp=AFSTOV(avc);
-
- if (UBCISVALID(vp) && (avc->states & CStatd)) {
- if (!UBCINFOEXISTS(vp) && !ISSET(vp->v_flag, VTERMINATE)) {
- osi_vnhold(avc,0);
- AFS_GUNLOCK();
- if ((error=ubc_info_init(&avc->v))) {
- AFS_GLOCK();
- AFS_RELE(avc);
- return error;
- }
+int osi_VM_Setup(struct vcache *avc, int force) {
+ int error;
+ struct vnode *vp=AFSTOV(avc);
+
+ if (UBCISVALID(vp) && ((avc->states & CStatd) || force)) {
+ if (!UBCINFOEXISTS(vp) && !ISSET(vp->v_flag, VTERMINATE)) {
+ osi_vnhold(avc,0);
+ avc->states |= CUBCinit;
+ AFS_GUNLOCK();
+ if ((error=ubc_info_init(&avc->v))) {
+ AFS_GLOCK();
+ avc->states &= ~CUBCinit;
+ AFS_RELE(avc);
+ return error;
+ }
#ifndef AFS_DARWIN14_ENV
- simple_lock(&avc->v.v_interlock);
- if (!ubc_issetflags(&avc->v, UI_HASOBJREF))
+ simple_lock(&avc->v.v_interlock);
+ if (!ubc_issetflags(&avc->v, UI_HASOBJREF))
#ifdef AFS_DARWIN13_ENV
- if (ubc_getobject(&avc->v, (UBC_NOREACTIVATE|UBC_HOLDOBJECT)))
- panic("VM_Setup: null object");
+ if (ubc_getobject(&avc->v, (UBC_NOREACTIVATE|UBC_HOLDOBJECT)))
+ panic("VM_Setup: null object");
#else
(void)_ubc_getobject(&avc->v, 1); /* return value not used */
#endif
- simple_unlock(&avc->v.v_interlock);
+ simple_unlock(&avc->v.v_interlock);
#endif
- AFS_GLOCK();
- AFS_RELE(avc);
- }
- if (UBCINFOEXISTS(&avc->v))
- ubc_setsize(&avc->v, avc->m.Length);
- }
- return 0;
+ AFS_GLOCK();
+ avc->states &= ~CUBCinit;
+ AFS_RELE(avc);
+ }
+ if (UBCINFOEXISTS(&avc->v))
+ ubc_setsize(&avc->v, avc->m.Length);
+ }
+ return 0;
}
osi_FlushPages(avc); /* hold bozon lock, but not basic vnode lock */
afs_BozonUnlock(&avc->pvnLock, avc);
AFS_GUNLOCK();
+#ifdef AFS_DARWIN14_ENV
+ if (UBCINFOEXISTS(ap->a_vp) && ap->a_vp->v_ubcinfo->ui_refcount < 2) {
+ ubc_hold(ap->a_vp);
+ if (ap->a_vp->v_ubcinfo->ui_refcount < 2) {
+ printf("afs: Imminent ui_refcount panic\n");
+ } else {
+ printf("afs: WARNING: ui_refcount panic averted\n");
+ }
+ }
+#endif
+
return code;
}
register struct vnode *vp = ap->a_vp;
register struct vcache *vc = VTOAFS(ap->a_vp);
int s = vc->states;
- char buf[20];
printf("tag %d, fid: %ld.%x.%x.%x, opens %d, writers %d", vp->v_tag, vc->fid.Cell,
vc->fid.Fid.Volume, vc->fid.Fid.Vnode, vc->fid.Fid.Unique, vc->opens,
vc->execsOrWriters);
printf("\n states%s%s%s%s%s", (s&CStatd) ? " statd" : "", (s&CRO) ? " readonly" : "",(s&CDirty) ? " dirty" : "",(s&CMAPPED) ? " mapped" : "", (s&CVFlushed) ? " flush in progress" : "");
- if (UBCISVALID(vp))
- printf("\n UBC: %s%s",
- UBCINFOEXISTS(vp) ? "exists, " : "does not exist",
+ if (UBCISVALID(vp)) {
+ printf("\n UBC: ");
+ if (UBCINFOEXISTS(vp)) {
+ printf("exists, ") ;
#ifdef AFS_DARWIN14_ENV
- UBCINFOEXISTS(vp) ?
- sprintf(buf, "refs %d", vp->v_ubcinfo->ui_refcount),buf : "");
+ printf("refs %d%s%s", vp->v_ubcinfo->ui_refcount,
+ ubc_issetflags(vp, UI_HASOBJREF) ? " HASOBJREF" : "",
+ ubc_issetflags(vp, UI_WASMAPPED) ? " WASMAPPED" : "");
#else
- UBCINFOEXISTS(vp) ?
- sprintf(buf, "holdcnt %d", vp->v_ubcinfo->ui_holdcnt),buf : "");
+ printf("holdcnt %d", vp->v_ubcinfo->ui_holdcnt);
#endif
+ } else printf("does not exist");
+ }
printf("\n");
return 0;
}
return code;
}
#endif
+#if defined(AFS_DARWIN_ENV)
+ if (avc->states & CUBCinit) {
+ code = afs_CopyOutAttrs(avc, attrs);
+ return code;
+ }
+#endif
#if defined(AFS_SUN_ENV) || defined(AFS_ALPHA_ENV) || defined(AFS_SUN5_ENV)
afs_BozonLock(&avc->pvnLock, avc);
#ifdef AFS_OSF_ENV
#define CWired 0x00000800 /* OSF hack only */
#else
+#ifdef AFS_DARWIN_ENV
+#define CUBCinit 0x00000800
+#else
#define CWRITE_IGN 0x00000800 /* Next OS hack only */
#endif
+#endif
#define CUnique 0x00001000 /* vc's uniquifier - latest unifiquier for fid */
#define CForeign 0x00002000 /* this is a non-afs vcache */
#define CUnlinked 0x00010000
#else
#ifdef AFS_DARWIN_ENV
#define afs_VerifyVCache(avc, areq) \
- (((avc)->states & CStatd) ? (osi_VM_Setup(avc), 0) : \
+ (((avc)->states & CStatd) ? (osi_VM_Setup(avc, 0), 0) : \
afs_VerifyVCache2((avc),areq))
#else
#define afs_VerifyVCache(avc, areq) \
#ifdef AFS_SGI62_ENV
#include "../h/hashing.h"
#endif
-#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_FBSD_ENV)
+#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_FBSD_ENV) && !defined(AFS_DARWIN60_ENV)
#include <netinet/in_var.h>
#endif
#endif /* !UKERNEL */
#ifdef AFS_SGI62_ENV
#include "../h/hashing.h"
#endif
-#if !defined(AFS_HPUX110_ENV)
+#if !defined(AFS_HPUX110_ENV) && !defined(AFS_DARWIN60_ENV)
#include "netinet/in_var.h"
#endif
#endif /* !defined(UKERNEL) */
}
#else /* AFS_USERSPACE_IP_ADDR */
struct ifnet *tifnp;
+#ifdef AFS_DARWIN60_ENV
+ struct ifaddr *tifadp = (struct ifaddr *) 0;
+#else
struct in_ifaddr *tifadp = (struct in_ifaddr *) 0;
+#endif
extern struct ifnet *rxi_FindIfnet();
tifnp = rxi_FindIfnet(parm2, &tifadp); /* make iterative */
if (tifnp && tifadp) {
+#ifdef AFS_DARWIN60_ENV
+ mask = ((struct sockaddr_in *)tifadp->ifa_netmask)->sin_addr.s_addr;
+#else
mask = tifadp->ia_subnetmask;
+#endif
} else {
code = -1;
}
#ifdef AFS_SGI62_ENV
#include "../h/hashing.h"
#endif
-#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV)
+#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN60_ENV)
#include <netinet/in_var.h>
#endif /* ! ASF_HPUX110_ENV */
#endif /* !defined(UKERNEL) */
#ifdef AFS_SGI62_ENV
#include "../h/hashing.h"
#endif
-#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV)
+#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN60_ENV)
#include <netinet/in_var.h>
#endif /* ! AFS_HPUX110_ENV */
#endif /* !defined(UKERNEL) */
#ifdef AFS_SGI62_ENV
#include "../h/hashing.h"
#endif
-#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV)
+#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN60_ENV)
#include <netinet/in_var.h>
#endif /* AFS_HPUX110_ENV */
+#ifdef AFS_DARWIN60_ENV
+#include <net/if_var.h>
+#endif
#endif /* !defined(UKERNEL) */
#include "../afs/afsincludes.h" /* Afs-based standard headers */
}
}
#else /* AFS_USERSPACE_IP_ADDR */
-#if (! defined(AFS_SUN5_ENV)) && defined(USEIFADDR)
+#if (! defined(AFS_SUN5_ENV)) && !defined(AFS_DARWIN60_ENV) && defined(USEIFADDR)
void afsi_SetServerIPRank(struct srvAddr *sa, struct in_ifaddr *ifa)
{
struct sockaddr_in *sin;
#endif /* IFF_POINTTOPOINT */
}
#endif /*(!defined(AFS_SUN5_ENV)) && defined(USEIFADDR)*/
+#if defined(AFS_DARWIN60_ENV) && defined(USEIFADDR)
+#ifndef afs_min
+#define afs_min(A,B) ((A)<(B)) ? (A) : (B)
+#endif
+void
+afsi_SetServerIPRank(sa, ifa)
+ struct srvAddr *sa;
+ struct ifaddr *ifa;
+{
+ struct sockaddr_in *sin;
+ int t;
+
+ afs_uint32 subnetmask, myAddr, myNet, myDstaddr, mySubnet, netMask;
+ afs_uint32 serverAddr ;
+
+ if (ifa->ifa_addr->sa_family != AF_INET)
+ return;
+ sin=(struct sockaddr_in *)ifa->ifa_addr;
+ myAddr = ntohl(sin->sin_addr.s_addr); /* one of my IP addr in host order */
+ serverAddr = ntohl(sa->sa_ip); /* server's IP addr in host order */
+ sin=(struct sockaddr_in *)ifa->ifa_netmask;
+ subnetmask = ntohl(sin->sin_addr.s_addr);/* subnet mask in host order */
+ sin=(struct sockaddr_in *)ifa->ifa_dstaddr;
+ if (sin)
+ myDstaddr=sin->sin_addr.s_addr;
+
+ if ( IN_CLASSA(myAddr) ) netMask = IN_CLASSA_NET;
+ else if ( IN_CLASSB(myAddr) ) netMask = IN_CLASSB_NET;
+ else if ( IN_CLASSC(myAddr) ) netMask = IN_CLASSC_NET;
+ else netMask = 0;
+
+ myNet = myAddr & netMask;
+ mySubnet = myAddr & subnetmask;
+
+ if ( (serverAddr & netMask ) == myNet ) {
+ if ( (serverAddr & subnetmask ) == mySubnet) {
+ if ( serverAddr == myAddr ) { /* same machine */
+ sa->sa_iprank = afs_min(sa->sa_iprank, TOPR);
+ } else { /* same subnet */
+ sa->sa_iprank = afs_min(sa->sa_iprank, HI + ifa->ifa_metric);
+ }
+ } else { /* same net */
+ sa->sa_iprank = afs_min(sa->sa_iprank, MED + ifa->ifa_metric);
+ }
+ }
+#ifdef IFF_POINTTOPOINT
+ /* check for case #4 -- point-to-point link */
+ if ((ifa->ia_ifp->if_flags & IFF_POINTOPOINT) &&
+ (myDstaddr == serverAddr))) {
+ if (ifa->ia_ifp->if_metric >= (MAXDEFRANK - MED)/PPWEIGHT)
+ t = MAXDEFRANK;
+ else
+ t = MED + (PPWEIGHT << ifa->->ifa_metric);
+ if (sa->sa_iprank > t)
+ sa->sa_iprank = t;
+ }
+#endif /* IFF_POINTTOPOINT */
+}
+#endif /*(!defined(AFS_SUN5_ENV)) && defined(USEIFADDR)*/
#endif /* else AFS_USERSPACE_IP_ADDR */
#ifdef AFS_SGI62_ENV
#ifdef AFS_SGI62_ENV
(void) hash_enum(&hashinfo_inaddr, afsi_enum_set_rank, HTF_INET, NULL,
(caddr_t)sa, NULL);
+#elif defined(AFS_DARWIN60_ENV)
+ {
+ struct ifnet *ifn;
+ struct ifaddr *ifa;
+ TAILQ_FOREACH(ifn , &ifnet, if_link) {
+ TAILQ_FOREACH(ifa , &ifn->if_addrhead, ifa_link) {
+ afsi_SetServerIPRank(sa, ifa);
+ }
+ }
+ }
#elif defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV)
{
struct in_ifaddr *ifa;
#ifdef AFS_SGI62_ENV
#include "../h/hashing.h"
#endif
-#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV)
+#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN60_ENV)
#include <netinet/in_var.h>
#endif /* ! AFS_HPUX110_ENV */
#endif /* !defined(UKERNEL) */
#ifdef AFS_SGI62_ENV
#include "../h/hashing.h"
#endif
-#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV)
+#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN60_ENV)
#include <netinet/in_var.h>
#endif /* ! AFS_HPUX110_ENV */
#endif /* !defined(UKERNEL) */
#ifdef AFS_LINUX22_ENV
vcache2inode(avc); /* Set the inode attr cache */
#endif
+#ifdef AFS_DARWIN_ENV
+ osi_VM_Setup(avc,1);
+#endif
} /*afs_ProcessFS*/
#endif
ReleaseWriteLock(&tvc->lock);
#ifdef AFS_DARWIN_ENV
- osi_VM_Setup(tvc);
+ osi_VM_Setup(tvc,0);
#endif
return tvc;
}
}
ReleaseWriteLock(&tvc->lock);
-#ifdef AFS_DARWIN_ENV
- osi_VM_Setup(avc);
-#endif
return tvc;
} /*afs_GetVCache*/
afs_ProcessFS(tvc, &OutStatus, areq);
ReleaseWriteLock(&tvc->lock);
-#ifdef AFS_DARWIN_ENV
- osi_VM_Setup(tvc);
-#endif
return tvc;
}
#endif
#ifdef AFS_DARWIN_ENV
if (tvc)
- osi_VM_Setup(tvc);
+ osi_VM_Setup(tvc, 0);
#endif
return tvc;
} /*afs_FindVCache*/
#ifdef AFS_SGI62_ENV
#include "../h/hashing.h"
#endif
-#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV)
+#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN60_ENV)
#include <netinet/in_var.h>
#endif /* ! AFS_HPUX110_ENV */
#endif /* !defined(UKERNEL) */
if [ -f $AFSDOPT ]; then
OPTIONS=`cat $AFSDOPT`
else
- OPTIONS=$MEDIUM
+ OPTIONS="$MEDIUM -fakestat"
+fi
+
+if [ -x /usr/sbin/kmodstat ]; then
+ KMODSTAT=/usr/sbin/kmodstat
+else
+ if [ -x /usr/sbin/kextstat ]; then
+ KMODSTAT=/usr/sbin/kextstat
+fi
fi
# Need the commands ps, awk, kill, sleep
PATH=${PATH}${PATH:+:}/sbin:/bin:/usr/bin
-if kmodstat | grep -q openafs ; then
+if $KMODSTAT | grep -q openafs ; then
:
else
if [ -d $VICEETC/afs.kext ]; then
exit 1
fi
fi
-if kmodstat | grep -q openafs ; then
+if $KMODSTAT | grep -q openafs ; then
:
else
echo "AFS kernel extensions failed to initialize. Skipping AFS startup."
else \
sprintf(dumpname, "%s (DumpId %u)", name, dbDumpId);
-#if defined(AFS_NT40_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_SUN4_ENV)
-localtime_r(t, tm)
- time_t *t;
- struct tm *tm;
+#if defined(AFS_NT40_ENV) || (defined(AFS_DARWIN_ENV) && !defined(AFS_DARWIN60_ENV)) || defined(AFS_SUN4_ENV)
+int localtime_r(time_t *t, struct tm *tm)
{
memcpy(tm, localtime(t), sizeof(struct tm));
}
char *bufferBlock;
/* compute the absolute expiration date */
-afs_int32
-calcExpirationDate(expType, expDate, createTime)
- afs_int32 expType;
- afs_int32 expDate;
- afs_int32 createTime;
+afs_int32 calcExpirationDate(afs_int32 expType, afs_int32 expDate,
+ afs_int32 createTime)
{
struct ktime_date kd;
afs_int32 Add_RelDate_to_Time();
afs_int32 curr_bserver = 0;
struct rx_connection *curr_fromconn = (struct rx_connection *)0;
-struct rx_connection *Bind(server)
- afs_int32 server;
+struct rx_connection *Bind(afs_int32 server)
{
if (curr_fromconn) {
if (curr_bserver == server) /* Keep connection if have it */
#define BIGCHUNK 102400
afs_int32
-dumpVolume(curDump, dparamsPtr)
- struct tc_dumpDesc *curDump;
- struct dumpRock *dparamsPtr;
+dumpVolume(struct tc_dumpDesc *curDump, struct dumpRock *dparamsPtr)
{
struct butm_tapeInfo *tapeInfoPtr = dparamsPtr->tapeInfoPtr;
struct dumpNode *nodePtr = dparamsPtr->node;
}
afs_int32
-xbsaDumpVolume(curDump, dparamsPtr)
- struct tc_dumpDesc *curDump;
- struct dumpRock *dparamsPtr;
+xbsaDumpVolume(struct tc_dumpDesc *curDump, struct dumpRock *dparamsPtr)
{
#ifdef xbsa
struct butm_tapeInfo *tapeInfoPtr = dparamsPtr->tapeInfoPtr;
* be done for user aborts?
*/
-afs_int32
-dumpPass(dparamsPtr, passNumber)
- struct dumpRock *dparamsPtr;
- int passNumber;
+afs_int32 dumpPass(struct dumpRock *dparamsPtr, int passNumber)
{
struct dumpNode *nodePtr = dparamsPtr->node;
struct butm_tapeInfo *tapeInfoPtr = dparamsPtr->tapeInfoPtr;
return(code);
}
-Dumper(nodePtr)
- struct dumpNode *nodePtr;
+int Dumper(struct dumpNode *nodePtr)
{
struct dumpRock dparams;
struct butm_tapeInfo tapeInfo;
* character typed by user, one of r, o or a
*/
-char
-retryPrompt(volumeName, volumeId, taskId)
- char *volumeName;
- afs_int32 volumeId;
- afs_uint32 taskId;
+char retryPrompt(char *volumeName, afs_int32 volumeId, afs_uint32 taskId)
{
afs_int32 start;
char ch;
}
/* For testing: it prints the tape label */
-printTapeLabel(tl)
- struct butm_tapeLabel *tl;
+int printTapeLabel(struct butm_tapeLabel *tl)
{
printf("Tape Label\n");
printf(" structVersion = %d\n", tl->structVersion);
* Create a tape structure to be satisfy the backup database
* even though we don't really use a tape with XBSA.
*/
-getXBSATape(dparamsPtr)
- struct dumpRock *dparamsPtr;
+int getXBSATape(struct dumpRock *dparamsPtr)
{
struct dumpNode *nodePtr = dparamsPtr->node;
struct butm_tapeInfo *tapeInfoPtr = dparamsPtr->tapeInfoPtr;
* 1 - prompt regardless
*/
-getDumpTape(dparamsPtr, interactiveFlag, append)
- struct dumpRock *dparamsPtr;
- int interactiveFlag;
- afs_int32 append;
+int getDumpTape(struct dumpRock *dparamsPtr, int interactiveFlag,
+ afs_int32 append)
{
struct dumpNode *nodePtr = dparamsPtr->node;
struct butm_tapeInfo *tapeInfoPtr = dparamsPtr->tapeInfoPtr;
return(code);
}
-makeVolumeHeader(vhptr, dparamsPtr, fragmentNumber)
- struct volumeHeader *vhptr;
- struct dumpRock *dparamsPtr;
- int fragmentNumber;
+int makeVolumeHeader(struct volumeHeader *vhptr, struct dumpRock *dparamsPtr,
+ int fragmentNumber)
{
struct dumpNode *nodePtr = dparamsPtr->node;
struct tc_dumpDesc *curDump;
return (code);
}
-volumeHeader_hton(hostPtr, netPtr)
- struct volumeHeader *hostPtr, *netPtr;
+int volumeHeader_hton(struct volumeHeader *hostPtr,
+ struct volumeHeader *netPtr)
{
struct volumeHeader volHdr;
/* database related routines */
-afs_int32
-createDump(dparamsPtr)
- struct dumpRock *dparamsPtr;
+afs_int32 createDump(struct dumpRock *dparamsPtr)
{
struct dumpNode *nodePtr = dparamsPtr->node;
struct budb_dumpEntry *dumpPtr;
* server as the original server and go back to it each time we pass 0
* as the server.
*/
-afs_int32 InitToServer(afs_int32 taskId, struct butx_transactionInfo *butxInfoP, char *server)
+afs_int32 InitToServer(afs_int32 taskId,
+ struct butx_transactionInfo *butxInfoP, char *server)
{
static char origserver[BSA_MAX_DESC];
static int init=0;
/* DeleteDump
*
*/
-DeleteDump(ptr)
- struct deleteDumpIf *ptr;
+int DeleteDump(struct deleteDumpIf *ptr)
{
afs_int32 taskId;
afs_int32 rc, code=0;
--- /dev/null
+# Keep macros within each section in sorted order for clean diff displays.
+#
+# AFS_OSTYPE used to indicate suffixes and os specific subdirectories.
+AFS_OSTYPE = DARWIN
+#
+#
+# compilation and link editor flags
+XCFLAGS=-no-cpp-precomp
+#MT_CFLAGS=-D_REENTRANT -DAFS_PTHREAD_ENV ${XCFLAGS}
+#MT_CC=cc
+KROOT=
+KINCLUDES=-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers
+#SHARE_LDFLAGS =
+LWP_OPTMZ=-O2
+OPTMZ=-O2
+DBG=-g
+REGEX_OBJ=regex.o
+
+
+#
+# libraries
+XLIBS=@LIB_AFSDB@
+TXLIBS=-lncurses
+#MTLIBS=
+#XLIBELFA=
+#XLIBKVM=
+#
+SHLIB_SUFFIX=
+SHLIB_CFLAGS=
+#
+# programs
+AR=ar
+AS=as
+CC=cc
+CP=cp
+INSTALL=${TOP_SRCDIR}/pinstall/pinstall
+LEX=lex -l
+LD= ld
+LORDER = lorder
+MV=mv
+RANLIB=ranlib
+RM=rm
+STRIP= strip
#define SYS_NAME_ID_ppc_darwin_12 503
#define SYS_NAME_ID_ppc_darwin_13 504
#define SYS_NAME_ID_ppc_darwin_14 505
+#define SYS_NAME_ID_ppc_darwin_60 506
#define SYS_NAME_ID_next_mach20 601
#define SYS_NAME_ID_next_mach30 602
--- /dev/null
+#ifndef AFS_PARAM_H
+#define AFS_PARAM_H
+
+#define AFS_ENV 1
+#define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */
+#define AFS_PPC_ENV 1
+#define AFS_VFSINCL_ENV 1
+
+#include <afs/afs_sysnames.h>
+
+#define AFS_DARWIN_ENV
+#define AFS_DARWIN13_ENV
+#define AFS_DARWIN14_ENV
+#define AFS_DARWIN60_ENV
+#define AFS_NONFSTRANS
+#define AFS_SYSCALL 230
+#define AFS_NAMEI_ENV 1
+
+/* File system entry (used if mount.h doesn't define MOUNT_AFS */
+#define AFS_MOUNT_AFS "afs"
+
+/* Machine / Operating system information */
+#define sys_ppc_darwin_12 1
+#define sys_ppc_darwin_13 1
+#define sys_ppc_darwin_14 1
+#define sys_ppc_darwin_60 1
+#define SYS_NAME "ppc_darwin_60"
+#define SYS_NAME_ID SYS_NAME_ID_ppc_darwin_60
+#define AFSBIG_ENDIAN 1
+#define AFS_HAVE_FFS 1 /* Use system's ffs. */
+
+#define AFS_GCPAGS 1 /* if nonzero, garbage collect PAGs */
+#define RXK_LISTENER_ENV 1
+
+#ifdef KERNEL
+#undef MACRO_BEGIN
+#undef MACRO_END
+#include <kern/macro_help.h>
+#define AFS_GLOBAL_SUNLOCK 1
+#define AFS_VFS34 1 /* What is VFS34??? */
+#define afsio_iov uio_iov
+#define afsio_iovcnt uio_iovcnt
+#define afsio_offset uio_offset
+#define afsio_seg uio_segflg
+#define afsio_resid uio_resid
+#define AFS_UIOSYS UIO_SYSSPACE
+#define AFS_UIOUSER UIO_USERSPACE
+#define AFS_CLBYTES CLBYTES
+#define osi_GetTime(x) microtime(x)
+#define AFS_KALLOC(x) kalloc(x)
+#define AFS_KFREE(x,y) kfree(x,y)
+#define v_count v_usecount
+#define v_vfsp v_mount
+#define vfs_bsize mnt_stat.f_bsize
+#define vfs_fsid mnt_stat.f_fsid
+#define va_nodeid va_fileid
+#define vfs_vnodecovered mnt_vnodecovered
+#define direct dirent
+#define vnode_t struct vnode
+
+#define VN_RELE(vp) vrele(((struct vnode *)(vp)))
+#define VN_HOLD(vp) VREF(((struct vnode *)(vp)))
+
+#endif
+#endif /* AFS_PARAM_H */
--- /dev/null
+#ifndef AFS_PARAM_H
+#define AFS_PARAM_H
+
+#define AFS_VFSINCL_ENV 1 /* NOBODY uses this.... */
+#define AFS_ENV 1
+#define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */
+#define AFS_PPC_ENV 1
+
+#include <afs/afs_sysnames.h>
+#define AFS_USERSPACE_ENV
+#define AFS_USR_DARWIN_ENV
+#define AFS_USR_DARWIN13_ENV
+#define AFS_USR_DARWIN14_ENV
+#define AFS_USR_DARWIN60_ENV
+#define AFS_NONFSTRANS
+#define AFS_SYSCALL 230
+
+/* File system entry (used if mount.h doesn't define MOUNT_AFS */
+#define AFS_MOUNT_AFS "afs"
+
+/* Machine / Operating system information */
+#define sys_ppc_darwin_12 1
+#define sys_ppc_darwin_13 1
+#define sys_ppc_darwin_14 1
+#define sys_ppc_darwin_60 1
+#define SYS_NAME "ppc_darwin_60"
+#define SYS_NAME_ID SYS_NAME_ID_ppc_darwin_60
+#define AFSBIG_ENDIAN 1
+#define AFS_HAVE_FFS 1 /* Use system's ffs. */
+
+#define AFS_UIOSYS UIO_SYSSPACE
+#define AFS_UIOUSER UIO_USERSPACE
+
+#define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */
+#define RXK_LISTENER_ENV 1
+
+#define AFS_VFS34 1 /* What is VFS34??? */
+#define afsio_iov uio_iov
+#define afsio_iovcnt uio_iovcnt
+#define afsio_offset uio_offset
+#define afsio_seg uio_segflg
+#define afsio_resid uio_resid
+#define AFS_UIOSYS UIO_SYSSPACE
+#define AFS_UIOUSER UIO_USERSPACE
+#define VATTR_NULL usr_vattr_null
+
+#define AFS_DIRENT
+#ifndef CMSERVERPREF
+#define CMSERVERPREF
+#endif
+
+#endif /* AFS_PARAM_H */
#if defined(AFS_SUN56_ENV) || defined(AFS_HPUX_ENV)
#include "../afs/sysincludes.h"
#endif
-#ifndef AFS_SGI64_ENV
#if defined(AFS_FBSD_ENV)
#include "../h/lock.h"
#include "../vm/vm.h"
#include "../vm/pmap.h"
#include "../vm/vm_map.h"
#endif /* AFS_FBSD_ENV */
+#if !defined(AFS_SGI64_ENV) && !defined(AFS_DARWIN60_ENV)
#include "../h/user.h"
#endif /* AFS_SGI64_ENV */
#include "../h/uio.h"
struct gator_cursesgwin *cwp; /*Curses-specific data*/
cwp = (struct gator_cursesgwin *)(gwp->w_data);
-#ifdef AFS_DARWIN_ENV
+#if defined(AFS_DARWIN_ENV) && !defined(AFS_DARWIN60_ENV)
aparms->maxx = cwp->wp->maxx;
aparms->maxy = cwp->wp->maxy;
#elif defined(AFS_NBSD_ENV)
KDEFS=
DBUG =
DEFINES= -D_KERNEL -DKERNEL -DKERNEL_PRIVATE -DDIAGNOSTIC -DUSE_SELECT -DMACH_USER_API -DMACH_KERNEL
+<ppc_darwin_60>
+KOPTS=-no-cpp-precomp -static -fno-common -finline -fno-keep-inline-functions -force_cpusubtype_ALL -msoft-float -mlong-branch
+<ppc_darwin_14 ppc_darwin_13 ppc_darwin_12>
KOPTS=-no-precomp -static -fno-common -finline -fno-keep-inline-functions -force_cpusubtype_ALL -msoft-float -mlong-branch
+<all>
CFLAGS=-I. -I.. -I${TOP_OBJDIR}/src/config ${KINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG} ${OPTMZ}
KINCLUDES=-I${KROOT}/System/Library/Frameworks/Kernel.Framework/Headers
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>afs</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.openafs.filesystems.afs</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>afs</string>
+ <key>CFBundlePackageType</key>
+ <string>KEXT</string>
+ <key>CFBundleShortVersionString</key>
+ <string>@VERSION@</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>@VERSION@</string>
+ <key>OSBundleLibraries</key>
+ <dict>
+ <key>com.apple.kernel.bsd</key>
+ <string>6.0</string>
+ <key>com.apple.kernel.mach</key>
+ <string>6.0</string>
+ </dict>
+</dict>
+</plist>
static int stripcalled = 0;
extern int errno;
+#if !defined(AFS_DARWIN60_ENV)
extern int sys_nerr;
+#endif
#if !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN_ENV) && !defined(AFS_XBSD_ENV)
extern char *sys_errlist[];
#endif
*/
#define CV_INIT(cv,a,b,c)
#define CV_DESTROY(cv)
+#ifdef AFS_DARWIN14_ENV
+#define CV_WAIT(cv, lck) { \
+ int isGlockOwner = ISAFS_GLOCK(); \
+ if (isGlockOwner) AFS_GUNLOCK(); \
+ MUTEX_EXIT(lck); \
+ sleep(cv, PVFS); \
+ if (isGlockOwner) AFS_GLOCK(); \
+ MUTEX_ENTER(lck); \
+ }
+
+#define CV_TIMEDWAIT(cv,lck,t) { \
+ int isGlockOwner = ISAFS_GLOCK(); \
+ if (isGlockOwner) AFS_GUNLOCK(); \
+ MUTEX_EXIT(lck); \
+ tsleep(cv,PVFS, "afs_CV_TIMEDWAIT",t); \
+ if (isGlockOwner) AFS_GLOCK(); \
+ MUTEX_ENTER(lck); \
+ }
+
+#define CV_SIGNAL(cv) wakeup_one(cv)
+#define CV_BROADCAST(cv) wakeup(cv)
+#else
#define CV_WAIT(cv, lck) { \
int isGlockOwner = ISAFS_GLOCK(); \
if (isGlockOwner) AFS_GUNLOCK(); \
#define CV_SIGNAL(cv) thread_wakeup_one((event_t)(cv))
#define CV_BROADCAST(cv) thread_wakeup((event_t)(cv))
+#endif
typedef struct {
struct lock__bsd__ lock;
pp->ifMTU = RX_REMOTE_PACKET_SIZE;
}
#else /* AFS_USERSPACE_IP_ADDR */
+#ifdef AFS_DARWIN60_ENV
+ struct ifaddr *ifad = (struct ifaddr *) 0;
+#else
struct in_ifaddr *ifad = (struct in_ifaddr *) 0;
+#endif
struct ifnet *ifn;
/* At some time we need to iterate through rxi_FindIfnet() to find the
}
return different;
}
+#ifdef AFS_DARWIN60_ENV
+/* Returns ifnet which best matches address */
+struct ifnet *
+rxi_FindIfnet(addr, pifad)
+ afs_uint32 addr;
+ struct ifaddr **pifad;
+{
+ struct sockaddr_in s;
+ if (numMyNetAddrs == 0)
+ (void) rxi_GetIFInfo();
+
+ s.sin_family=AF_INET;
+ s.sin_addr.s_addr=addr;
+ *pifad=ifa_ifwithnet((struct sockaddr *)&s);
+ done:
+ return (*pifad ? (*pifad)->ifa_ifp : NULL );
+}
+#else
/* Returns ifnet which best matches address */
struct ifnet *rxi_FindIfnet(afs_uint32 addr, struct in_ifaddr **pifad)
{
done:
return (*pifad ? (*pifad)->ia_ifp : NULL );
}
+#endif
#endif /* else AFS_USERSPACE_IP_ADDR */
#endif /* !SUN5 && !SGI62 */
#include "../net/route.h"
#include "../netinet/in_systm.h"
#include "../netinet/ip.h"
-#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX22_ENV)
+#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX22_ENV) && !defined(AFS_DARWIN60_ENV)
#include "../netinet/in_pcb.h"
#endif /* ! AFS_HPUX110_ENV && ! AFS_LINUX22_ENV */
#ifndef AFS_LINUX22_ENV
+#if !defined(AFS_DARWIN60_ENV)
#include "../netinet/ip_var.h"
+#endif
#include "../netinet/ip_icmp.h"
#endif /* AFS_LINUX22_ENV */
#include "../netinet/udp.h"
-#if !defined(AFS_SGI62_ENV) && !defined(AFS_LINUX22_ENV)
+#if !defined(AFS_SGI62_ENV) && !defined(AFS_LINUX22_ENV) && !defined(AFS_DARWIN60_ENV)
#include "../netinet/udp_var.h"
#endif
#if defined(AFS_HPUX102_ENV) || (defined(AFS_SGI62_ENV) && !defined(AFS_SGI64_ENV))
#include "../h/file.h"
#endif
#include "../net/if.h"
-#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX22_ENV)
+#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX22_ENV) && !defined(AFS_DARWIN60_ENV)
#include "../netinet/in_var.h"
#endif /* ! AFS_HPUX110_ENV && ! AFS_LINUX22_ENV */
#ifndef AFS_LINUX22_ENV
static char *cmdname;
#ifdef AFS_SUN5_ENV
static char CPP[] = "/usr/ccs/lib/cpp";
-#elif defined(AFS_XBSD_ENV)
+#elif defined(AFS_XBSD_ENV) || defined(AFS_DARWIN60_ENV)
static char CPP[] = "/usr/bin/cpp";
#elif defined(AFS_NT40_ENV)
static char CPP[MAXCMDLINE];
#ifdef AFS_AIX_ENV
#include "../h/systm.h"
#endif
+#ifdef AFS_DARWIN60_ENV
+#include "../h/kernel.h"
+#endif
#include "../h/types.h"
#include "../h/time.h"
#ifndef AFS_LINUX22_ENV