bsd-new-releases-20040727
authorJim Rees <rees@umich.edu>
Tue, 27 Jul 2004 15:39:31 +0000 (15:39 +0000)
committerJim Rees <rees@umich.edu>
Tue, 27 Jul 2004 15:39:31 +0000 (15:39 +0000)
Preliminary support for FreeBSD 5.3 and OpenBSD 3.6.
OpenBSD osi_vnodeops.c patch from brent@graveland.net (slightly modified)
Remove obsolete src/lwp/process.fbsd.s to prevent further confusion

README
src/afs/OBSD/osi_vnodeops.c
src/config/afs_sysnames.h
src/config/param.i386_fbsd_53.h [new file with mode: 0644]
src/config/param.i386_obsd36.h [new file with mode: 0644]
src/lwp/process.fbsd.s [deleted file]

diff --git a/README b/README
index e7ea09c..6757cd5 100644 (file)
--- a/README
+++ b/README
@@ -34,13 +34,14 @@ A. Creating the proper directory structure.
       alpha_dux50 (only tested on 5.0A, does not work with 5.1)
       i386_fbsd_42, i386_fbsd_43, i386_fbsd_44, i386_fbsd_45,
              i386_fbsd_46, i386_fbsd_47, i386_fbsd_50, i386_fbsd_51,
-             i386_fbsd_52
+             i386_fbsd_52, i386_fbsd_53
       i386_linux22
       i386_linux24
       i386_linux26
       i386_umlinux22
       i386_umlinux24
-      i386_obsd31, i386_obsd32, i386_obsd33, i386_obsd34, i386_obsd35
+      i386_obsd31, i386_obsd32, i386_obsd33, i386_obsd34, i386_obsd35,
+             i386_obsd36
       rs_aix42
       sgi_65 (file server not tested)
       sun4_413 (No client support, no fileserver support, db servers only)
index 38b8502..c4b38ea 100644 (file)
@@ -107,6 +107,9 @@ RCSID
 
 #include <sys/malloc.h>
 #include <sys/namei.h>
+#ifdef AFS_OBSD36_ENV
+#include <sys/pool.h>
+#endif
 
 #include "afs/afs_cbqueue.h"
 #include "afs/nfsclient.h"
@@ -210,6 +213,12 @@ struct vnodeopv_desc afs_vnodeop_opv_desc =
 
 #define DROPNAME() FREE(name, M_TEMP)
 
+#ifdef AFS_OBSD36_ENV
+#define DROPCNP(cnp) pool_put(&namei_pool, (cnp)->cn_pnbuf)
+#else
+#define DROPCNP(cnp) FREE((cnp)->cn_pnbuf, M_NAMEI)
+#endif
+
 int afs_debug;
 
 int
@@ -331,7 +340,7 @@ afs_nbsd_create(void *v)
        *ap->a_vpp = 0;
 
     if ((cnp->cn_flags & SAVESTART) == 0)
-       FREE(cnp->cn_pnbuf, M_NAMEI);
+       DROPCNP(cnp);
     vput(dvp);
     DROPNAME();
     if (afs_debug & AFSDEB_VNLAYER)
@@ -348,7 +357,7 @@ afs_nbsd_mknod(void *v)
                                 * struct componentname *a_cnp;
                                 * struct vattr *a_vap;
                                 * } */ *ap = v;
-    free(ap->a_cnp->cn_pnbuf, M_NAMEI);
+    DROPCNP(ap->a_cnp);
     vput(ap->a_dvp);
     return (ENODEV);
 }
@@ -561,7 +570,7 @@ afs_nbsd_remove(void *v)
     else
        vput(vp);
     vput(dvp);
-    FREE(cnp->cn_pnbuf, M_NAMEI);
+    DROPCNP(cnp);
     DROPNAME();
     return code;
 }
@@ -597,7 +606,7 @@ afs_nbsd_link(void *v)
     AFS_GLOCK();
     code = afs_link(VTOAFS(vp), VTOAFS(dvp), name, cnp->cn_cred);
     AFS_GUNLOCK();
-    FREE(cnp->cn_pnbuf, M_NAMEI);
+    DROPCNP(cnp);
     if (dvp != vp)
        VOP_UNLOCK(vp, 0, curproc);
 
@@ -741,8 +750,8 @@ afs_nbsd_mkdir(void *v)
        vn_lock(AFSTOV(vcp), LK_EXCLUSIVE | LK_RETRY, curproc);
     } else
        *ap->a_vpp = 0;
+    DROPCNP(cnp);
     DROPNAME();
-    FREE(cnp->cn_pnbuf, M_NAMEI);
     vput(dvp);
     return code;
 }
