PERFORCE change 129182 for review

John Birrell jb at FreeBSD.org
Sat Nov 17 15:33:05 PST 2007


http://perforce.freebsd.org/chv.cgi?CH=129182

Change 129182 by jb at jb_freebsd1 on 2007/11/17 23:32:29

	IFC

Affected files ...

.. //depot/projects/dtrace/src/bin/ln/ln.1#4 integrate
.. //depot/projects/dtrace/src/bin/ln/ln.c#4 integrate
.. //depot/projects/dtrace/src/gnu/usr.bin/gdb/arch/arm/Makefile#3 integrate
.. //depot/projects/dtrace/src/gnu/usr.bin/gdb/arch/arm/armfbsd-nat.c#3 integrate
.. //depot/projects/dtrace/src/gnu/usr.bin/gdb/arch/arm/armfbsd-tdep.c#3 integrate
.. //depot/projects/dtrace/src/gnu/usr.bin/gdb/arch/arm/init.c#3 integrate
.. //depot/projects/dtrace/src/gnu/usr.bin/gdb/arch/arm/nm-fbsd.h#3 integrate
.. //depot/projects/dtrace/src/lib/Makefile#16 integrate
.. //depot/projects/dtrace/src/lib/libthread_db/arch/arm/libpthread_md.c#1 branch
.. //depot/projects/dtrace/src/sbin/ipfw/ipfw.8#15 integrate
.. //depot/projects/dtrace/src/sbin/mount_ntfs/mount_ntfs.8#4 integrate
.. //depot/projects/dtrace/src/sys/amd64/amd64/pmap.c#23 integrate
.. //depot/projects/dtrace/src/sys/arm/arm/pmap.c#21 integrate
.. //depot/projects/dtrace/src/sys/arm/conf/HL200#1 branch
.. //depot/projects/dtrace/src/sys/boot/i386/cdboot/cdboot.s#6 integrate
.. //depot/projects/dtrace/src/sys/fs/msdosfs/msdosfs_vfsops.c#15 integrate
.. //depot/projects/dtrace/src/sys/fs/ntfs/ntfs_vfsops.c#7 integrate
.. //depot/projects/dtrace/src/sys/i386/i386/pmap.c#20 integrate
.. //depot/projects/dtrace/src/sys/ia64/ia64/pmap.c#11 integrate
.. //depot/projects/dtrace/src/sys/netinet/ip_dummynet.c#8 integrate
.. //depot/projects/dtrace/src/sys/powerpc/powerpc/mmu_if.m#7 integrate
.. //depot/projects/dtrace/src/sys/powerpc/powerpc/mmu_oea.c#11 integrate
.. //depot/projects/dtrace/src/sys/powerpc/powerpc/pmap_dispatch.c#9 integrate
.. //depot/projects/dtrace/src/sys/sparc64/sparc64/pmap.c#13 integrate
.. //depot/projects/dtrace/src/sys/sun4v/sun4v/pmap.c#25 integrate
.. //depot/projects/dtrace/src/sys/vm/pmap.h#8 integrate
.. //depot/projects/dtrace/src/sys/vm/vm_object.c#16 integrate
.. //depot/projects/dtrace/www/en/internal/machines.sgml#10 integrate

Differences ...

==== //depot/projects/dtrace/src/bin/ln/ln.1#4 (text+ko) ====

@@ -30,7 +30,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"	@(#)ln.1	8.2 (Berkeley) 12/30/93
-.\" $FreeBSD: src/bin/ln/ln.1,v 1.31 2006/02/14 11:08:05 glebius Exp $
+.\" $FreeBSD: src/bin/ln/ln.1,v 1.32 2007/11/17 21:01:22 ru Exp $
 .\"
 .Dd February 14, 2006
 .Dt LN 1
@@ -41,11 +41,15 @@
 .Nd make links
 .Sh SYNOPSIS
 .Nm
-.Op Fl Ffhinsv
+.Op Fl s Op Fl F
+.Op Fl f | i
+.Op Fl hnv
 .Ar source_file
 .Op Ar target_file
 .Nm
-.Op Fl Ffhinsv
+.Op Fl s Op Fl F
+.Op Fl f | i
+.Op Fl hnv
 .Ar source_file ...
 .Ar target_dir
 .Nm link

==== //depot/projects/dtrace/src/bin/ln/ln.c#4 (text+ko) ====

@@ -39,7 +39,7 @@
 #endif /* not lint */
 #endif
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/ln/ln.c,v 1.34 2006/02/14 11:08:05 glebius Exp $");
+__FBSDID("$FreeBSD: src/bin/ln/ln.c,v 1.36 2007/11/17 21:01:22 ru Exp $");
 
 #include <sys/param.h>
 #include <sys/stat.h>
