]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE12-darwin-updates-20020821
authorChaskiel M Grundman <cg2v@andrew.cmu.edu>
Wed, 21 Aug 2002 23:08:54 +0000 (23:08 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 21 Aug 2002 23:08:54 +0000 (23:08 +0000)
should be correct support for 10.2. also updates for 10.1

(cherry picked from commit 89f411e22c2d63c78cbd52410ca3e15b8aaf1c4a)

33 files changed:
acinclude.m4
src/afs/DARWIN/osi_machdep.h
src/afs/DARWIN/osi_module.c
src/afs/DARWIN/osi_prototypes.h
src/afs/DARWIN/osi_vm.c
src/afs/DARWIN/osi_vnodeops.c
src/afs/VNOPS/afs_vnop_attrs.c
src/afs/afs.h
src/afs/afs_analyze.c
src/afs/afs_call.c
src/afs/afs_cell.c
src/afs/afs_conn.c
src/afs/afs_server.c
src/afs/afs_user.c
src/afs/afs_util.c
src/afs/afs_vcache.c
src/afs/afs_volume.c
src/afsd/afs.rc.darwin
src/butc/dump.c
src/config/Makefile.ppc_darwin_60.in [new file with mode: 0644]
src/config/afs_sysnames.h
src/config/param.ppc_darwin_60.h [new file with mode: 0644]
src/config/param.ppc_darwin_60_usr.h [new file with mode: 0644]
src/dir/dir.c
src/gtx/curseswindows.c
src/libafs/MakefileProto.DARWIN.in
src/libafs/afs.ppc_darwin_60.plist.in [new file with mode: 0644]
src/pinstall/install.c
src/rx/DARWIN/rx_kmutex.h
src/rx/rx_kcommon.c
src/rx/rx_kcommon.h
src/rxgen/rpc_main.c
src/rxkad/rxkad_common.c

index 4e468e6127f65476141b540f4aecf3b29aa541e2..a44e4c6661aa21fdc89e0fe3713fbc6626e4b802 100644 (file)
@@ -260,6 +260,9 @@ else
                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"
                        ;;
index 0aa14a706a2a88b910393237f6d5a8078fda6444..9feda0345b9d9396d40ffa0cc89a533e90a91828 100644 (file)
@@ -42,7 +42,9 @@ enum vcexcl { EXCL, NONEXCL } ;
 /* 
  * Time related macros
  */
+#ifndef AFS_DARWIN60_ENV
 extern struct timeval time;
+#endif
 #define osi_Time() (time.tv_sec)
 #define afs_hz      hz
 
index 1959deadd7387043415478219041b5974ef93c4c..823dd1aab64347a3d98d24ccfaed346f66b17c4c 100644 (file)
@@ -5,7 +5,11 @@ RCSID("$Header$");
 
 #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;
index 852e1c388f738e0ad12d8f2064840cff9069f76b..ed68243c1814d3e8c6edfc34bb633777b5ec0b18 100644 (file)
@@ -19,5 +19,5 @@ extern int osi_lookupname(char *aname, enum uio_seg seg, int followlink,
                          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_ */
index 4cc6aa4dd166fde254b7129d511cd48d3b463750..8f924183ec39594d8719bbfbb5e7b160a6a22421 100644 (file)
@@ -320,16 +320,18 @@ void osi_VM_NukePages(struct vnode *vp, off_t offset, off_t size) {
 #endif
 
 }
-int osi_VM_Setup(struct vcache *avc) {
+int osi_VM_Setup(struct vcache *avc, int force) {
    int error;
    struct vnode *vp=AFSTOV(avc);
 
-   if (UBCISVALID(vp) && (avc->states & CStatd)) {
+   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;
          }
@@ -345,6 +347,7 @@ int osi_VM_Setup(struct vcache *avc) {
          simple_unlock(&avc->v.v_interlock);
 #endif
          AFS_GLOCK();
+         avc->states  &= ~CUBCinit;
          AFS_RELE(avc);
       }
       if (UBCINFOEXISTS(&avc->v))
index 769b290c013aae3a5e696d8d7656b5483bd4e38c..c44ddb98fca6122736a7cc440c772e55ddeec360 100644 (file)
@@ -309,6 +309,17 @@ afs_vop_close(ap)
     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;
 }
 
@@ -1214,21 +1225,23 @@ afs_vop_print(ap)
     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;
 }
index 32157ff3ebdd1c2e9d186ccc6f746825591a2645..a0bd65644524884901851005166b87706524760f 100644 (file)
@@ -219,6 +219,12 @@ afs_getattr(OSI_VC_ARG(avc), attrs, acred)
        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);
index 210544d7cb2dbe5c236c95a0c6bfaa17a38e0f56..4fb486b31372c3807a4e6eeae392dfa67ad53a06 100644 (file)
@@ -497,8 +497,12 @@ struct SimpleLocks {
 #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 CHasPages      0x00004000
@@ -1036,7 +1040,7 @@ extern int afs_DynrootVOPRemove();
 #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)  \
index 95855aff17da41483e5c3a85ee881d306b252b8f..90540117bf64ba9dd59e48b51aea92f9de47dc36 100644 (file)
@@ -27,7 +27,7 @@ RCSID("$Header$");
 #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 */
index ba600f4d53cdd7590d5c6226613c24cab32b7a27..1305fafca77d7e499a3162a52030ec453df9c37e 100644 (file)
@@ -21,7 +21,7 @@ RCSID("$Header$");
 #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) */
@@ -618,11 +618,19 @@ long parm, parm2, parm3, parm4, parm5, parm6;
       }
 #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;
       }