@@ -763,7 +772,7 @@ afs_nbsd_rmdir(void *v)
     if (dvp == vp) {
        vrele(dvp);
        vput(vp);
-       FREE(cnp->cn_pnbuf, M_NAMEI);
+       DROPCNP(cnp);
        DROPNAME();
        return (EINVAL);
     }
@@ -796,8 +805,8 @@ afs_nbsd_symlink(void *v)
     code =
        afs_symlink(VTOAFS(dvp), name, ap->a_vap, ap->a_target, cnp->cn_cred);
     AFS_GUNLOCK();
+    DROPCNP(cnp);
     DROPNAME();
-    FREE(cnp->cn_pnbuf, M_NAMEI);
     vput(dvp);
     return code;
 }
index ceda90e..e6ae7eb 100644 (file)
 #define SYS_NAME_ID_i386_fbsd_50        2105
 #define SYS_NAME_ID_i386_fbsd_51        2106
 #define SYS_NAME_ID_i386_fbsd_52        2107
+#define SYS_NAME_ID_i386_fbsd_53        2108
 
 #define SYS_NAME_ID_ia64_linux2                2200
 #define SYS_NAME_ID_ia64_linux22       2201
 #define SYS_NAME_ID_i386_obsd33                2602
 #define SYS_NAME_ID_i386_obsd34                2603
 #define SYS_NAME_ID_i386_obsd35                2604
+#define SYS_NAME_ID_i386_obsd36                2605
 
 #define SYS_NAME_ID_amd64_linux2        2700
 #define SYS_NAME_ID_amd64_linux22       2701