@@ -69,7 +69,7 @@
 main(int argc, char *argv[])
 {
 	struct stat sb;
-	char *p, *sourcedir;
+	char *p, *targetdir;
 	int ch, exitval;
 
 	/*
@@ -134,34 +134,34 @@
 	case 0:
 		usage();
 		/* NOTREACHED */
-	case 1:				/* ln target */
+	case 1:				/* ln source */
 		exit(linkit(argv[0], ".", 1));
-	case 2:				/* ln target source */
+	case 2:				/* ln source target */
 		exit(linkit(argv[0], argv[1], 0));
 	default:
 		;
 	}
-					/* ln target1 target2 directory */
-	sourcedir = argv[argc - 1];
-	if (hflag && lstat(sourcedir, &sb) == 0 && S_ISLNK(sb.st_mode)) {
+					/* ln source1 source2 directory */
+	targetdir = argv[argc - 1];
+	if (hflag && lstat(targetdir, &sb) == 0 && S_ISLNK(sb.st_mode)) {
 		/*
 		 * We were asked not to follow symlinks, but found one at
 		 * the target--simulate "not a directory" error
 		 */
 		errno = ENOTDIR;
-		err(1, "%s", sourcedir);
+		err(1, "%s", targetdir);
 	}
-	if (stat(sourcedir, &sb))
-		err(1, "%s", sourcedir);
+	if (stat(targetdir, &sb))
+		err(1, "%s", targetdir);
 	if (!S_ISDIR(sb.st_mode))
 		usage();
-	for (exitval = 0; *argv != sourcedir; ++argv)
-		exitval |= linkit(*argv, sourcedir, 1);
+	for (exitval = 0; *argv != targetdir; ++argv)
+		exitval |= linkit(*argv, targetdir, 1);
 	exit(exitval);
 }
 
 int
