Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Jan 2003 15:11:22 -0800 (PST)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 23175 for review
Message-ID:  <200301042311.h04NBMHa018179@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=23175

Change 23175 by marcel@marcel_vaio on 2003/01/04 15:10:32

	IFC @23174

Affected files ...

.. //depot/projects/ia64/sys/conf/files#54 integrate
.. //depot/projects/ia64/sys/conf/files.ia64#28 integrate
.. //depot/projects/ia64/sys/fs/hpfs/hpfs_vnops.c#17 integrate
.. //depot/projects/ia64/sys/fs/msdosfs/msdosfs_vnops.c#12 integrate
.. //depot/projects/ia64/sys/fs/specfs/spec_vnops.c#14 integrate
.. //depot/projects/ia64/sys/fs/udf/udf_vnops.c#12 integrate
.. //depot/projects/ia64/sys/isofs/cd9660/cd9660_vnops.c#10 integrate
.. //depot/projects/ia64/sys/kern/imgact_elf.c#26 integrate
.. //depot/projects/ia64/sys/kern/imgact_elf32.c#3 integrate
.. //depot/projects/ia64/sys/kern/imgact_elf64.c#3 integrate
.. //depot/projects/ia64/sys/kern/imgact_elfN.c#4 delete
.. //depot/projects/ia64/sys/kern/init_main.c#22 integrate
.. //depot/projects/ia64/sys/kern/kern_mib.c#11 integrate
.. //depot/projects/ia64/sys/kern/vfs_bio.c#33 integrate
.. //depot/projects/ia64/sys/kern/vfs_default.c#14 integrate
.. //depot/projects/ia64/sys/kern/vnode_if.src#11 integrate
.. //depot/projects/ia64/sys/ufs/ufs/ufs_vnops.c#23 integrate
.. //depot/projects/ia64/sys/vm/vm_swap.c#15 integrate
.. //depot/projects/ia64/usr.bin/systat/Makefile#4 integrate
.. //depot/projects/ia64/usr.bin/systat/cmds.c#3 integrate
.. //depot/projects/ia64/usr.bin/systat/cmdtab.c#3 integrate
.. //depot/projects/ia64/usr.bin/systat/convtbl.c#1 branch
.. //depot/projects/ia64/usr.bin/systat/convtbl.h#1 branch
.. //depot/projects/ia64/usr.bin/systat/extern.h#4 integrate
.. //depot/projects/ia64/usr.bin/systat/ifcmds.c#1 branch
.. //depot/projects/ia64/usr.bin/systat/ifstat.c#1 branch
.. //depot/projects/ia64/usr.bin/systat/systat.1#6 integrate

Differences ...

==== //depot/projects/ia64/sys/conf/files#54 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.742 2003/01/01 19:49:29 jake Exp $
+# $FreeBSD: src/sys/conf/files,v 1.743 2003/01/04 22:07:48 jake Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -968,9 +968,7 @@
 isofs/cd9660/cd9660_util.c	optional cd9660
 isofs/cd9660/cd9660_vfsops.c	optional cd9660
 isofs/cd9660/cd9660_vnops.c	optional cd9660
-kern/imgact_elf32.c	standard
-kern/imgact_elf64.c	standard
-kern/imgact_elfN.c	standard
+kern/imgact_elf.c	standard
 kern/imgact_shell.c	standard
 kern/inflate.c		optional gzip
 kern/init_main.c	standard

==== //depot/projects/ia64/sys/conf/files.ia64#28 (text+ko) ====

@@ -1,7 +1,7 @@
 # This file tells config what files go into building a kernel,
 # files marked standard are always included.
 #
-# $FreeBSD: src/sys/conf/files.ia64,v 1.41 2002/10/24 19:05:03 jhb Exp $
+# $FreeBSD: src/sys/conf/files.ia64,v 1.42 2003/01/04 22:07:48 jake Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -114,6 +114,7 @@
 isa/ppc.c                       optional        ppc isa
 isa/psm.c			optional	psm isa
 isa/syscons_isa.c		optional	sc
