From 58069bf38068b559e10460b0d6c814d0cd7c96ad Mon Sep 17 00:00:00 2001 From: Jim Rees Date: Tue, 27 Jul 2004 15:39:31 +0000 Subject: [PATCH] bsd-new-releases-20040727 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 | 5 +- src/afs/OBSD/osi_vnodeops.c | 23 ++-- src/config/afs_sysnames.h | 2 + src/config/param.i386_fbsd_53.h | 200 ++++++++++++++++++++++++++++++++ src/config/param.i386_obsd36.h | 63 ++++++++++ src/lwp/process.fbsd.s | 90 -------------- 6 files changed, 284 insertions(+), 99 deletions(-) create mode 100644 src/config/param.i386_fbsd_53.h create mode 100644 src/config/param.i386_obsd36.h delete mode 100644 src/lwp/process.fbsd.s diff --git a/README b/README index e7ea09c0b..6757cd585 100644 --- 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) diff --git a/src/afs/OBSD/osi_vnodeops.c b/src/afs/OBSD/osi_vnodeops.c index 38b8502de..c4b38ea98 100644 --- a/src/afs/OBSD/osi_vnodeops.c +++ b/src/afs/OBSD/osi_vnodeops.c @@ -107,6 +107,9 @@ RCSID #include #include +#ifdef AFS_OBSD36_ENV +#include +#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; } diff --git a/src/config/afs_sysnames.h b/src/config/afs_sysnames.h index ceda90e57..e6ae7ebd1 100644 --- a/src/config/afs_sysnames.h +++ b/src/config/afs_sysnames.h @@ -164,6 +164,7 @@ #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 @@ -197,6 +198,7 @@ #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 index 000000000..d3cb1af20 --- /dev/null +++ b/src/config/param.i386_fbsd_53.h @@ -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 +#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 + +#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 +#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 +#include +#include +#include +#include +#include +#include +#include + +#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 index 000000000..5e991e387 --- /dev/null +++ b/src/config/param.i386_obsd36.h @@ -0,0 +1,63 @@ +/* + * Jim Rees, University of Michigan CITI + */ + +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +#ifndef IGNORE_STDS_H +#include +#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 +#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 index 18dcacfe6..000000000 --- a/src/lwp/process.fbsd.s +++ /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 - * (debugging help by Chris Provenzano ) - * 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 - - - -- 2.39.5