index be0cadfcec99340a425375802abea392e950cd75..e00e6548e5c590c5d21612a13724c062517a1530 100644 (file)
@@ -25,7 +25,7 @@ RCSID("$Header$");
 #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) */
index 8fa12739a71d804d91618cfe16b1a964f41c725a..7965d58c12711cab29dd619c7d77ea10907cb04a 100644 (file)
@@ -25,7 +25,7 @@ RCSID("$Header$");
 #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) */
index 2dc146eb2e0abef91ef36bb5417c2524747f4e1f..b8019a46a3dd44a750a078cdb3a2ec9b6f2fe821 100644 (file)
@@ -44,9 +44,12 @@ RCSID("$Header$");
 #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 */
@@ -1039,7 +1042,7 @@ afsi_SetServerIPRank(sa, addr, subnetmask)
    }
 }
 #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(sa, ifa)
     struct srvAddr *sa;
@@ -1078,6 +1081,65 @@ afsi_SetServerIPRank(sa, ifa)
 #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
@@ -1235,6 +1297,16 @@ static afs_SetServerPrefs(sa)
 #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;
index 39350634d7e1cfbf5596aafdd3518c92e843161f..ccdb2bbd260f6f2abb8d5dda3a60e1ed27c2b1ad 100644 (file)
@@ -25,7 +25,7 @@ RCSID("$Header$");
 #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) */
index cbdca631bbcc8a640adb9a14a489ef61f5ffacef..ddc9e9542998208276c2ce3f6c7fd2e421e47506 100644 (file)
@@ -27,7 +27,7 @@ RCSID("$Header$");
 #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) */
index afecfda92557d5115ddb8f5adea9eff981002315..4abcd82cfbdae320e7ff8962308c046b97863816 100644 (file)
@@ -1531,6 +1531,9 @@ afs_ProcessFS(avc, astat, areq)
 #ifdef AFS_LINUX22_ENV
     vcache2inode(avc);    /* Set the inode attr cache */
 #endif
+#ifdef AFS_DARWIN_ENV
+   osi_VM_Setup(avc,1);
+#endif
 
 } /*afs_ProcessFS*/
 
@@ -1672,7 +1675,7 @@ loop:
 #endif
        ReleaseWriteLock(&tvc->lock);
 #ifdef AFS_DARWIN_ENV
-        osi_VM_Setup(tvc);
+        osi_VM_Setup(tvc,0);
 #endif
        return tvc;
     }
@@ -1737,9 +1740,6 @@ loop:
     }
 
     ReleaseWriteLock(&tvc->lock);
-#ifdef AFS_DARWIN_ENV
-    osi_VM_Setup(avc);
-#endif
     return tvc;
 
 } /*afs_GetVCache*/
@@ -1895,9 +1895,6 @@ struct vcache *afs_LookupVCache(struct VenusFid *afid, struct vrequest *areq,
     afs_ProcessFS(tvc, &OutStatus, areq);
 
     ReleaseWriteLock(&tvc->lock);
-#ifdef AFS_DARWIN_ENV
-    osi_VM_Setup(tvc);
-#endif
     return tvc;
 
 }
@@ -2467,7 +2464,7 @@ struct vcache *afs_FindVCache(struct VenusFid *afid, afs_int32 lockit,
 #endif
 #ifdef AFS_DARWIN_ENV
     if (tvc)
-        osi_VM_Setup(tvc);
+        osi_VM_Setup(tvc, 0);
 #endif
     return tvc;
 } /*afs_FindVCache*/
index 9642fd81a0729fddfd56d334c3f4a5c93b5398c6..d75eb169602ca03799e911db1fd58daffc8b7114 100644 (file)
@@ -30,7 +30,7 @@ RCSID("$Header$");
 #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) */
index ed0509004cf6ff4040e2614751a4fa90ed97e3cd..a8240b39dff5bae1446f7bc46511b8d8531c360b 100644 (file)
@@ -30,12 +30,20 @@ SMALL="-stat 300 -dcache 100 -daemons 2 -volumes 50"
 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
@@ -46,7 +54,7 @@ else
        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."