+kern/imgact_elf32.c		optional	ia32
 kern/subr_diskmbr.c		standard
 libkern/ia64/bswap16.S		standard
 libkern/ia64/bswap32.S		standard

==== //depot/projects/ia64/sys/fs/hpfs/hpfs_vnops.c#17 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/fs/hpfs/hpfs_vnops.c,v 1.37 2003/01/04 08:47:17 phk Exp $
+ * $FreeBSD: src/sys/fs/hpfs/hpfs_vnops.c,v 1.38 2003/01/04 22:10:34 phk Exp $
  */
 
 #include <sys/param.h>
@@ -706,7 +706,7 @@
 		return (0);
 	}
 	bp->b_dev = hp->h_devvp->v_rdev;
-	VOP_STRATEGY(hp->h_devvp, bp);
+	VOP_SPECSTRATEGY(hp->h_devvp, bp);
 	return (0);
 }
 

==== //depot/projects/ia64/sys/fs/msdosfs/msdosfs_vnops.c#12 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/fs/msdosfs/msdosfs_vnops.c,v 1.128 2003/01/04 08:47:18 phk Exp $ */
+/* $FreeBSD: src/sys/fs/msdosfs/msdosfs_vnops.c,v 1.129 2003/01/04 22:10:35 phk Exp $ */
 /*	$NetBSD: msdosfs_vnops.c,v 1.68 1998/02/10 14:10:04 mrg Exp $	*/
 
 /*-
@@ -1820,7 +1820,7 @@
 	 */
 	vp = dep->de_devvp;
 	bp->b_dev = vp->v_rdev;
-	VOP_STRATEGY(vp, bp);
+	VOP_SPECSTRATEGY(vp, bp);
 	return (0);
 }
 

==== //depot/projects/ia64/sys/fs/specfs/spec_vnops.c#14 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)spec_vnops.c	8.14 (Berkeley) 5/21/95
- * $FreeBSD: src/sys/fs/specfs/spec_vnops.c,v 1.190 2003/01/04 20:32:03 phk Exp $
+ * $FreeBSD: src/sys/fs/specfs/spec_vnops.c,v 1.191 2003/01/04 22:10:35 phk Exp $
  */
 
 #include <sys/param.h>
@@ -56,7 +56,6 @@
 #include <vm/vm_page.h>
 #include <vm/vm_pager.h>
 
-
 static int	spec_advlock(struct vop_advlock_args *);
 static int	spec_close(struct vop_close_args *);
 static int	spec_freeblks(struct vop_freeblks_args *);
@@ -69,6 +68,8 @@
 static int	spec_print(struct vop_print_args *);
 static int	spec_read(struct vop_read_args *);
 static int	spec_strategy(struct vop_strategy_args *);
+static int	spec_xstrategy(struct vop_strategy_args *);
+static int	spec_specstrategy(struct vop_specstrategy_args *);
 static int	spec_write(struct vop_write_args *);
 
 vop_t **spec_vnodeop_p;
@@ -104,6 +105,7 @@
 	{ &vop_rename_desc,		(vop_t *) vop_panic },
 	{ &vop_rmdir_desc,		(vop_t *) vop_panic },
 	{ &vop_setattr_desc,		(vop_t *) vop_ebadf },
+	{ &vop_specstrategy_desc,	(vop_t *) spec_specstrategy },
 	{ &vop_strategy_desc,		(vop_t *) spec_strategy },
 	{ &vop_symlink_desc,		(vop_t *) vop_panic },
 	{ &vop_unlock_desc,		(vop_t *) vop_nounlock },
@@ -522,7 +524,7 @@
  * Just call the device strategy routine
  */
 static int