-linkit(const char *target, const char *source, int isdir)
+linkit(const char *source, const char *target, int isdir)
 {
 	struct stat sb;
 	const char *p;
@@ -169,57 +169,57 @@
 	char path[PATH_MAX];
 
 	if (!sflag) {
-		/* If target doesn't exist, quit now. */
-		if (stat(target, &sb)) {
-			warn("%s", target);
+		/* If source doesn't exist, quit now. */
+		if (stat(source, &sb)) {
+			warn("%s", source);
 			return (1);
 		}
 		/* Only symbolic links to directories. */
 		if (S_ISDIR(sb.st_mode)) {
 			errno = EISDIR;
-			warn("%s", target);
+			warn("%s", source);
 			return (1);
 		}
 	}
 
 	/*
-	 * If the source is a directory (and not a symlink if hflag),
-	 * append the target's name.
+	 * If the target is a directory (and not a symlink if hflag),
+	 * append the source's name.
 	 */
 	if (isdir ||
-	    (lstat(source, &sb) == 0 && S_ISDIR(sb.st_mode)) ||
-	    (!hflag && stat(source, &sb) == 0 && S_ISDIR(sb.st_mode))) {
-		if ((p = strrchr(target, '/')) == NULL)
-			p = target;
+	    (lstat(target, &sb) == 0 && S_ISDIR(sb.st_mode)) ||
+	    (!hflag && stat(target, &sb) == 0 && S_ISDIR(sb.st_mode))) {
+		if ((p = strrchr(source, '/')) == NULL)
+			p = source;
 		else
 			++p;
-		if (snprintf(path, sizeof(path), "%s/%s", source, p) >=
+		if (snprintf(path, sizeof(path), "%s/%s", target, p) >=
 		    (ssize_t)sizeof(path)) {
 			errno = ENAMETOOLONG;
-			warn("%s", target);
+			warn("%s", source);
 			return (1);
 		}
-		source = path;
+		target = path;
 	}
 
-	exists = !lstat(source, &sb);
+	exists = !lstat(target, &sb);
 	/*
 	 * If the file exists, then unlink it forcibly if -f was specified
 	 * and interactively if -i was specified.
 	 */
 	if (fflag && exists) {
 		if (Fflag && S_ISDIR(sb.st_mode)) {
-			if (rmdir(source)) {
-				warn("%s", source);
+			if (rmdir(target)) {
+				warn("%s", target);
 				return (1);
 			}
-		} else if (unlink(source)) {
-			warn("%s", source);
+		} else if (unlink(target)) {
+			warn("%s", target);
 			return (1);
 		}
 	} else if (iflag && exists) {
 		fflush(stdout);
-		fprintf(stderr, "replace %s? ", source);
+		fprintf(stderr, "replace %s? ", target);
 
 		first = ch = getchar();
 		while(ch != '\n' && ch != EOF)
@@ -230,23 +230,23 @@
 		}
 
 		if (Fflag && S_ISDIR(sb.st_mode)) {
-			if (rmdir(source)) {
-				warn("%s", source);
+			if (rmdir(target)) {
+				warn("%s", target);
 				return (1);
 			}
-		} else if (unlink(source)) {
-			warn("%s", source);
+		} else if (unlink(target)) {
+			warn("%s", target);
 			return (1);
 		}
 	}
 
 	/* Attempt the link. */
-	if ((*linkf)(target, source)) {
-		warn("%s", source);
+	if ((*linkf)(source, target)) {
+		warn("%s", target);
 		return (1);
 	}
 	if (vflag)
-		(void)printf("%s %c> %s\n", source, linkch, target);
+		(void)printf("%s %c> %s\n", target, linkch, source);
 	return (0);
 }
 
@@ -254,8 +254,8 @@
 usage(void)
 {
 	(void)fprintf(stderr, "%s\n%s\n%s\n",
-	    "usage: ln [-Ffhinsv] source_file [target_file]",
-	    "       ln [-Ffhinsv] source_file ... target_dir",
+	    "usage: ln [-s [-F]] [-f | -i] [-hnv] source_file [target_file]",
+	    "       ln [-s [-F]] [-f | -i] [-hnv] source_file ... target_dir",
 	    "       link source_file target_file");
 	exit(1);
 }

==== //depot/projects/dtrace/src/gnu/usr.bin/gdb/arch/arm/Makefile#3 (text+ko) ====

@@ -1,8 +1,8 @@
-# $FreeBSD: src/gnu/usr.bin/gdb/arch/arm/Makefile,v 1.1 2006/09/14 06:49:34 imp Exp $
+# $FreeBSD: src/gnu/usr.bin/gdb/arch/arm/Makefile,v 1.2 2007/11/17 21:30:03 cognet Exp $
 
 GENSRCS+= xm.h
 LIBSRCS+= armfbsd-nat.c
-LIBSRCS+= arm-tdep.c armfbsd-tdep.c solib.c solib-svr4.c
+LIBSRCS+= arm-tdep.c armfbsd-tdep.c solib.c solib-svr4.c fbsd-threads.c
 
 nm.h:
 #XXX this should be arm/nm-fbsd.h but won't until it's merged into the gdb repo

==== //depot/projects/dtrace/src/gnu/usr.bin/gdb/arch/arm/armfbsd-nat.c#3 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/gnu/usr.bin/gdb/arch/arm/armfbsd-nat.c,v 1.1 2006/09/14 06:49:34 imp Exp $ */
+/* $FreeBSD: src/gnu/usr.bin/gdb/arch/arm/armfbsd-nat.c,v 1.2 2007/11/17 21:30:03 cognet Exp $ */
 
  /* Native-dependent code for BSD Unix running on ARM's, for GDB.
    Copyright 1988, 1989, 1991, 1992, 1994, 1996, 1999, 2002
@@ -78,9 +78,7 @@
 
   supply_register (ARM_SP_REGNUM, (char *) &gregset->r_sp);
   supply_register (ARM_LR_REGNUM, (char *) &gregset->r_lr);
-  /* This is ok: we're running native...  */
-  r_pc = ADDR_BITS_REMOVE (gregset->r_pc);
-  supply_register (ARM_PC_REGNUM, (char *) &r_pc);
+  supply_register (ARM_PC_REGNUM, (char *) &gregset->r_pc);
 
   if (arm_apcs_32)
     supply_register (ARM_PS_REGNUM, (char *) &gregset->r_cpsr);
@@ -88,6 +86,28 @@
     supply_register (ARM_PS_REGNUM, (char *) &gregset->r_pc);
 }
 
+/* Fill register REGNO (if it is a general-purpose register) in
+   *GREGSETPS with the value in GDB's register array.  If REGNO is -1,
+   do this for all registers.  */
+
+void
+fill_gregset (struct reg *gregset, int regno)
+{
+  int i;
+
+  for (i = ARM_A1_REGNUM; i < ARM_SP_REGNUM; i++)
+    if ((regno == -1 || regno == i))
+      regcache_collect (i, &gregset->r[i]);
+  if (regno == -1 || regno == ARM_SP_REGNUM)
+      regcache_collect (ARM_SP_REGNUM, &gregset->r_sp);
+  if (regno == -1 || regno == ARM_LR_REGNUM)
+      regcache_collect (ARM_LR_REGNUM, &gregset->r_lr);
+  if (regno == -1 || regno == ARM_PC_REGNUM)
+      regcache_collect (ARM_PC_REGNUM, &gregset->r_pc);
+  if (regno == -1 || regno == ARM_PS_REGNUM)
+      regcache_collect (ARM_PS_REGNUM, &gregset->r_cpsr);
+}
+
 void
 supply_fpregset (struct fpreg *fparegset)
 {
@@ -100,6 +120,20 @@
   supply_register (ARM_FPS_REGNUM, (char *) &fparegset->fpr_fpsr);
 }
 
+void
+fill_fpregset (struct fpreg *fparegset, int regno)
+{
+  int i;
+
+  for (i = ARM_F0_REGNUM; i <= ARM_F7_REGNUM; i++)
+    if (regno == -1 || regno == i)
+      regcache_raw_supply(current_regcache, i,
+	  &fparegset->fpr[i - ARM_F0_REGNUM]);
+  if (regno == -1 || regno == ARM_FPS_REGNUM)
+    regcache_raw_supply(current_regcache, ARM_FPS_REGNUM, 
+	&fparegset->fpr_fpsr);
+}
+
 static void
 fetch_register (int regno)
 {

==== //depot/projects/dtrace/src/gnu/usr.bin/gdb/arch/arm/armfbsd-tdep.c#3 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/gnu/usr.bin/gdb/arch/arm/armfbsd-tdep.c,v 1.1 2006/09/14 06:49:34 imp Exp $ */
+/* $FreeBSD: src/gnu/usr.bin/gdb/arch/arm/armfbsd-tdep.c,v 1.2 2007/11/17 21:30:03 cognet Exp $ */
 
 /* Target-specific functions for ARM running under NetBSD.
    Copyright 2002, 2003 Free Software Foundation, Inc.
@@ -60,7 +60,6 @@
   tdep->fp_model = ARM_FLOAT_SOFT_VFP;
 }
 
-
 void
 _initialize_armfbsd_tdep (void)
 {

==== //depot/projects/dtrace/src/gnu/usr.bin/gdb/arch/arm/init.c#3 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/gnu/usr.bin/gdb/arch/arm/init.c,v 1.1 2006/09/14 06:49:34 imp Exp $ */
+/* $FreeBSD: src/gnu/usr.bin/gdb/arch/arm/init.c,v 1.2 2007/11/17 21:30:03 cognet Exp $ */
 
 /* Do not modify this file.  */
 /* It is created automatically by the Makefile.  */
@@ -105,6 +105,7 @@
 extern initialize_file_ftype _initialize_mi_cmd_env;
 extern initialize_file_ftype _initialize_mi_interp;
 extern initialize_file_ftype _initialize_mi_main;
+extern initialize_file_ftype _initialize_thread_db;
 extern initialize_file_ftype _initialize_tui_hooks;
 extern initialize_file_ftype _initialize_tui_interp;
 extern initialize_file_ftype _initialize_tui_layout;
@@ -128,6 +129,7 @@
   _initialize_kernel_u_addr ();
   _initialize_infptrace ();
   _initialize_inftarg ();
+  _initialize_thread_db ();
 #endif
   _initialize_arm_fbsdnat ();
   _initialize_remote ();

==== //depot/projects/dtrace/src/gnu/usr.bin/gdb/arch/arm/nm-fbsd.h#3 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/gnu/usr.bin/gdb/arch/arm/nm-fbsd.h,v 1.1 2006/09/14 06:49:34 imp Exp $ */
+/* $FreeBSD: src/gnu/usr.bin/gdb/arch/arm/nm-fbsd.h,v 1.2 2007/11/17 18:41:04 cognet Exp $ */
 
 /* Native-dependent definitions for ARM running NetBSD, for GDB.
    Copyright 1986, 1987, 1989, 1992, 1994, 1999 Free Software Foundation, Inc.
@@ -29,4 +29,7 @@
 /* Override copies of {fetch,store}_inferior_registers in `infptrace.c'.  */
 #define FETCH_INFERIOR_REGISTERS
 
+/* We can attach and detach.  */
+#define ATTACH_DETACH
+
 #endif /* NM_NBSD_H */

==== //depot/projects/dtrace/src/lib/Makefile#16 (text+ko) ====

@@ -1,5 +1,5 @@
 #	@(#)Makefile	8.1 (Berkeley) 6/4/93
-# $FreeBSD: src/lib/Makefile,v 1.225 2007/10/26 11:07:25 ru Exp $
+# $FreeBSD: src/lib/Makefile,v 1.226 2007/11/17 21:29:02 cognet Exp $
 
 .include <bsd.own.mk>
 
@@ -36,7 +36,7 @@
 	${_libncp} ${_libngatm} libopie libpam libpcap \
 	libpmc ${_libkse} librt ${_libsdp} ${_libsm} ${_libsmb} \
 	${_libsmdb} \
-	${_libsmutil} libstand libtelnet ${_libthr} ${_libthread_db} libufs \
+	${_libsmutil} libstand libtelnet ${_libthr} libthread_db libufs \
 	libugidfw ${_libusbhid} ${_libvgl} libwrap liby libz ${_bind}
 
 .if exists(${.CURDIR}/csu/${MACHINE_ARCH}-elf)
@@ -108,10 +108,6 @@
 _libthr=	libthr
 .endif
 
-.if ${MACHINE_ARCH} != "arm"
-_libthread_db= libthread_db
-.endif
-
 .if ${MK_USB} != "no"
 _libusbhid=	libusbhid
 .endif

==== //depot/projects/dtrace/src/sbin/ipfw/ipfw.8#15 (text+ko) ====

@@ -1,7 +1,7 @@
 .\"
-.\" $FreeBSD: src/sbin/ipfw/ipfw.8,v 1.205 2007/10/19 18:24:19 rpaulo Exp $
+.\" $FreeBSD: src/sbin/ipfw/ipfw.8,v 1.206 2007/11/17 21:54:57 oleg Exp $
 .\"
-.Dd October 19, 2007
+.Dd November 17, 2007
 .Dt IPFW 8
 .Os
 .Sh NAME
@@ -1756,6 +1756,16 @@
 TCP connection, or from/to a given host, or entire subnet, or a
 protocol type, etc.
 .Pp
+There are two modes of dummynet operation: normal and fast.
+Normal mode tries to emulate real link: dummynet scheduler ensures packet will
+not leave pipe faster than it would be on real link with given bandwidth.
+Fast mode allows certain packets to bypass dummynet scheduler (if packet flow
+does not exceed pipe's bandwidth). Thus fast mode requires less cpu cycles
+per packet (in average) but packet latency can be significantly lower comparing
+to real link with same bandwidth. Default is normal mode, fast mode can be
+enabled by setting net.inet.ip.dummynet.io_fast sysctl(8) variable to non-zero
+value.
+.Pp
 Packets belonging to the same flow are then passed to either of two
 different objects, which implement the traffic regulation:
 .Bl -hang -offset XXXX
@@ -2120,6 +2130,14 @@
 This value is used when no
 .Cm buckets
 option is specified when configuring a pipe/queue.
+.It Em net.inet.ip.dummynet.io_fast : No 0
+If set to non-zero value enables "fast" mode of dummynet operation (see above).
+.It Em net.inet.ip.dummynet.io_pkt
+Number of packets passed to by dummynet.
+.It Em net.inet.ip.dummynet.io_pkt_drop
+Number of packets dropped by dummynet.
+.It Em net.inet.ip.dummynet.io_pkt_fast
+Number of packets bypassed dummynet scheduler.
 .It Em net.inet.ip.dummynet.max_chain_len : No 16
 Target value for the maximum number of pipes/queues in a hash bucket.
 The product

==== //depot/projects/dtrace/src/sbin/mount_ntfs/mount_ntfs.8#4 (text+ko) ====

@@ -28,9 +28,9 @@
 .\" (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/sbin/mount_ntfs/mount_ntfs.8,v 1.21 2005/02/10 09:19:31 ru Exp $
+.\" $FreeBSD: src/sbin/mount_ntfs/mount_ntfs.8,v 1.22 2007/11/17 17:05:00 maxim Exp $
 .\"
-.Dd January 3, 1999
+.Dd 17 November, 2007
 .Dt MOUNT_NTFS 8
 .Os
 .Sh NAME
@@ -82,6 +82,9 @@
 .It Fl m Ar mask
 Specify the maximum file permissions for files
 in the file system.
+Only the nine low-order bits of
+.Ar mask
+are used.
 .It Fl C Ar charset
 Specify local
 .Ar charset

==== //depot/projects/dtrace/src/sys/amd64/amd64/pmap.c#23 (text+ko) ====

@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.593 2007/11/05 18:13:33 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.594 2007/11/17 22:52:28 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -2925,6 +2925,35 @@
 }
 
 /*
+ *	pmap_page_wired_mappings:
+ *
+ *	Return the number of managed mappings to the given physical page
+ *	that are wired.
+ */
+int
+pmap_page_wired_mappings(vm_page_t m)
+{
+	pv_entry_t pv;
+	pt_entry_t *pte;
+	pmap_t pmap;
+	int count;
+
+	count = 0;
+	if ((m->flags & PG_FICTITIOUS) != 0)
+		return (count);
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+	TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
+		pmap = PV_PMAP(pv);
+		PMAP_LOCK(pmap);
+		pte = pmap_pte(pmap, pv->pv_va);
+		if ((*pte & PG_W) != 0)
+			count++;
+		PMAP_UNLOCK(pmap);
+	}
+	return (count);
+}
+
+/*
  * Remove all pages from specified address space
  * this aids process exit speeds.  Also, this code
  * is special cased for current process only, but

==== //depot/projects/dtrace/src/sys/arm/arm/pmap.c#21 (text+ko) ====

@@ -147,7 +147,7 @@
 #include "opt_vm.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.88 2007/11/05 11:36:10 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.89 2007/11/17 22:52:28 alc Exp $");
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
@@ -4490,6 +4490,27 @@
 	return (FALSE);
 }
 
+/*
+ *	pmap_page_wired_mappings:
+ *
+ *	Return the number of managed mappings to the given physical page
+ *	that are wired.
+ */
+int
+pmap_page_wired_mappings(vm_page_t m)
+{
+	pv_entry_t pv;
+	int count;
+
+	count = 0;
+	if ((m->flags & PG_FICTITIOUS) != 0)
+		return (count);
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+	TAILQ_FOREACH(pv, &m->md.pv_list, pv_list)
+		if ((pv->pv_flags & PVF_WIRED) != 0)
+			count++;
+	return (count);
+}
 
 /*
  *	pmap_ts_referenced:

==== //depot/projects/dtrace/src/sys/boot/i386/cdboot/cdboot.s#6 (text+ko) ====

@@ -27,7 +27,7 @@
 # SUCH DAMAGE.
 #
 
-# $FreeBSD: src/sys/boot/i386/cdboot/cdboot.s,v 1.17 2007/02/23 21:07:44 remko Exp $
+# $FreeBSD: src/sys/boot/i386/cdboot/cdboot.s,v 1.18 2007/11/17 17:32:40 jhb Exp $
 
 #
 # This program is a freestanding boot program to load an a.out binary
@@ -585,7 +585,7 @@
 msg_relocate:	.asciz	"Relocating the loader and the BTX\r\n"
 msg_jump:	.asciz	"Starting the BTX loader\r\n"
 msg_badread:	.ascii  "Read Error: 0x"
-hex_error:	.ascii	"00\r\n"
+hex_error:	.asciz	"00\r\n"
 msg_novd:	.asciz  "Could not find Primary Volume Descriptor\r\n"
 msg_lookup:	.asciz  "Looking up "
 msg_lookup2:	.asciz  "... "

==== //depot/projects/dtrace/src/sys/fs/msdosfs/msdosfs_vfsops.c#15 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/fs/msdosfs/msdosfs_vfsops.c,v 1.181 2007/10/23 10:39:03 bde Exp $ */
+/* $FreeBSD: src/sys/fs/msdosfs/msdosfs_vfsops.c,v 1.182 2007/11/17 16:19:48 maxim Exp $ */
 /*	$NetBSD: msdosfs_vfsops.c,v 1.51 1997/11/17 15:36:58 ws Exp $	*/
 
 /*-
@@ -464,7 +464,7 @@
 
 	/*
 	 * Initialize ownerships and permissions, since nothing else will
-	 * initialize them iff we are mounting root.
+	 * initialize them if we are mounting root.
 	 */
 	pmp->pm_uid = UID_ROOT;
 	pmp->pm_gid = GID_WHEEL;

==== //depot/projects/dtrace/src/sys/fs/ntfs/ntfs_vfsops.c#7 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/fs/ntfs/ntfs_vfsops.c,v 1.89 2007/10/16 10:54:53 alfred Exp $
+ * $FreeBSD: src/sys/fs/ntfs/ntfs_vfsops.c,v 1.90 2007/11/17 17:05:01 maxim Exp $
  */
 
 
@@ -41,6 +41,7 @@
 #include <sys/buf.h>
 #include <sys/fcntl.h>
 #include <sys/malloc.h>
+#include <sys/stat.h>
 #include <sys/systm.h>
 
 #include <geom/geom.h>
@@ -331,7 +332,7 @@
 	if (1 == vfs_scanopt(mp->mnt_optnew, "gid", "%d", &v))
 		ntmp->ntm_gid = v;
 	if (1 == vfs_scanopt(mp->mnt_optnew, "mode", "%d", &v))
-		ntmp->ntm_mode = v;
+		ntmp->ntm_mode = v & ACCESSPERMS;
 	vfs_flagopt(mp->mnt_optnew,
 	    "caseins", &ntmp->ntm_flag, NTFS_MFLAG_CASEINS);
 	vfs_flagopt(mp->mnt_optnew,

==== //depot/projects/dtrace/src/sys/i386/i386/pmap.c#20 (text+ko) ====

@@ -75,7 +75,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.598 2007/11/13 23:00:24 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.599 2007/11/17 22:52:28 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -3030,6 +3030,37 @@
 }
 
 /*
+ *	pmap_page_wired_mappings:
+ *
+ *	Return the number of managed mappings to the given physical page
+ *	that are wired.
+ */
+int
+pmap_page_wired_mappings(vm_page_t m)
+{
+	pv_entry_t pv;
+	pt_entry_t *pte;
+	pmap_t pmap;
+	int count;
+
+	count = 0;
+	if ((m->flags & PG_FICTITIOUS) != 0)
+		return (count);
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+	sched_pin();
+	TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
+		pmap = PV_PMAP(pv);
+		PMAP_LOCK(pmap);
+		pte = pmap_pte_quick(pmap, pv->pv_va);
+		if ((*pte & PG_W) != 0)
+			count++;
+		PMAP_UNLOCK(pmap);
+	}
+	sched_unpin();
+	return (count);
+}
+
+/*
  * Remove all pages from specified address space
  * this aids process exit speeds.  Also, this code
  * is special cased for current process only, but

==== //depot/projects/dtrace/src/sys/ia64/ia64/pmap.c#11 (text+ko) ====

@@ -46,7 +46,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.192 2007/11/05 11:36:13 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.193 2007/11/17 22:52:29 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -1915,6 +1915,38 @@
 }
 
 /*
+ *	pmap_page_wired_mappings:
+ *
+ *	Return the number of managed mappings to the given physical page
+ *	that are wired.
+ */
+int
+pmap_page_wired_mappings(vm_page_t m)
+{
+	struct ia64_lpte *pte;
+	pmap_t oldpmap, pmap;
+	pv_entry_t pv;
+	int count;
+
+	count = 0;
+	if ((m->flags & PG_FICTITIOUS) != 0)
+		return (count);
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+	TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
+		pmap = pv->pv_pmap;
+		PMAP_LOCK(pmap);
+		oldpmap = pmap_switch(pmap);
+		pte = pmap_find_vhpt(pv->pv_va);
+		KASSERT(pte != NULL, ("pte"));
+		if (pmap_wired(pte))
+			count++;
+		pmap_switch(oldpmap);
+		PMAP_UNLOCK(pmap);
+	}
+	return (count);
+}
+
+/*
  * Remove all pages from specified address space
  * this aids process exit speeds.  Also, this code
  * is special cased for current process only, but

==== //depot/projects/dtrace/src/sys/netinet/ip_dummynet.c#8 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/ip_dummynet.c,v 1.112 2007/11/06 23:01:42 oleg Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/ip_dummynet.c,v 1.113 2007/11/17 21:54:56 oleg Exp $");
 
 #define	DUMMYNET_DEBUG
 
@@ -110,6 +110,7 @@
 /* Adjusted vs non-adjusted curr_time difference (ticks). */
 static long tick_diff;
 
+static int		io_fast;
 static unsigned long	io_pkt;
 static unsigned long	io_pkt_fast;
 static unsigned long	io_pkt_drop;
@@ -185,6 +186,8 @@
 SYSCTL_LONG(_net_inet_ip_dummynet, OID_AUTO, tick_lost,
     CTLFLAG_RD, &tick_lost, 0,
     "Number of ticks coalesced by dummynet taskqueue.");
+SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, io_fast,
+    CTLFLAG_RW, &io_fast, 0, "Enable fast dummynet io.");
 SYSCTL_ULONG(_net_inet_ip_dummynet, OID_AUTO, io_pkt,
     CTLFLAG_RD, &io_pkt, 0,
     "Number of packets passed to dummynet.");
