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