-spec_strategy(ap)
+spec_xstrategy(ap)
 	struct vop_strategy_args /* {
 		struct vnode *a_vp;
 		struct buf *a_bp;
@@ -609,6 +611,41 @@
 	return (0);
 }
 
+/*
+ * Decoy strategy routine.  We should always come in via the specstrategy
+ * method, but in case some code has botched it, we have a strategy as
+ * well.  We will deal with the request anyway and first time around we
+ * print some debugging useful information.
+ */
+
+static int
+spec_strategy(ap)
+	struct vop_strategy_args /* {
+		struct vnode *a_vp;
+		struct buf *a_bp;
+	} */ *ap;
+{
+	static int once;
+
+	if (!once) {
+		vprint("\nVOP_STRATEGY on VCHR\n", ap->a_vp);
+		backtrace();
+		once++;
+	}
+	return spec_xstrategy(ap);
+}
+
+static int
+spec_specstrategy(ap)
+	struct vop_specstrategy_args /* {
+		struct vnode *a_vp;
+		struct buf *a_bp;
+	} */ *ap;
+{
+
+	return spec_xstrategy((void *)ap);
+}
+
 static int
 spec_freeblks(ap)
 	struct vop_freeblks_args /* {

==== //depot/projects/ia64/sys/fs/udf/udf_vnops.c#12 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/fs/udf/udf_vnops.c,v 1.18 2003/01/04 08:47:18 phk Exp $
+ * $FreeBSD: src/sys/fs/udf/udf_vnops.c,v 1.19 2003/01/04 22:10:35 phk Exp $
  */
 
 /* udf_vnops.c */
@@ -828,7 +828,7 @@
 	}
 	vp = node->i_devvp;
 	bp->b_dev = vp->v_rdev;
-	VOP_STRATEGY(vp, bp);
+	VOP_SPECSTRATEGY(vp, bp);
 	return (0);
 }
 

==== //depot/projects/ia64/sys/isofs/cd9660/cd9660_vnops.c#10 (text+ko) ====

@@ -36,7 +36,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)cd9660_vnops.c	8.19 (Berkeley) 5/27/95
- * $FreeBSD: src/sys/isofs/cd9660/cd9660_vnops.c,v 1.83 2003/01/04 08:47:19 phk Exp $
+ * $FreeBSD: src/sys/isofs/cd9660/cd9660_vnops.c,v 1.84 2003/01/04 22:10:35 phk Exp $
  */
 
 #include <sys/param.h>
@@ -731,7 +731,7 @@
 	}
 	vp = ip->i_devvp;
 	bp->b_dev = vp->v_rdev;
-	VOP_STRATEGY(vp, bp);
+	VOP_SPECSTRATEGY(vp, bp);
 	return (0);
 }
 

==== //depot/projects/ia64/sys/kern/imgact_elf.c#26 (text+ko) ====

@@ -27,7 +27,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/kern/imgact_elf.c,v 1.134 2002/12/21 01:15:39 marcel Exp $
+ * $FreeBSD: src/sys/kern/imgact_elf.c,v 1.135 2003/01/04 22:07:48 jake Exp $
  */
 
 #include <sys/param.h>
@@ -81,20 +81,24 @@
     vm_prot_t prot, size_t pagesize);
 static int __CONCAT(exec_, __elfN(imgact))(struct image_params *imgp);
 
+SYSCTL_NODE(_kern, OID_AUTO, __CONCAT(elf, __ELF_WORD_SIZE), CTLFLAG_RW, 0,
+    "");
+
+static int fallback_brand = -1;
+SYSCTL_INT(__CONCAT(_kern_elf, __ELF_WORD_SIZE), OID_AUTO, fallback_brand,
+    CTLFLAG_RW, &fallback_brand, 0,
+    __XSTRING(__CONCAT(ELF, __ELF_WORD_SIZE)) " brand of last resort");
+TUNABLE_INT("kern.elf" __XSTRING(__ELF_WORD_SIZE) ".fallback_brand",
+    &fallback_brand);
+
 static int elf_trace = 0;
+SYSCTL_INT(_debug, OID_AUTO, __elfN(trace), CTLFLAG_RW, &elf_trace, 0, "");
+
 static int elf_legacy_coredump = 0;