@@ -967,7 +970,7 @@
 	q->hash_slot = i;
 	q->next = fs->rq[i];
 	q->S = q->F + 1;	/* hack - mark timestamp as invalid. */
-	q->numbytes = fs->pipe->bandwidth;
+	q->numbytes = io_fast ? fs->pipe->bandwidth : 0;
 	fs->rq[i] = q;
 	fs->rq_elements++;
 	return (q);
@@ -1325,7 +1328,7 @@
 		goto done;
 
 	if (q->q_time < curr_time)
-		q->numbytes = fs->pipe->bandwidth;
+		q->numbytes = io_fast ? fs->pipe->bandwidth : 0;
 	q->q_time = curr_time;
 
 	/*
@@ -1736,7 +1739,7 @@
 			/* Flush accumulated credit for all queues. */
 			for (i = 0; i <= pipe->fs.rq_size; i++)
 				for (q = pipe->fs.rq[i]; q; q = q->next)
-					q->numbytes = p->bandwidth;
+					q->numbytes = io_fast ? p->bandwidth : 0;
 
 		pipe->bandwidth = p->bandwidth;
 		pipe->numbytes = 0;		/* just in case... */

==== //depot/projects/dtrace/src/sys/powerpc/powerpc/mmu_if.m#7 (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/powerpc/powerpc/mmu_if.m,v 1.7 2006/12/05 04:01:52 grehan Exp $
+# $FreeBSD: src/sys/powerpc/powerpc/mmu_if.m,v 1.8 2007/11/17 22:52:29 alc Exp $
 #
 
 #include <sys/param.h>
