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>