-#if __ELF_WORD_SIZE == 32
-SYSCTL_INT(_debug, OID_AUTO, elf32_trace, CTLFLAG_RW, &elf_trace, 0, "");
-SYSCTL_INT(_debug, OID_AUTO, elf32_legacy_coredump, CTLFLAG_RW, 
+SYSCTL_INT(_debug, OID_AUTO, __elfN(legacy_coredump), CTLFLAG_RW, 
     &elf_legacy_coredump, 0, "");
-#else
-SYSCTL_INT(_debug, OID_AUTO, elf64_trace, CTLFLAG_RW, &elf_trace, 0, "");
-SYSCTL_INT(_debug, OID_AUTO, elf64_legacy_coredump, CTLFLAG_RW, 
-    &elf_legacy_coredump, 0, "");
-#endif
 
 static Elf_Brandinfo *elf_brand_list[MAX_BRANDS];
-extern int fallback_elf_brand;
 
 int
 __elfN(insert_brand_entry)(Elf_Brandinfo *entry)
@@ -184,7 +188,7 @@
 	for (i = 0; i < MAX_BRANDS; i++) {
 		bi = elf_brand_list[i];
 		if (bi != NULL && hdr->e_machine == bi->machine &&
-		    fallback_elf_brand == bi->brand)
+		    fallback_brand == bi->brand)
 			return (bi);
 	}
 	return (NULL);
@@ -849,22 +853,16 @@
 	return (error);
 }
 
-#if __ELF_WORD_SIZE == 32
-#define suword	suword32
-#define stacktype u_int32_t
-#else
-#define suword	suword64
-#define stacktype u_int64_t
-#endif
+#define	suword __CONCAT(suword, __ELF_WORD_SIZE)
 
 int
 __elfN(freebsd_fixup)(register_t **stack_base, struct image_params *imgp)
 {
 	Elf_Auxargs *args = (Elf_Auxargs *)imgp->auxargs;
-	stacktype *base;
-	stacktype *pos;
+	Elf_Addr *base;
+	Elf_Addr *pos;
 
-	base = (stacktype *)*stack_base;
+	base = (Elf_Addr *)*stack_base;
 	pos = base + (imgp->argc + imgp->envc + 2);
 
 	if (args->trace) {
@@ -1260,10 +1258,8 @@
 /*
  * Tell kern_execve.c about it, with a little help from the linker.
  */
-#if __ELF_WORD_SIZE == 32
-static struct execsw elf_execsw = {exec_elf32_imgact, "ELF32"};
-EXEC_SET(elf32, elf_execsw);
-#else
-static struct execsw elf_execsw = {exec_elf64_imgact, "ELF64"};
-EXEC_SET(elf64, elf_execsw);
-#endif
+static struct execsw __elfN(execsw) = {
+	__CONCAT(exec_, __elfN(imgact)),
+	__XSTRING(__CONCAT(ELF, __ELF_WORD_SIZE))
+};
+EXEC_SET(__CONCAT(elf, __ELF_WORD_SIZE), __elfN(execsw));

==== //depot/projects/ia64/sys/kern/imgact_elf32.c#3 (text+ko) ====

@@ -23,16 +23,8 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/kern/imgact_elf32.c,v 1.1 2002/07/20 02:56:11 peter Exp $
- */
-
-/*
- * There ought to be a better way of deciding this.
+ * $FreeBSD: src/sys/kern/imgact_elf32.c,v 1.2 2003/01/04 22:07:48 jake Exp $
  */
-#if defined(__i386__) || defined(__ia64__) || defined(__powerpc__)
 
 #define __ELF_WORD_SIZE 32
-
 #include <kern/imgact_elf.c>
-
-#endif

==== //depot/projects/ia64/sys/kern/imgact_elf64.c#3 (text+ko) ====

@@ -23,16 +23,8 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/kern/imgact_elf64.c,v 1.1 2002/07/20 02:56:11 peter Exp $
- */
-
-/*
- * There ought to be a better way of deciding this.
+ * $FreeBSD: src/sys/kern/imgact_elf64.c,v 1.2 2003/01/04 22:07:48 jake Exp $
  */
-#if defined(__alpha__) || defined(__ia64__) || defined(__sparc64__)
 
 #define __ELF_WORD_SIZE 64
-
 #include <kern/imgact_elf.c>
-
-#endif

==== //depot/projects/ia64/sys/kern/init_main.c#22 (text+ko) ====

@@ -39,7 +39,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)init_main.c	8.9 (Berkeley) 1/21/94
- * $FreeBSD: src/sys/kern/init_main.c,v 1.217 2002/12/28 01:23:07 julian Exp $
+ * $FreeBSD: src/sys/kern/init_main.c,v 1.218 2003/01/04 22:07:48 jake Exp $
  */
 
 #include "opt_init_path.h"
@@ -98,7 +98,6 @@
 struct	proc *initproc;
 
 int cmask = CMASK;
-extern int fallback_elf_brand;
 
 struct	vnode *rootvp;
 int	boothowto = 0;		/* initialized so that it can be patched */
@@ -592,10 +591,6 @@
 		strlcpy(init_path, var, sizeof(init_path));
 		freeenv(var);
 	}