index 6c038a703f715365ef6d34c3f00deaf4362a31d4..55490c29f32d3d462b8b83df929335d436a34dc5 100644 (file)
@@ -101,7 +101,7 @@ afs_int32 tapeblocks;      /* Number of 16K tape datablocks in buffer (!CONF_XBS
    else \
      sprintf(dumpname, "%s (DumpId %u)", name, dbDumpId);
 
-#if defined(AFS_NT40_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_SUN4_ENV)
+#if defined(AFS_NT40_ENV) || (defined(AFS_DARWIN_ENV) && !defined(AFS_DARWIN60_ENV)) || defined(AFS_SUN4_ENV)
 localtime_r(t, tm)
    time_t *t;
    struct tm *tm;
diff --git a/src/config/Makefile.ppc_darwin_60.in b/src/config/Makefile.ppc_darwin_60.in
new file mode 100644 (file)
index 0000000..d032a36
--- /dev/null
@@ -0,0 +1,43 @@
+# 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
index 4cdc5e61cd5cc368708b0f310784615b640f9877..1d2ae36ea7431bd9aca1d16792579702a824075c 100644 (file)
@@ -50,6 +50,7 @@
 #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
diff --git a/src/config/param.ppc_darwin_60.h b/src/config/param.ppc_darwin_60.h
new file mode 100644 (file)
index 0000000..acaec06
--- /dev/null
@@ -0,0 +1,65 @@
+#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 */
diff --git a/src/config/param.ppc_darwin_60_usr.h b/src/config/param.ppc_darwin_60_usr.h
new file mode 100644 (file)
index 0000000..e615381
--- /dev/null
@@ -0,0 +1,52 @@
+#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 */
index d9b1b6d61dc2e1fa22ae5c8268a98462bc2159c3..401647d67ba1f0d84ace8c31252163e9c6391604 100644 (file)
@@ -34,7 +34,6 @@ RCSID("$Header$");
 #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"
@@ -42,6 +41,7 @@ RCSID("$Header$");
 #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"
index 8bfd871c340fa09579683d8f31f7a47b60957f4b..4c9fa6ea9b2d4e6ccbd8db9f557115abc8f2ff9e 100644 (file)
@@ -758,7 +758,7 @@ int gator_cursesgwin_getdimensions(gwp, aparms)
     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;
 #else
index 39141034ed184f0ac43de6b84330d20bff552177..efbc760bbc88dbb2a3c3d82f1c4a1a5e79b039d2 100644 (file)
@@ -46,7 +46,11 @@ AFS_OS_NONFSOBJS = osi_vfsops.o
 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=-Werror-implicit-function-declaration -I. -I.. ${KINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG}
 #CFLAGS=-framework Kernel -I. -I.. ${KINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG}
 CFLAGS=-I. -I.. -I${TOP_SRCDIR}/config ${KINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG} ${OPTMZ}
diff --git a/src/libafs/afs.ppc_darwin_60.plist.in b/src/libafs/afs.ppc_darwin_60.plist.in
new file mode 100644 (file)
index 0000000..98ab344
--- /dev/null
@@ -0,0 +1,31 @@
+<?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>
index 33eee3b0dc5a8a31fd0602fdb32b9e87f29f298c..6a8ffc3a7aa9b8ae3193fc5cee688f3e23b95203 100644 (file)
@@ -86,7 +86,9 @@ RCSID("$Header$");
 struct stat istat, ostat;
 
 extern int errno;
+#if !defined(AFS_DARWIN60_ENV)
 extern int sys_nerr;
+#endif
 #if !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN_ENV) && !defined(AFS_FBSD_ENV)
 extern char *sys_errlist[];
 #endif
index 530b3ceba86c0854308eb46c35d0b488ce2a8214..a7700733c7938ca94f80421b67b74de102364edc 100644 (file)
  */
 #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();  \
@@ -57,6 +79,7 @@
 
 #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;
index a8cbde40b7f074f585d47b3d5bfc80dad0115283..114f4e69f21b078fd37f79a54de166ca07e0e5d9 100644 (file)
@@ -368,7 +368,11 @@ register struct rx_peer *pp;
       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
@@ -645,7 +649,25 @@ int rxi_GetIFInfo()
     }
    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(addr, pifad) 
@@ -710,6 +732,7 @@ rxi_FindIfnet(addr, pifad)
  done:
   return (*pifad ?  (*pifad)->ia_ifp : NULL );
 }
+#endif
 #endif /* else AFS_USERSPACE_IP_ADDR */
 #endif /* !SUN5 && !SGI62 */
 
index 23d48adf1b85e0b76e64db3637a8539cf6ab0bfd..6f18d52e2d4a99861bf0936618c3e37f5c27736e 100644 (file)
@@ -57,15 +57,17 @@ typedef unsigned short                  etap_event_t;
 #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))
@@ -81,7 +83,7 @@ struct coda_inode_info {};
 #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
index d1f450c3722630fbcd6204be6b05aaf7bc4ac3c7..09988ca94be2031a3beca007045fff7a23b3e845 100644 (file)
@@ -95,7 +95,7 @@ int debug = 0;
 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];
index 6d24c0ff4fbb75282690d682fd8df3f79440bc1f..2a0215c31b2d7f0b2c2b1afff5f0b31780acefa8 100644 (file)
@@ -29,6 +29,9 @@ RCSID("$Header$");
 #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