diff --git a/src/config/param.i386_fbsd_53.h b/src/config/param.i386_fbsd_53.h
new file mode 100644 (file)
index 0000000..d3cb1af
--- /dev/null
@@ -0,0 +1,200 @@
+#ifndef        AFS_PARAM_H
+#define        AFS_PARAM_H
+
+#ifndef UKERNEL
+/* This section for kernel libafs compiles only */
+
+#ifndef IGNORE_STDS_H
+#include <sys/param.h>
+#endif
+
+#define AFS_XBSD_ENV 1         /* {Free,Open,Net}BSD */
+#define AFS_X86_XBSD_ENV 1
+
+#define AFS_NAMEI_ENV     1    /* User space interface to file system */
+#define AFS_64BIT_ENV 1
+#define AFS_64BIT_IOPS_ENV 1   /* Needed for NAMEI */
+#define AFS_FBSD_ENV 1
+#define AFS_FBSD40_ENV 1
+#define AFS_FBSD42_ENV 1
+#define AFS_FBSD43_ENV 1
+#define AFS_FBSD44_ENV 1
+#define AFS_FBSD45_ENV 1
+#define AFS_FBSD46_ENV 1
+#define AFS_FBSD47_ENV 1
+#define AFS_FBSD50_ENV 1
+#define AFS_FBSD51_ENV 1
+#define AFS_FBSD52_ENV 1
+#define AFS_FBSD53_ENV 1
+#define AFS_X86_FBSD_ENV 1
+#define AFS_X86_FBSD40_ENV 1
+#define AFS_X86_FBSD42_ENV 1
+#define AFS_X86_FBSD43_ENV 1
+#define AFS_X86_FBSD46_ENV 1
+#define AFS_X86_FBSD47_ENV 1
+#define AFS_X86_FBSD50_ENV 1
+#define AFS_X86_ENV 1
+#define AFS_NONFSTRANS 1
+#define FTRUNC O_TRUNC
+
+#define IUPD 0x0010
+#define IACC 0x0020
+#define ICHG 0x0040
+#define IMOD 0x0080
+
+#define IN_LOCK(ip)     lockmgr(&ip->i_lock, LK_EXCLUSIVE, \
+                                NULL, curproc)
+#define IN_UNLOCK(ip)   lockmgr(&ip->i_lock, LK_RELEASE, \
+                                NULL, curproc)
+
+#include <afs/afs_sysnames.h>
+
+#define AFS_VM_RDWR_ENV        1
+#define AFS_VFS_ENV    1
+#define AFS_VFSINCL_ENV 1
+#define AFS_GREEDY43_ENV       1
+#define AFS_ENV        1
+
+#define AFS_SYSCALL    339
+#define AFS_MOUNT_AFS  "afs"
+
+#ifndef MOUNT_UFS
+#define MOUNT_UFS "ufs"
+#endif
+
+#ifndef        MOUNT_AFS
+#define        MOUNT_AFS AFS_MOUNT_AFS
+#endif
+#define SYS_NAME       "i386_fbsd_53"
+#define SYS_NAME_ID    SYS_NAME_ID_i386_fbsd_53
+
+#define AFS_HAVE_FFS            1      /* Use system's ffs. */
+#define AFS_HAVE_STATVFS       0       /* System doesn't supports statvfs */
+
+#define RXK_LISTENER_ENV 1
+#define AFS_GCPAGS             0       /* if nonzero, garbage collect PAGs */
+#define AFS_USE_GETTIMEOFDAY    1      /* use gettimeofday to implement rx clock */
+
+#define AFSLITTLE_ENDIAN 1
+
+/* Extra kernel definitions (from kdefs file) */
+#ifdef _KERNEL
+#define AFS_GLOBAL_SUNLOCK        1
+#define        AFS_VFS34       1       /* What is VFS34??? */
+#define        AFS_SHORTGID    0       /* are group id's short? */
+#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)   osi_fbsd_alloc((x), 1)
+#undef AFS_KALLOC_NOSLEEP
+#define        AFS_KALLOC_NOSLEEP(x) osi_fbsd_alloc((x), 0)
+#define AFS_KFREE(x,y)  osi_fbsd_free((x))
+#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
+
+#ifndef MUTEX_DEFAULT
+#define MUTEX_DEFAULT   0
+#endif /* MUTEX_DEFAULT */
+
+#ifndef SSYS
+#define SSYS            0x00002
+#endif /* SSYS */
+
+#define p_rcred         p_ucred
+
+#if    !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__)
+enum vcexcl { NONEXCL, EXCL };
+
+#ifdef KERNEL
+#ifndef MIN
+#define MIN(A,B) ((A) < (B) ? (A) : (B))
+#endif
+#ifndef MAX
+#define MAX(A,B) ((A) > (B) ? (A) : (B))
+#endif
+#endif /* KERNEL */
+
+#endif /* ! ASSEMBLER & ! __LANGUAGE_ASSEMBLY__ */
+#endif /* _KERNEL */
+
+#else /* !defined(UKERNEL) */
+
+/* This section for user space compiles only */
+
+#define UKERNEL                        1       /* user space kernel */
+#define AFS_ENV                        1
+#define AFS_VFSINCL_ENV         1
+#define AFS_USR_FBSD40_ENV     1
+#define AFS_USR_FBSD42_ENV     1
+#define AFS_USR_FBSD43_ENV     1
+#define AFS_USR_FBSD44_ENV     1
+#define AFS_USR_FBSD45_ENV     1
+#define AFS_USR_FBSD46_ENV     1
+#define AFS_USR_FBSD47_ENV     1
+#define AFS_USR_FBSD50_ENV     1
+#define AFS_USR_FBSD51_ENV     1
+#define AFS_USR_FBSD52_ENV     1
+#define AFS_USR_FBSD53_ENV     1
+#define AFS_USR_FBSD_ENV       1
+#define AFS_NONFSTRANS 1
+
+#define AFS_MOUNT_AFS "afs"    /* The name of the filesystem type. */
+#define AFS_SYSCALL 339
+#define AFS_NAMEI_ENV         1        /* User space interface to file system */
+#define AFS_64BIT_ENV 1
+#define AFS_64BIT_IOPS_ENV    1        /* Needed for NAMEI */
+#define AFS_USERSPACE_IP_ADDR 1
+#define RXK_LISTENER_ENV      1
+#define AFS_GCPAGS           0 /* if nonzero, garbage collect PAGs */
+
+/* Machine / Operating system information */
+#include <afs/afs_sysnames.h>
+#define SYS_NAME       "i386_fbsd_53"
+#define SYS_NAME_ID    SYS_NAME_ID_i386_fbsd_53
+
+#define AFSLITTLE_ENDIAN    1
+#define AFS_HAVE_FFS        1  /* Use system's ffs. */
+#define AFS_HAVE_STATVFS    1  /* System doesn't support statvfs */
+#define AFS_VM_RDWR_ENV            1   /* read/write implemented via VM */
+
+#define        afsio_iov       uio_iov
+#define        afsio_iovcnt    uio_iovcnt
+#define        afsio_offset    uio_offset
+#define        afsio_seg       uio_segflg
+#define        afsio_fmode     uio_fmode
+#define        afsio_resid     uio_resid
+#define        AFS_UIOSYS      1
+#define        AFS_UIOUSER     UIO_USERSPACE
+#define        AFS_CLBYTES     MCLBYTES
+#define        AFS_MINCHANGE   2
+#define        VATTR_NULL      usr_vattr_null
+
+#define AFS_DIRENT
+#ifndef CMSERVERPREF
+#define CMSERVERPREF
+#endif
+
+#include <limits.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/mount.h>
+#include <sys/fcntl.h>
+#include <netinet/in.h>
+#include <sys/uio.h>
+#include <sys/socket.h>
+
+#endif /* !defined(UKERNEL) */
+
+#endif /* AFS_PARAM_H */
diff --git a/src/config/param.i386_obsd36.h b/src/config/param.i386_obsd36.h
new file mode 100644 (file)
index 0000000..5e991e3
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Jim Rees, University of Michigan CITI
+ */
+
+#ifndef        AFS_PARAM_H
+#define        AFS_PARAM_H
+
+#ifndef IGNORE_STDS_H
+#include <sys/param.h>
+#endif
+
+#define SYS_NAME               "i386_obsd36"
+#define SYS_NAME_ID            SYS_NAME_ID_i386_obsd36
+
+#define AFS_XBSD_ENV           1       /* {Free,Open,Net}BSD */
+#define AFS_X86_XBSD_ENV       1
+
+#define AFS_NAMEI_ENV          1       /* User space interface to file system */
+#define AFS_64BIT_ENV          1
+#define AFS_64BIT_IOPS_ENV     1       /* Needed for NAMEI */
+#define AFS_OBSD_ENV           1
+#define AFS_OBSD34_ENV         1
+#define AFS_OBSD35_ENV         1
+#define AFS_OBSD36_ENV         1
+#define AFS_NONFSTRANS         1
+#define AFS_VM_RDWR_ENV                1
+#define AFS_VFS_ENV            1
+#define AFS_VFSINCL_ENV                1
+
+#define FTRUNC O_TRUNC
+
+#define AFS_SYSCALL            208
+#define AFS_MOUNT_AFS          "afs"
+
+#define RXK_LISTENER_ENV       1
+#define AFS_GCPAGS             0       /* if nonzero, garbage collect PAGs */
+#define AFS_USE_GETTIMEOFDAY    1      /* use gettimeofday to implement rx clock */
+
+#define AFSLITTLE_ENDIAN       1
+
+#ifndef IGNORE_STDS_H
+#include <afs/afs_sysnames.h>
+#endif
+
+/* Extra kernel definitions (from kdefs file) */
+#ifdef _KERNEL
+#define AFS_GLOBAL_SUNLOCK     1
+#define        AFS_SHORTGID            0       /* are group id's short? */
+
+#if    !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__)
+enum vcexcl { NONEXCL, EXCL };
+
+#ifndef MIN
+#define MIN(A,B) ((A) < (B) ? (A) : (B))
+#endif
+#ifndef MAX
+#define MAX(A,B) ((A) > (B) ? (A) : (B))
+#endif
+
+#endif /* ! ASSEMBLER & ! __LANGUAGE_ASSEMBLY__ */
+#endif /* _KERNEL */
+
+#endif /* AFS_PARAM_H */
diff --git a/src/lwp/process.fbsd.s b/src/lwp/process.fbsd.s
deleted file mode 100644 (file)
index 18dcacf..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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
- */
-
-#define        IGNORE_STDS_H   1
-/* Sun 386i... I hope this does the right thing!!!
- * 
- * Written by Derek Atkins <warlord@MIT.EDU>
- * (debugging help by Chris Provenzano <proven@mit.edu>)
- * 11/1991
- *
- * "ojala que es correcto!"
- */
-       .file "process.s"
-
-       .data
-
-       .text
-
-/*
- * struct savearea {
- *     char    *topstack;
- * }
- */
-
-       .set    topstack,0
-
-/*
- * savecontext(f, area1, newsp)
- *     int (*f)(); struct savearea *area1; char *newsp;
- */
-
-/* offsets, to make my life easier! */
-       .set    f,8
-       .set    area1,12
-       .set    newsp,16
-
-
-.globl PRE_Block
-.globl savecontext
-
-savecontext:
-       pushl   %ebp                    /* New Frame! */
-       movl    %esp,%ebp
-       pusha                           /* Push all registers */
-       movl    $1,PRE_Block            /* Pre-emption code */
-       movl    area1(%ebp),%eax        /* eax = base of savearea */
-       movl    %esp,(%eax)             /* area->topstack = esp */
-       movl    newsp(%ebp),%eax        /* get new sp into eax */
-       cmpl    $0,%eax
-       je      L1                      /* if new sp is 0 then dont change esp */
-       movl    %eax,%esp               /* go ahead.  make my day! */
-L1:
-       jmp     *f(%ebp)                        /* ebx = &f */
-
-/* Shouldnt be here....*/
-
-       call    abort
-
-/*
- * returnto(area2)
- *     struct savearea *area2;
- */
-
-/* stack offset */
-       .set    area2,8
-
-.globl returnto
-
-returnto:
-       pushl   %ebp
-       movl    %esp, %ebp              /* New frame, to get correct pointer */
-       movl    area2(%ebp),%eax        /* eax = area2 */
-       movl    (%eax),%esp             /* restore esp */
-       popa 
-       movl    $0,PRE_Block            /* clear it up... */
-       popl    %ebp
-       ret
-
-/* I see, said the blind man, as he picked up his hammer and saw! */
-       pushl   $1234
-       call    abort
-
-
-