-	if ((var = getenv("kern.fallback_elf_brand")) != NULL) {
-		fallback_elf_brand = strtol(var, NULL, 0);
-		freeenv(var);
-	}
 	
 	for (path = init_path; *path != '\0'; path = next) {
 		while (*path == ':')

==== //depot/projects/ia64/sys/kern/kern_mib.c#11 (text+ko) ====

@@ -37,7 +37,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)kern_sysctl.c	8.4 (Berkeley) 4/14/94
- * $FreeBSD: src/sys/kern/kern_mib.c,v 1.62 2002/11/07 23:57:17 tmm Exp $
+ * $FreeBSD: src/sys/kern/kern_mib.c,v 1.63 2003/01/04 22:07:48 jake Exp $
  */
 
 #include "opt_posix.h"
@@ -361,3 +361,7 @@
 #include <sys/user.h>
 SYSCTL_INT(_debug_sizeof, OID_AUTO, kinfo_proc, CTLFLAG_RD,
     0, sizeof(struct kinfo_proc), "sizeof(struct kinfo_proc)");
+
+SYSCTL_STRING(_kern, OID_AUTO, fallback_elf_brand, CTLFLAG_RD,
+    "kern.fallback_elf_brand is deprecated, use kern.elf32.fallback_brand or "
+    "kern.elf64.fallback_brand" , 0, "");

==== //depot/projects/ia64/sys/kern/vfs_bio.c#33 (text+ko) ====

@@ -11,7 +11,7 @@
  * 2. Absolutely no warranty of function or purpose is made by the author
  *		John S. Dyson.
  *
- * $FreeBSD: src/sys/kern/vfs_bio.c,v 1.348 2003/01/04 09:37:42 phk Exp $
+ * $FreeBSD: src/sys/kern/vfs_bio.c,v 1.349 2003/01/04 22:10:35 phk Exp $
  */
 
 /*
@@ -701,7 +701,10 @@
 		if (bp->b_rcred == NOCRED && cred != NOCRED)
 			bp->b_rcred = crhold(cred);
 		vfs_busy_pages(bp, 0);
-		VOP_STRATEGY(vp, bp);
+		if (vp->v_type == VCHR)
+			VOP_SPECSTRATEGY(vp, bp);
+		else
+			VOP_STRATEGY(vp, bp);
 		++readwait;
 	}
 
@@ -721,7 +724,10 @@
 				rabp->b_rcred = crhold(cred);
 			vfs_busy_pages(rabp, 0);
 			BUF_KERNPROC(rabp);
-			VOP_STRATEGY(vp, rabp);
+			if (vp->v_type == VCHR)
+				VOP_SPECSTRATEGY(vp, bp);
+			else
+				VOP_STRATEGY(vp, bp);
 		} else {
 			brelse(rabp);
 		}
@@ -855,7 +861,10 @@
 	splx(s);
 	if (oldflags & B_ASYNC)
 		BUF_KERNPROC(bp);
-	VOP_STRATEGY(bp->b_vp, bp);
+	if (bp->b_vp->v_type == VCHR)
+		VOP_SPECSTRATEGY(bp->b_vp, bp);
+	else
+		VOP_STRATEGY(bp->b_vp, bp);
 
 	if ((oldflags & B_ASYNC) == 0) {
 		int rtval = bufwait(bp);

==== //depot/projects/ia64/sys/kern/vfs_default.c#14 (text+ko) ====

@@ -36,7 +36,7 @@
  * SUCH DAMAGE.
  *
  *
- * $FreeBSD: src/sys/kern/vfs_default.c,v 1.69 2003/01/04 20:31:27 phk Exp $
+ * $FreeBSD: src/sys/kern/vfs_default.c,v 1.70 2003/01/04 22:10:36 phk Exp $
  */
 
 #include <sys/param.h>