@@ -431,6 +431,21 @@
 
 
 /**
+ * @brief Count the number of managed mappings to the given physical
+ * page that are wired.
+ *
+ * @param _pg		physical page
+ *
+ * @retval int		the number of wired, managed mappings to the
+ *			given physical page
+ */
+METHOD int page_wired_mappings {
+	mmu_t		_mmu;
+	vm_page_t	_pg;
+};
+
+
+/**
  * @brief Initialise a physical map data structure
  *
  * @param _pmap		physical map

==== //depot/projects/dtrace/src/sys/powerpc/powerpc/mmu_oea.c#11 (text+ko) ====

@@ -91,7 +91,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/mmu_oea.c,v 1.115 2006/12/20 01:10:21 grehan Exp $");
+__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/mmu_oea.c,v 1.116 2007/11/17 22:52:29 alc Exp $");
 
 /*
  * Manages physical address maps.
@@ -322,6 +322,7 @@
 boolean_t moea_ts_referenced(mmu_t, vm_page_t);
 vm_offset_t moea_map(mmu_t, vm_offset_t *, vm_offset_t, vm_offset_t, int);
 boolean_t moea_page_exists_quick(mmu_t, pmap_t, vm_page_t);
+int moea_page_wired_mappings(mmu_t, vm_page_t);
 void moea_pinit(mmu_t, pmap_t);
 void moea_pinit0(mmu_t, pmap_t);
 void moea_protect(mmu_t, pmap_t, vm_offset_t, vm_offset_t, vm_prot_t);
@@ -359,6 +360,7 @@
 	MMUMETHOD(mmu_ts_referenced,	moea_ts_referenced),
 	MMUMETHOD(mmu_map,     		moea_map),
 	MMUMETHOD(mmu_page_exists_quick,moea_page_exists_quick),
+	MMUMETHOD(mmu_page_wired_mappings,moea_page_wired_mappings),
 	MMUMETHOD(mmu_pinit,		moea_pinit),
 	MMUMETHOD(mmu_pinit0,		moea_pinit0),
 	MMUMETHOD(mmu_protect,		moea_protect),
@@ -1492,6 +1494,26 @@
 	return (FALSE);
 }
 
+/*
+ * Return the number of managed mappings to the given physical page
+ * that are wired.
+ */
+int
+moea_page_wired_mappings(mmu_t mmu, vm_page_t m)
+{
+	struct pvo_entry *pvo;
+	int count;
+
+	count = 0;
+	if (!moea_initialized || (m->flags & PG_FICTITIOUS) != 0)
+		return (count);
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+	LIST_FOREACH(pvo, vm_page_to_pvoh(m), pvo_vlink)
+		if ((pvo->pvo_vaddr & PVO_WIRED) != 0)
+			count++;
+	return (count);
+}
+
 static u_int	moea_vsidcontext;
 
 void