@@ -66,6 +66,7 @@
 
 static int	vop_nolookup(struct vop_lookup_args *);
 static int	vop_nostrategy(struct vop_strategy_args *);
+static int	vop_nospecstrategy(struct vop_specstrategy_args *);
 
 /*
  * This vnode table stores what we want to do if the filesystem doesn't
@@ -98,6 +99,7 @@
 	{ &vop_putpages_desc,		(vop_t *) vop_stdputpages },
 	{ &vop_readlink_desc,		(vop_t *) vop_einval },
 	{ &vop_revoke_desc,		(vop_t *) vop_revoke },
+	{ &vop_specstrategy_desc,	(vop_t *) vop_nospecstrategy },
 	{ &vop_strategy_desc,		(vop_t *) vop_nostrategy },
 	{ &vop_unlock_desc,		(vop_t *) vop_stdunlock },
 	{ NULL, NULL }
@@ -221,6 +223,29 @@
 }
 
 /*
+ *	vop_nospecstrategy:
+ *
+ *	This shouldn't happen.  VOP_SPECSTRATEGY should always have a VCHR
+ *	argument vnode, and thos have a method for specstrategy over in
+ *	specfs, so we only ever get here if somebody botched it.
+ *	Pass the call to VOP_STRATEGY() and get on with life.
+ *	The first time we print some info useful for debugging.
+ */
+
+static int
+vop_nospecstrategy (struct vop_specstrategy_args *ap)
+{
+	static int once;
+
+	if (!once) {
+		vprint("\nVOP_SPECSTRATEGY on non-VCHR\n", ap->a_vp);
+		backtrace();
+		once++;
+	}
+	return VOP_STRATEGY(ap->a_vp, ap->a_bp);
+}
+
+/*
  * vop_stdpathconf:
  * 
  * Standard implementation of POSIX pathconf, to get information about limits

==== //depot/projects/ia64/sys/kern/vnode_if.src#11 (text+ko) ====

@@ -31,7 +31,7 @@
 # SUCH DAMAGE.
 #
 #	@(#)vnode_if.src	8.12 (Berkeley) 5/14/95
-# $FreeBSD: src/sys/kern/vnode_if.src,v 1.59 2002/12/24 19:47:13 rwatson Exp $
+# $FreeBSD: src/sys/kern/vnode_if.src,v 1.60 2003/01/04 22:10:36 phk Exp $
 #
 
 #
@@ -400,6 +400,15 @@
 };
 
 #
+# specstrategy	vp	L L L
+#! specstrategy	pre	vop_strategy_pre
+#
+vop_specstrategy {
+	IN struct vnode *vp;
+	IN struct buf *bp;
+};
+
+#
 #% getwritemount vp	= = =
 #
 vop_getwritemount {

==== //depot/projects/ia64/sys/ufs/ufs/ufs_vnops.c#23 (text+ko) ====

@@ -36,7 +36,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)ufs_vnops.c	8.27 (Berkeley) 5/27/95
- * $FreeBSD: src/sys/ufs/ufs/ufs_vnops.c,v 1.221 2003/01/04 08:47:19 phk Exp $
+ * $FreeBSD: src/sys/ufs/ufs/ufs_vnops.c,v 1.222 2003/01/04 22:10:36 phk Exp $
  */
 
 #include "opt_mac.h"
@@ -1968,7 +1968,7 @@
 	}
 	vp = ip->i_devvp;
 	bp->b_dev = vp->v_rdev;