==== //depot/projects/dtrace/src/sys/powerpc/powerpc/pmap_dispatch.c#9 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/pmap_dispatch.c,v 1.10 2007/11/05 11:36:15 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/pmap_dispatch.c,v 1.11 2007/11/17 22:52:29 alc Exp $");
 
 /*
  * Dispatch MI pmap calls to the appropriate MMU implementation
@@ -194,6 +194,13 @@
 }
 
 int
+pmap_page_wired_mappings(vm_page_t m)
+{
+
+	return (MMU_PAGE_WIRED_MAPPINGS(mmu_obj, m));
+}
+
+int
 pmap_pinit(pmap_t pmap)
 {
 	MMU_PINIT(mmu_obj, pmap);

==== //depot/projects/dtrace/src/sys/sparc64/sparc64/pmap.c#13 (text+ko) ====

@@ -39,7 +39,7 @@
  * SUCH DAMAGE.
  *
  *      from:   @(#)pmap.c      7.7 (Berkeley)  5/12/91
- * $FreeBSD: src/sys/sparc64/sparc64/pmap.c,v 1.167 2007/11/05 11:36:15 kib Exp $
+ * $FreeBSD: src/sys/sparc64/sparc64/pmap.c,v 1.168 2007/11/17 22:52:29 alc Exp $
  */
 
 /*
@@ -1753,6 +1753,26 @@
 }
 
 /*
+ * Return the number of managed mappings to the given physical page
+ * that are wired.
+ */
+int
+pmap_page_wired_mappings(vm_page_t m)
+{
+	struct tte *tp;
+	int count;
+
+	count = 0;
+	if ((m->flags & PG_FICTITIOUS) != 0)
+		return (count);
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+	TAILQ_FOREACH(tp, &m->md.tte_list, tte_link)
+		if ((tp->tte_data & (TD_PV | TD_WIRED)) == (TD_PV | TD_WIRED))
+			count++;
+	return (count);
+}
+
+/*
  * Remove all pages from specified address space, this aids process exit
  * speeds.  This is much faster than pmap_remove n the case of running down
  * an entire address space.  Only works for the current pmap.

==== //depot/projects/dtrace/src/sys/sun4v/sun4v/pmap.c#25 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/sun4v/sun4v/pmap.c,v 1.40 2007/11/05 11:36:16 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/sun4v/sun4v/pmap.c,v 1.41 2007/11/17 22:52:29 alc Exp $");
 
 #include "opt_kstack_pages.h"
 #include "opt_msgbuf.h"
@@ -1669,6 +1669,34 @@
 	TAILQ_INIT(&m->md.pv_list);
 	m->md.pv_list_count = 0;
 }
+
+/*
+ * Return the number of managed mappings to the given physical page
+ * that are wired.
+ */
+int
+pmap_page_wired_mappings(vm_page_t m)
+{
+	pmap_t pmap;
+	pv_entry_t pv;
+	uint64_t tte_data;
+	int count;
+
+	count = 0;
+	if ((m->flags & PG_FICTITIOUS) != 0)
+		return (count);
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+	TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
+		pmap = pv->pv_pmap;
+		PMAP_LOCK(pmap);
+		tte_data = tte_hash_lookup(pmap->pm_hash, pv->pv_va);
+		if ((tte_data & VTD_WIRED) != 0)

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list