-	VOP_STRATEGY(vp, bp);
+	VOP_SPECSTRATEGY(vp, bp);
 	return (0);
 }
 

==== //depot/projects/ia64/sys/vm/vm_swap.c#15 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)vm_swap.c	8.5 (Berkeley) 2/17/94
- * $FreeBSD: src/sys/vm/vm_swap.c,v 1.129 2003/01/03 19:16:48 phk Exp $
+ * $FreeBSD: src/sys/vm/vm_swap.c,v 1.130 2003/01/04 22:10:36 phk Exp $
  */
 
 #include "opt_mac.h"
@@ -164,7 +164,7 @@
 	}
 	bp->b_vp = sp->sw_vp;
 	splx(s);
-	VOP_STRATEGY(bp->b_vp, bp);
+	VOP_SPECSTRATEGY(bp->b_vp, bp);
 	return 0;
 }
 

==== //depot/projects/ia64/usr.bin/systat/Makefile#4 (text+ko) ====

@@ -1,10 +1,10 @@
 #	@(#)Makefile	8.1 (Berkeley) 6/6/93
-# $FreeBSD: src/usr.bin/systat/Makefile,v 1.12 2002/02/08 23:07:35 markm Exp $
+# $FreeBSD: src/usr.bin/systat/Makefile,v 1.13 2003/01/04 22:07:24 phk Exp $
 
 PROG=	systat
 SRCS=	cmds.c cmdtab.c devs.c fetch.c iostat.c keyboard.c main.c \
 	mbufs.c netcmds.c netstat.c pigs.c swap.c icmp.c mode.c ip.c tcp.c \
-	vmstat.c
+	vmstat.c convtbl.c ifcmds.c ifstat.c
 DPADD=	${LIBCURSES} ${LIBM} ${LIBKVM} ${LIBDEVSTAT}
 LDADD=	-lcurses -lm -lkvm -ldevstat
 

==== //depot/projects/ia64/usr.bin/systat/cmds.c#3 (text+ko) ====

@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 
-__FBSDID("$FreeBSD: src/usr.bin/systat/cmds.c,v 1.4 2001/12/12 00:13:37 markm Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/systat/cmds.c,v 1.5 2003/01/04 21:58:25 phk Exp $");
 
 #ifdef lint
 static const char sccsid[] = "@(#)cmds.c	8.2 (Berkeley) 4/29/95";
@@ -119,6 +119,7 @@
 			goto done;
                 alarm(0);
 		(*curcmd->c_close)(wnd);
+		curcmd->c_flags &= ~CF_INIT;
 		wnd = (*p->c_open)();
 		if (wnd == 0) {
 			error("Couldn't open new display");

==== //depot/projects/ia64/usr.bin/systat/cmdtab.c#3 (text+ko) ====

@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 
-__FBSDID("$FreeBSD: src/usr.bin/systat/cmdtab.c,v 1.7 2001/12/12 00:13:37 markm Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/systat/cmdtab.c,v 1.8 2003/01/04 22:07:24 phk Exp $");
 
 #ifdef lint
 static const char sccsid[] = "@(#)cmdtab.c	8.1 (Berkeley) 6/6/93";
@@ -71,6 +71,9 @@
 	{ "tcp",	showtcp,	fetchtcp,	labeltcp,
 	  inittcp,	opentcp,	closetcp,	cmdmode,
 	  resettcp,	0 },
+	{ "ifstat",	showifstat,	fetchifstat,	labelifstat,
+	  initifstat,	openifstat,	closeifstat,	cmdifstat,
+	  0,		CF_LOADAV },
         { NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0 }
 };
 struct  cmdtab *curcmd = &cmdtab[0];

==== //depot/projects/ia64/usr.bin/systat/extern.h#4 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *      @(#)extern.h	8.1 (Berkeley) 6/6/93
- * $FreeBSD: src/usr.bin/systat/extern.h,v 1.11 2002/03/22 01:42:31 imp Exp $
+ * $FreeBSD: src/usr.bin/systat/extern.h,v 1.12 2003/01/04 22:07:24 phk Exp $
  */
 
 #include <sys/cdefs.h>
@@ -72,8 +72,9 @@
 
 int	 checkhost(struct inpcb *);
 int	 checkport(struct inpcb *);
+void	 closeicmp(WINDOW *);
+void	 closeifstat(WINDOW *);
 void	 closeiostat(WINDOW *);
-void	 closeicmp(WINDOW *);
 void	 closeip(WINDOW *);
 void	 closekre(WINDOW *);
 void	 closembufs(WINDOW *);
@@ -81,6 +82,7 @@
 void	 closepigs(WINDOW *);
 void	 closeswap(WINDOW *);
 void	 closetcp(WINDOW *);
+int	 cmdifstat(const char *, const char *);
 int	 cmdiostat(const char *, const char *);
 int	 cmdkre(const char *, const char *);
 int	 cmdnetstat(const char *, const char *);
@@ -92,6 +94,7 @@
 int	 dkcmd(char *, char *);
 void	 error(const char *fmt, ...) __printflike(1, 2);
 void	 fetchicmp(void);
+void	 fetchifstat(void);
 void	 fetchip(void);
 void	 fetchiostat(void);
 void	 fetchkre(void);
@@ -102,6 +105,7 @@
 void	 fetchtcp(void);
 void	 getsysctl(const char *, void *, size_t);
 int	 initicmp(void);
+int	 initifstat(void);
 int	 initip(void);
 int	 initiostat(void);
 int	 initkre(void);
@@ -113,6 +117,7 @@
 int	 keyboard(void);
 int	 kvm_ckread(void *, void *, int);
 void	 labelicmp(void);
+void	 labelifstat(void);
 void	 labelip(void);
 void	 labeliostat(void);
 void	 labelkre(void);
@@ -126,6 +131,7 @@
 int	 netcmd(const char *, const char *);
 void	 nlisterr(struct nlist []);
 WINDOW	*openicmp(void);
+WINDOW	*openifstat(void);
 WINDOW	*openip(void);
 WINDOW	*openiostat(void);
 WINDOW	*openkre(void);
@@ -139,6 +145,7 @@
 void	 resetip(void);
 void	 resettcp(void);
 void	 showicmp(void);
+void	 showifstat(void);
 void	 showip(void);
 void	 showiostat(void);
 void	 showkre(void);

==== //depot/projects/ia64/usr.bin/systat/systat.1#6 (text+ko) ====

@@ -30,7 +30,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"	@(#)systat.1	8.2 (Berkeley) 12/30/93
-.\" $FreeBSD: src/usr.bin/systat/systat.1,v 1.36 2002/12/27 12:15:35 schweikh Exp $
+.\" $FreeBSD: src/usr.bin/systat/systat.1,v 1.37 2003/01/04 22:07:24 phk Exp $
 .\"
 .Dd September 9, 1997
 .Dt SYSTAT 1
@@ -88,6 +88,7 @@
 .Ar display
 to be one of:
 .Ic icmp ,
+.Ic ifstat ,
 .Ic iostat ,
 .Ic ip ,
 .Ic mbufs ,
@@ -432,6 +433,28 @@
 Reset the port, host, and protocol matching mechanisms to the default
 (any protocol, port, or host).
 .El
+.It Ic ifstat
+Display the network traffic going through active interfaces on the
+system.  Idle interfaces will not be displayed until they receive some
+traffic.
+.Pp
+For each interface being displayed, the current, peak and total
+statistics are displayed for incoming and outgoing traffic.  By default,
+the
+.Ic ifstat
+display will automatically scale the units being used so that they are
+in a human-readable format.  The scaling units used for the current and
+peak
+traffic columns can be altered by the
+.Ic scale
+command.
+.Pp
+.Bl -tag -width Ar -compact
+.It Cm scale Op Ar units
+Modify the scale used to display the current and peak traffic over all
+interfaces.  The following units are recognised: kbit, kbyte, mbit,
+mbyte, gbit, gbyte and auto.
+.El
 .El
 .Pp
 Commands to switch between displays may be abbreviated to the

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe p4-projects" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200301042311.h04NBMHa018179>