PERFORCE change 53057 for review

Peter Wemm peter at FreeBSD.org
Wed May 19 10:19:30 PDT 2004


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

Change 53057 by peter at peter_daintree on 2004/05/19 10:18:42

	IFC @53055

Affected files ...

.. //depot/projects/hammer/contrib/cvs/src/server.c#6 integrate
.. //depot/projects/hammer/etc/defaults/periodic.conf#9 integrate
.. //depot/projects/hammer/etc/periodic/weekly/400.status-pkg#3 integrate
.. //depot/projects/hammer/lib/libarchive/archive_read_support_format_tar.c#10 integrate
.. //depot/projects/hammer/lib/libarchive/tar.5#4 integrate
.. //depot/projects/hammer/lib/libc/gmon/Makefile.inc#6 integrate
.. //depot/projects/hammer/lib/libc/sys/mlock.2#4 integrate
.. //depot/projects/hammer/share/man/man4/ng_hole.4#2 integrate
.. //depot/projects/hammer/sys/alpha/include/profile.h#2 integrate
.. //depot/projects/hammer/sys/amd64/amd64/machdep.c#86 integrate
.. //depot/projects/hammer/sys/amd64/include/profile.h#16 integrate
.. //depot/projects/hammer/sys/arm/include/profile.h#2 integrate
.. //depot/projects/hammer/sys/i386/include/profile.h#8 integrate
.. //depot/projects/hammer/sys/ia64/include/profile.h#2 integrate
.. //depot/projects/hammer/sys/kern/link_elf.c#18 integrate
.. //depot/projects/hammer/sys/kern/uipc_socket2.c#15 integrate
.. //depot/projects/hammer/sys/netgraph/ng_hole.c#2 integrate
.. //depot/projects/hammer/sys/netgraph/ng_hole.h#3 integrate
.. //depot/projects/hammer/sys/pci/agp_sis.c#9 integrate
.. //depot/projects/hammer/sys/pci/if_sk.c#25 integrate
.. //depot/projects/hammer/sys/powerpc/include/profile.h#2 integrate
.. //depot/projects/hammer/sys/powerpc/powerpc/trap.c#7 integrate
.. //depot/projects/hammer/sys/sparc64/include/profile.h#2 integrate
.. //depot/projects/hammer/sys/sys/gmon.h#3 integrate
.. //depot/projects/hammer/usr.bin/bluetooth/bthost/bthost.1#2 integrate
.. //depot/projects/hammer/usr.bin/bluetooth/btsockstat/btsockstat.1#6 integrate
.. //depot/projects/hammer/usr.bin/colldef/colldef.1#7 integrate
.. //depot/projects/hammer/usr.bin/env/env.1#4 integrate
.. //depot/projects/hammer/usr.bin/fetch/fetch.1#8 integrate
.. //depot/projects/hammer/usr.bin/fetch/fetch.c#9 integrate
.. //depot/projects/hammer/usr.bin/find/find.1#9 integrate
.. //depot/projects/hammer/usr.bin/indent/indent.1#3 integrate
.. //depot/projects/hammer/usr.bin/locale/locale.1#4 integrate
.. //depot/projects/hammer/usr.bin/mail/mail.1#5 integrate
.. //depot/projects/hammer/usr.bin/make/make.1#10 integrate
.. //depot/projects/hammer/usr.bin/netstat/netstat.1#8 integrate
.. //depot/projects/hammer/usr.bin/pkill/pkill.1#2 integrate
.. //depot/projects/hammer/usr.bin/script/script.1#4 integrate
.. //depot/projects/hammer/usr.bin/su/su.1#6 integrate
.. //depot/projects/hammer/usr.bin/tar/bsdtar.c#6 integrate
.. //depot/projects/hammer/usr.bin/tar/write.c#7 integrate
.. //depot/projects/hammer/usr.bin/tftp/tftp.1#5 integrate
.. //depot/projects/hammer/usr.bin/vmstat/vmstat.8#6 integrate

Differences ...

==== //depot/projects/hammer/contrib/cvs/src/server.c#6 (text+ko) ====

@@ -9,7 +9,7 @@
    GNU General Public License for more details.  */
 
 /*
- * $FreeBSD: src/contrib/cvs/src/server.c,v 1.21 2004/04/15 01:17:27 peter Exp $
+ * $FreeBSD: src/contrib/cvs/src/server.c,v 1.22 2004/05/19 06:17:52 des Exp $
  */
 
 #include <assert.h>
@@ -1645,7 +1645,7 @@
 	    && strncmp (arg, name, cp - name) == 0)
 	{
 	    timefield = strchr (cp + 1, '/') + 1;
-	    if (*timefield != '=')
+	    if (*timefield == '/')
 	    {
 		cp = timefield + strlen (timefield);
 		cp[1] = '\0';
@@ -1689,7 +1689,7 @@
 	    && strncmp (arg, name, cp - name) == 0)
 	{
 	    timefield = strchr (cp + 1, '/') + 1;
-	    if (!(timefield[0] == 'M' && timefield[1] == '/'))
+	    if (*timefield == '/')
 	    {
 		cp = timefield + strlen (timefield);
 		cp[1] = '\0';

==== //depot/projects/hammer/etc/defaults/periodic.conf#9 (text+ko) ====

@@ -10,7 +10,7 @@
 # values set in this file.  This eases the upgrade path when defaults
 # are changed and new features are added.
 #
-# $FreeBSD: src/etc/defaults/periodic.conf,v 1.28 2004/04/20 13:44:57 darrenr Exp $
+# $FreeBSD: src/etc/defaults/periodic.conf,v 1.29 2004/05/19 09:18:07 joe Exp $
 #
 
 # What files override these defaults ?
@@ -204,6 +204,7 @@
 # 400.status-pkg
 weekly_status_pkg_enable="NO"				# Find out-of-date pkgs
 pkg_version=pkg_version					# Use this program
+pkg_version_index=/usr/ports/INDEX-5			# Use this index file
 
 # 999.local
 weekly_local="/etc/weekly.local"			# Local scripts

==== //depot/projects/hammer/etc/periodic/weekly/400.status-pkg#3 (text+ko) ====

@@ -1,6 +1,6 @@
 #!/bin/sh -
 #
-# $FreeBSD: src/etc/periodic/weekly/400.status-pkg,v 1.8 2002/09/25 03:01:42 brian Exp $
+# $FreeBSD: src/etc/periodic/weekly/400.status-pkg,v 1.9 2004/05/19 09:18:08 joe Exp $
 #
 
 # If there is a global system configuration file, suck it in.
@@ -16,7 +16,7 @@
 	echo ""
 	echo "Check for out of date packages:"
 
-	rc=$(${pkg_version:-pkg_version} -v |
+	rc=$(${pkg_version:-pkg_version} -v ${pkg_version_index} |
 	    sed -n -e 's/^\([^ ]*\)  *<  */  \1 /p' \
 		-e '/^[^ ]*-\([^ ]*\)  *\* *multiple versions.*[ ,]\1[,)].*/d' \
 		-e 's/^\([^ ]*\)  *\* *multiple versions.*\((.*\)/  \1 needs updating \2/p' \

==== //depot/projects/hammer/lib/libarchive/archive_read_support_format_tar.c#10 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_tar.c,v 1.12 2004/05/18 18:16:30 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_tar.c,v 1.13 2004/05/19 06:35:47 kientzle Exp $");
 
 #include <sys/stat.h>
 #include <errno.h>
@@ -593,21 +593,32 @@
 		 */
 		if (st->st_size > 0)
 			st->st_mode |= S_IFREG;
+
 		/*
-		 * A tricky point: Traditionally, tar programs have
+		 * A tricky point: Traditionally, tar readers have
 		 * ignored the size field when reading hardlink
-		 * entries.  As a result, some programs write non-zero
-		 * sizes, even though the body is empty and expect the
-		 * reader to ignore that.  POSIX.1-2001 broke this by
-		 * permitting hardlink entries to store valid bodies
-		 * in pax interchange format.  Since there is no hard
-		 * and fast way to distinguish pax interchange from
+		 * entries, and some writers put non-zero sizes even
+		 * though the body is empty.  POSIX.1-2001 broke with
+		 * this tradition by permitting hardlink entries to
+		 * store valid bodies in pax interchange format, but
+		 * not in ustar format.  Since there is no hard and
+		 * fast way to distinguish pax interchange from
 		 * earlier archives (the 'x' and 'g' entries are
 		 * optional, after all), we need a heuristic.  Here, I
 		 * use the bid function to test whether or not there's
-		 * a valid header following.
+		 * a valid header following.  Of course, if we know
+		 * this is pax interchange format, then we must obey
+		 * the size.
+		 *
+		 * This heuristic will only fail for a pax interchange
+		 * archive that is storing hardlink bodies, no pax
+		 * extended attribute entries have yet occurred, and
+		 * we encounter a hardlink entry for a file that is
+		 * itself an uncompressed tar archive.
 		 */
-		if (st->st_size > 0  &&  archive_read_format_tar_bid(a) > 50)
+		if (st->st_size > 0  &&
+		    a->archive_format != ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE  &&
+		    archive_read_format_tar_bid(a) > 50)
 			st->st_size = 0;
 		break;
 	case '2': /* Symlink */

==== //depot/projects/hammer/lib/libarchive/tar.5#4 (text+ko) ====

@@ -22,9 +22,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/lib/libarchive/tar.5,v 1.3 2004/03/23 03:14:01 kientzle Exp $
+.\" $FreeBSD: src/lib/libarchive/tar.5,v 1.4 2004/05/19 06:38:38 kientzle Exp $
 .\"
-.Dd October 1, 2003
+.Dd May 20, 2004
 .Dt TAR 5
 .Os
 .Sh NAME
@@ -68,10 +68,8 @@
 The original tar archive format has been extended many times to
 include additional information that various implementors found
 necessary.
-This section describes a variant that is compatible with
-most historic
-.Nm
-implementations.
+This section describes the variant implemented by the tar command
+included in Seventh Edition Unix.
 .Pp
 The header record for an old-style
 .Nm
@@ -85,22 +83,30 @@
 char size[12];
 char mtime[12];
 char checksum[8];
+char linkflag[1];
+char linkname[100];
 };
 .Ed
-The remaining bytes in the header record are filled with nulls.
+All unused bytes in the header record are filled with nulls.
 .Bl -tag -width indent
 .It Va name
 Pathname, stored as a null-terminated string.
-Some very early implementations only supported regular files.
-However, a common early convention added
+The Unix V7 tar command only stored regular files (including
+hardlinks to those files).
+One common early convention added
 a trailing "/" character to indicate a directory name, allowing
 directory permissions and owner information to be archived and restored.
 .It Va mode
 File mode, stored as an octal number in ASCII.
 .It Va uid , Va gid
-User id and group id of owner, as octal number in ASCII.
+User id and group id of owner, as octal numbers in ASCII.
 .It Va size
 Size of file, as octal number in ASCII.
+For regular files only, this indicates the amount of data
+that follows the header.
+In particular, this field was ignored by early tar implementations
+when extracting hardlinks.
+Modern writers should always store a zero length for hardlink entries.
 .It Va mtime
 Modification time of file, as an octal number in ASCII.
 This indicates the number of seconds since the start of the epoch,
@@ -113,72 +119,41 @@
 then sum all bytes in the header using unsigned arithmetic.
 This field should be stored as six octal digits followed by a null and a space
 character.
-Note that for many years, Sun tar used signed arithmetic
+Note that many early implementations of tar used signed arithmetic
 for the checksum field, which can cause interoperability problems
 when transferring archives between systems.
-This error was propagated to other implementations that used Sun
-tar as a reference.
 Modern robust readers compute the checksum both ways and accept the
 header if either computation matches.
+.It Va linkflag , Va linkname
+In order to preserve hardlinks and conserve tape, a file
+with multiple links is only written to the archive the first
+time it is encountered.
+The next time it is encountered, the
+.Va linkflag
+is set to an ASCII
+.Sq 1
+and the
+.Va linkname
+field holds the first name under which this file appears.
+(Note that regular files have a null value in the
+.Va linkflag
+field.)
 .El
 .Pp
 Early implementations of
 .Nm
 varied in how they terminated these fields.
-Early BSD documentation specified the following: the pathname must
-be null-terminated; the mode, uid, and gid fields must end in a space and a
-null byte; the size and mtime fields must end in a space; the checksum is
-terminated by a null and a space.
+The
+.Nm
+command in Seventh Edition Unix used the following conventions
+(this is also documented in early BSD manpages):
+the pathname must be null-terminated;
+the mode, uid, and gid fields must end in a space and a null byte;
+the size and mtime fields must end in a space;
+the checksum is terminated by a null and a space.
 For best portability, writers of
 .Nm
 archives should fill the numeric fields with leading zeros.
-.Ss Early Extensions
-Very early
-.Nm
-implementations only supported regular files.
-Two early extensions added support for directories, hard links, and
-symbolic links.
-.Pp
-Early
-.Nm
-archives indicated directories by adding a trailing
-.Pa /
-to the name.
-The size field was often used to indicate the total size of all files
-in the directory.
-This was intended to facilitate extraction on systems that pre-allocated
-directory storage; most modern readers should simply ignore the
-size field for directories.
-.Pp
-To support hard links and symbolic links,
-.Va linktype
-and
-.Va linkname
-fields were added:
-.Bd -literal -offset indent
-struct tarfile_entry_common {
-char name[100];
-char mode[8];
-char uid[8];
-char gid[8];
-char size[12];
-char mtime[12];
-char checksum[8];
-char linktype[1];
-char linkname[100];
-};
-.Ed
-.Pp
-The
-.Va linktype
-field indicates the type of entry.
-For backwards compatibility, a NULL
-character here indicates a regular file or directory.
-An ASCII "1" here indicates a hard link entry, ASCII "2" indicates
-a symbolic link.
-The
-.Va linkname
-field holds the name of the file linked to.
 .Ss POSIX Standard Archives
 POSIX 1003.1 defines a standard
 .Nm
@@ -216,12 +191,13 @@
 .Ed
 .Bl -tag -width indent
 .It Va typeflag
-Type of entry.  POSIX adopted the BSD
-.Va linktype
-field and extended it with several new type values:
+Type of entry.  POSIX extended the earlier
+.Va linkflag
+field with several new type values:
 .Bl -tag -width indent -compact
 .It Dq 0
-Regular file. NULL should be treated as a synonym, for compatibility purposes.
+Regular file.
+NULL should be treated as a synonym, for compatibility purposes.
 .It Dq 1
 Hard link.
 .It Dq 2
@@ -245,6 +221,16 @@
 Uppercase letters "A" through "Z" are reserved for custom extensions.
 Note that sockets and whiteout entries are not archivable.
 .El
+It is worth noting that the
+.Va size
+field, in particular, has different meanings depending on the type.
+For regular files, of course, it indicates the amount of data
+following the header.
+For directories, it may be used to indicate the total size of all
+files in the directory, for use by operating systems that pre-allocate
+directory space.
+For all other types, it should be set to zero by writers and ignored
+by readers.
 .It Va magic
 Contains the magic value
 .Dq ustar
@@ -407,15 +393,28 @@
 The
 .Cm g
 entry is not widely used.
+.Pp
+Besides the new
+.Cm x
+and
+.Cm g
+entries, the pax interchange format has a few other minor variations
+from the earlier ustar format.
+The most troubling one is that hardlinks are permitted to have
+data following them.
+This allows readers to restore any hardlink to a file without
+having to rewind the archive to find an earlier entry.
+However, it creates complications for robust readers, as it is
+no longer clear whether or not they should ignore the size
+field for hardlink entries.
 .Ss GNU Tar Archives
-The GNU tar program added new features by starting with an early draft
-of POSIX and using three different extension mechanisms:  They added
-new fields to the empty space in the header (some of which was later
+The GNU tar program has used a variety of different extension
+mechanisms over the years:
+They added new fields to the empty space in the header (some of which was later
 used by POSIX for conflicting purposes);
-they allowed the header to
-be continued over multiple records;
-and they defined new entries
-that modify following entries (similar in principle to the
+they allowed the header to be continued over multiple records;
+and they defined new entries that modify following entries
+(similar in principle to the
 .Cm x
 entry described above, but each GNU special entry is single-purpose,
 unlike the general-purpose
@@ -456,7 +455,8 @@
 .Ed
 .Bl -tag -width indent
 .It Va typeflag
-GNU tar uses the following special entry types.
+GNU tar uses the following special entry types, in addition to
+those defined by POSIX:
 .Bl -tag -width indent
 .It "7"
 GNU tar treats type "7" records identically to type "0" records,
@@ -634,8 +634,10 @@
 .Sh STANDARDS
 The
 .Nm tar
-utility is no longer a part of any official standard.
-It last appeared in SUSv2.
+utility is no longer a part of POSIX or the Single Unix Standard.
+It last appeared in
+.St -p 1003.1-1997
+(SUSv2).
 It has been supplanted in subsequent standards by
 .Xr pax 1 .
 The ustar format is defined in
@@ -648,7 +650,7 @@
 .Sh HISTORY
 A
 .Nm tar
-command appeared in Sixth Edition Unix.
+command appeared in Seventh Edition Unix, which was released in January, 1979.
 John Gilmore's
 .Nm pdtar
 public-domain implementation (circa 1987) was highly influential

==== //depot/projects/hammer/lib/libc/gmon/Makefile.inc#6 (text+ko) ====

@@ -1,5 +1,5 @@
 #	from @(#)Makefile.inc	8.1 (Berkeley) 6/4/93
-# $FreeBSD: src/lib/libc/gmon/Makefile.inc,v 1.9 2002/11/18 09:50:55 ru Exp $
+# $FreeBSD: src/lib/libc/gmon/Makefile.inc,v 1.10 2004/05/18 22:49:15 peter Exp $
 
 # gmon sources
 .PATH: ${.CURDIR}/gmon

==== //depot/projects/hammer/lib/libc/sys/mlock.2#4 (text+ko) ====

@@ -30,7 +30,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"	@(#)mlock.2	8.2 (Berkeley) 12/11/93
-.\" $FreeBSD: src/lib/libc/sys/mlock.2,v 1.14 2002/12/19 09:40:25 ru Exp $
+.\" $FreeBSD: src/lib/libc/sys/mlock.2,v 1.15 2004/05/19 03:25:17 alc Exp $
 .\"
 .Dd June 2, 1993
 .Dt MLOCK 2
@@ -148,16 +148,6 @@
 .Xr setrlimit 2 ,
 .Xr getpagesize 3
 .Sh BUGS
-Unlike The Sun implementation, multiple
-.Fn mlock
-calls on the same address range require the corresponding number of
-.Fn munlock
-calls to actually unlock the pages, i.e.\&
-.Fn mlock
-nests.
-This should be considered a consequence of the implementation
-and not a feature.
-.Pp
 The per-process resource limit is a limit on the amount of virtual
 memory locked, while the system-wide limit is for the number of locked
 physical pages.

==== //depot/projects/hammer/share/man/man4/ng_hole.4#2 (text+ko) ====

@@ -32,10 +32,10 @@
 .\"
 .\" Author: Archie Cobbs <archie at FreeBSD.org>
 .\"
-.\" $FreeBSD: src/share/man/man4/ng_hole.4,v 1.10 2001/10/01 16:09:21 ru Exp $
+.\" $FreeBSD: src/share/man/man4/ng_hole.4,v 1.11 2004/05/19 11:26:33 ru Exp $
 .\" $Whistle: ng_hole.8,v 1.4 1999/01/25 23:46:26 archie Exp $
 .\"
-.Dd January 19, 1999
+.Dd May 19, 2004
 .Dt NG_HOLE 4
 .Os
 .Sh NAME
@@ -54,8 +54,25 @@
 node accepts any request to connect, regardless of the hook name,
 as long as the name is unique.
 .Sh CONTROL MESSAGES
-This node type supports only the generic control messages.
-Other control messages are silently discarded.
+This node type supports the generic control messages, plus the
+following:
+.Bl -tag -width indent
+.It Dv NGM_BPF_GET_STATS
+This command takes an
+.Tn ASCII
+string argument, the hook name, and returns the statistics
+associated with the hook as a
+.Vt "struct ng_hole_hookstat" .
+.It Dv NGM_BPF_CLR_STATS
+This command takes an
+.Tn ASCII
+string argument, the hook name, and clears the statistics
+associated with the hook.
+.It Dv NGM_BPF_GETCLR_STATS
+This command is identical to
+.Dv NGM_BPF_GET_STATS ,
+except that the statistics are also atomically cleared.
+.El
 .Sh SHUTDOWN
 This node shuts down upon receipt of a
 .Dv NGM_SHUTDOWN

==== //depot/projects/hammer/sys/alpha/include/profile.h#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/alpha/include/profile.h,v 1.5 2002/03/20 18:58:45 obrien Exp $ */
+/* $FreeBSD: src/sys/alpha/include/profile.h,v 1.6 2004/05/19 15:41:25 bde Exp $ */
 /* From: NetBSD: profile.h,v 1.9 1997/04/06 08:47:37 cgd Exp */
 
 /*
@@ -220,18 +220,6 @@
 #define MCOUNT_EXIT(s) \
 	(void)_alpha_pal_swpipl(s);
 #define	MCOUNT_DECL(s)	u_long s;
-#ifdef GUPROF
-struct gmonparam;
-
-void	nullfunc_loop_profiled(void);
-void	nullfunc_profiled(void);
-void	startguprof(struct gmonparam *p);
-void	stopguprof(struct gmonparam *p);
-#else
-#define startguprof(p)
-#define stopguprof(p)
-#endif /* GUPROF */
-
 #else /* !_KERNEL */
 typedef u_long	uintfptr_t;
 #endif

==== //depot/projects/hammer/sys/amd64/amd64/machdep.c#86 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.606 2004/05/18 05:30:06 bde Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.607 2004/05/19 01:23:48 peter Exp $");
 
 #include "opt_atalk.h"
 #include "opt_atpic.h"
@@ -1138,8 +1138,10 @@
 		kmdp = preload_search_by_type("elf64 kernel");
 	boothowto = MD_FETCH(kmdp, MODINFOMD_HOWTO, int);
 	kern_envp = MD_FETCH(kmdp, MODINFOMD_ENVP, char *) + KERNBASE;
+#ifdef DDB
 	ksym_start = MD_FETCH(kmdp, MODINFOMD_SSYM, void *);
 	ksym_end = MD_FETCH(kmdp, MODINFOMD_ESYM, void *);
+#endif
 
 	/* Init basic tunables, hz etc */
 	init_param1();

==== //depot/projects/hammer/sys/amd64/include/profile.h#16 (text+ko) ====

@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)profile.h	8.1 (Berkeley) 6/11/93
- * $FreeBSD: src/sys/amd64/include/profile.h,v 1.35 2004/05/18 22:52:32 peter Exp $
+ * $FreeBSD: src/sys/amd64/include/profile.h,v 1.38 2004/05/19 16:19:11 bde Exp $
  */
 
 #ifndef _MACHINE_PROFILE_H_
@@ -50,13 +50,9 @@
 #define	MCOUNT
 
 #ifdef GUPROF
-#define	CALIB_SCALE	1000
-#define	KCOUNT(p,index)	((p)->kcount[(index) \
-			 / (HISTFRACTION * sizeof(HISTCOUNTER))])
 #define	MCOUNT_DECL(s)
 #define	MCOUNT_ENTER(s)
 #define	MCOUNT_EXIT(s)
-#define	PC_TO_I(p, pc)	((uintfptr_t)(pc) - (uintfptr_t)(p)->lowpc)
 #else
 #define	MCOUNT_DECL(s)	u_long s;
 #ifdef SMP
@@ -81,12 +77,12 @@
 static void _mcount
 
 #ifdef	__GNUC__
-#define	MCOUNT __asm ("			\n\
+#define	MCOUNT __asm("			\n\
 	.globl	.mcount			\n\
 	.type	.mcount @function	\n\
 .mcount:				\n\
 	pushq	%rbp			\n\
-	movq	%rsp, %rbp		\n\
+	movq	%rsp,%rbp		\n\
 	pushq	%rdi			\n\
 	pushq	%rsi			\n\
 	pushq	%rdx			\n\
@@ -127,7 +123,7 @@
 	__asm("movq 8(%%rbp),%0" : "=r" (selfpc));			\
 	/*								\
 	 * frompc = pc pushed by call to mcount's caller.		\
-	 * The caller's stack frame has already been built, so %ebp is	\
+	 * The caller's stack frame has already been built, so %rbp is	\
 	 * the caller's frame pointer.  The caller's raddr is in the	\
 	 * caller's frame following the caller's caller's frame pointer.\
 	 */								\
@@ -136,15 +132,15 @@
 	_mcount(frompc, selfpc);					\
 }
 #endif
-#else	/* __GNUC__ */
-#define	MCOUNT		\
-void			\
-mcount()		\
-{			\
+#else /* !__GNUC__ */
+#define	MCOUNT								\
+void									\
+mcount()								\
+{									\
 }
-#endif	/* __GNUC__ */
+#endif /* __GNUC__ */
 
-typedef	unsigned long	uintfptr_t;
+typedef	u_long	uintfptr_t;
 
 #endif /* _KERNEL */
 
@@ -152,24 +148,11 @@
  * An unsigned integral type that can hold non-negative difference between
  * function pointers.
  */
-typedef	u_int	fptrdiff_t;
+typedef	u_long	fptrdiff_t;
 
 #ifdef _KERNEL
 
 void	mcount(uintfptr_t frompc, uintfptr_t selfpc);
-void	kmupetext(uintfptr_t nhighpc);
-
-#ifdef GUPROF
-struct gmonparam;
-
-void	nullfunc_loop_profiled(void);
-void	nullfunc_profiled(void);
-void	startguprof(struct gmonparam *p);
-void	stopguprof(struct gmonparam *p);
-#else
-#define	startguprof(p)
-#define	stopguprof(p)
-#endif /* GUPROF */
 
 #else /* !_KERNEL */
 
@@ -183,17 +166,4 @@
 
 #endif /* _KERNEL */
 
-#ifdef GUPROF
-/* XXX doesn't quite work outside kernel yet. */
-extern int	cputime_bias;
-
-__BEGIN_DECLS
-int	cputime(void);
-void	empty_loop(void);
-void	mexitcount(uintfptr_t selfpc);
-void	nullfunc(void);
-void	nullfunc_loop(void);
-__END_DECLS
-#endif
-
 #endif /* !_MACHINE_PROFILE_H_ */

==== //depot/projects/hammer/sys/arm/include/profile.h#2 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)profile.h	8.1 (Berkeley) 6/11/93
- * $FreeBSD: src/sys/arm/include/profile.h,v 1.1 2004/05/14 11:46:44 cognet Exp $
+ * $FreeBSD: src/sys/arm/include/profile.h,v 1.2 2004/05/19 15:41:25 bde Exp $
  */
 
 #ifndef _MACHINE_PROFILE_H_
@@ -54,13 +54,9 @@
 #define	MCOUNT
 
 #ifdef GUPROF
-#define	CALIB_SCALE	1000
-#define	KCOUNT(p,index)	((p)->kcount[(index) \
-			 / (HISTFRACTION * sizeof(HISTCOUNTER))])
 #define	MCOUNT_DECL(s)
 #define	MCOUNT_ENTER(s)
 #define	MCOUNT_EXIT(s)
-#define	PC_TO_I(p, pc)	((uintfptr_t)(pc) - (uintfptr_t)(p)->lowpc)
 #else
 #define	MCOUNT_DECL(s)	u_long s;
 #ifdef SMP
@@ -97,19 +93,6 @@
 #ifdef _KERNEL
 
 void	mcount(uintfptr_t frompc, uintfptr_t selfpc);
-void	kmupetext(uintfptr_t nhighpc);
-
-#ifdef GUPROF
-struct gmonparam;
-
-void	nullfunc_loop_profiled(void);
-void	nullfunc_profiled(void);
-void	startguprof(struct gmonparam *p);
-void	stopguprof(struct gmonparam *p);
-#else
-#define	startguprof(p)
-#define	stopguprof(p)
-#endif /* GUPROF */
 
 #else /* !_KERNEL */
 
@@ -123,17 +106,4 @@
 
 #endif /* _KERNEL */
 
-#ifdef GUPROF
-/* XXX doesn't quite work outside kernel yet. */
-extern int	cputime_bias;
-
-__BEGIN_DECLS
-int	cputime(void);
-void	empty_loop(void);
-void	mexitcount(uintfptr_t selfpc);
-void	nullfunc(void);
-void	nullfunc_loop(void);
-__END_DECLS
-#endif
-
 #endif /* !_MACHINE_PROFILE_H_ */

==== //depot/projects/hammer/sys/i386/include/profile.h#8 (text+ko) ====

@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)profile.h	8.1 (Berkeley) 6/11/93
- * $FreeBSD: src/sys/i386/include/profile.h,v 1.34 2004/04/07 20:46:05 imp Exp $
+ * $FreeBSD: src/sys/i386/include/profile.h,v 1.36 2004/05/19 16:04:26 bde Exp $
  */
 
 #ifndef _MACHINE_PROFILE_H_
@@ -50,13 +50,9 @@
 #define	MCOUNT
 
 #ifdef GUPROF
-#define	CALIB_SCALE	1000
-#define	KCOUNT(p,index)	((p)->kcount[(index) \
-			 / (HISTFRACTION * sizeof(HISTCOUNTER))])
 #define	MCOUNT_DECL(s)
 #define	MCOUNT_ENTER(s)
 #define	MCOUNT_EXIT(s)
-#define	PC_TO_I(p, pc)	((uintfptr_t)(pc) - (uintfptr_t)(p)->lowpc)
 #else
 #define	MCOUNT_DECL(s)	u_long s;
 #ifdef SMP
@@ -97,19 +93,19 @@
 	 * the caller's frame pointer.  The caller's raddr is in the	\
 	 * caller's frame following the caller's caller's frame pointer.\
 	 */								\
-	__asm("movl (%%ebp),%0" : "=r" (frompc));				\
+	__asm("movl (%%ebp),%0" : "=r" (frompc));			\
 	frompc = ((uintfptr_t *)frompc)[1];				\
 	_mcount(frompc, selfpc);					\
 }
-#else	/* !(__GNUC__ || __INTEL_COMPILER) */
-#define	MCOUNT		\
-void			\
-mcount()		\
-{			\
+#else /* !(__GNUC__ || __INTEL_COMPILER) */
+void									\
+#define	MCOUNT								\
+mcount()								\
+{									\
 }
-#endif	/* __GNUC__ || __INTEL_COMPILER */
+#endif /* __GNUC__ || __INTEL_COMPILER */
 
-typedef	unsigned int	uintfptr_t;
+typedef	u_int	uintfptr_t;
 
 #endif /* _KERNEL */
 
@@ -122,19 +118,6 @@
 #ifdef _KERNEL
 
 void	mcount(uintfptr_t frompc, uintfptr_t selfpc);
-void	kmupetext(uintfptr_t nhighpc);
-
-#ifdef GUPROF
-struct gmonparam;
-
-void	nullfunc_loop_profiled(void);
-void	nullfunc_profiled(void);
-void	startguprof(struct gmonparam *p);
-void	stopguprof(struct gmonparam *p);
-#else
-#define	startguprof(p)
-#define	stopguprof(p)
-#endif /* GUPROF */
 
 #else /* !_KERNEL */
 
@@ -148,17 +131,4 @@
 
 #endif /* _KERNEL */
 
-#ifdef GUPROF
-/* XXX doesn't quite work outside kernel yet. */
-extern int	cputime_bias;
-
-__BEGIN_DECLS
-int	cputime(void);
-void	empty_loop(void);
-void	mexitcount(uintfptr_t selfpc);
-void	nullfunc(void);
-void	nullfunc_loop(void);
-__END_DECLS
-#endif
-
 #endif /* !_MACHINE_PROFILE_H_ */

==== //depot/projects/hammer/sys/ia64/include/profile.h#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/ia64/include/profile.h,v 1.7 2002/03/21 09:50:11 dfr Exp $ */
+/* $FreeBSD: src/sys/ia64/include/profile.h,v 1.8 2004/05/19 15:41:25 bde Exp $ */
 /* From: NetBSD: profile.h,v 1.9 1997/04/06 08:47:37 cgd Exp */
 
 /*
@@ -104,18 +104,6 @@
 #define MCOUNT_EXIT(s) \n\
 	intr_restore(_c)
 #define	MCOUNT_DECL(s)	register_t c;
-#ifdef GUPROF
-struct gmonparam;
-
-void	nullfunc_loop_profiled(void);
-void	nullfunc_profiled(void);
-void	startguprof(struct gmonparam *p);
-void	stopguprof(struct gmonparam *p);
-#else
-#define startguprof(p)
-#define stopguprof(p)
-#endif /* GUPROF */
-
 #else /* !_KERNEL */
 typedef u_long	uintfptr_t;
 #endif

==== //depot/projects/hammer/sys/kern/link_elf.c#18 (text+ko) ====

@@ -25,13 +25,16 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/link_elf.c,v 1.77 2004/05/16 20:00:28 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/link_elf.c,v 1.78 2004/05/19 14:36:38 bde Exp $");
 
 #include "opt_ddb.h"
 #include "opt_mac.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
+#ifdef GPROF
+#include <sys/gmon.h>
+#endif
 #include <sys/kernel.h>
 #include <sys/lock.h>
 #include <sys/mac.h>
@@ -44,9 +47,6 @@
 #include <sys/linker.h>
 
 #include <machine/elf.h>
-#ifdef GPROF
-#include <machine/profile.h>
-#endif
 
 #include <vm/vm.h>
 #include <vm/vm_param.h>

==== //depot/projects/hammer/sys/kern/uipc_socket2.c#15 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_socket2.c,v 1.123 2004/04/05 21:03:36 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_socket2.c,v 1.124 2004/05/19 00:22:10 ps Exp $");
 
 #include "opt_mac.h"
 #include "opt_param.h"
@@ -223,7 +223,7 @@
 	}
 	if (connstatus) {
 		sorwakeup(head);
-		wakeup(&head->so_timeo);
+		wakeup_one(&head->so_timeo);
 		so->so_state |= connstatus;
 	}
 	return (so);

==== //depot/projects/hammer/sys/netgraph/ng_hole.c#2 (text+ko) ====

@@ -36,7 +36,7 @@
  *
  * Author: Julian Elisher <julian at freebsd.org>
  *
- * $FreeBSD: src/sys/netgraph/ng_hole.c,v 1.10 2001/01/08 05:34:06 julian Exp $
+ * $FreeBSD: src/sys/netgraph/ng_hole.c,v 1.11 2004/05/19 11:26:33 ru Exp $
  * $Whistle: ng_hole.c,v 1.10 1999/11/01 09:24:51 julian Exp $
  */
 
@@ -51,10 +51,53 @@
 #include <sys/mbuf.h>
 #include <netgraph/ng_message.h>
 #include <netgraph/netgraph.h>
+#include <netgraph/ng_parse.h>
 #include <netgraph/ng_hole.h>
 
+/* Per hook private info. */
+struct ng_hole_hookinfo {
+	struct ng_hole_hookstat	stats;
+};
+typedef struct ng_hole_hookinfo *hinfo_p;
+
+/* Parse type for struct ng_hole_hookstat. */
+static const struct ng_parse_struct_field ng_hole_hookstat_type_fields[] =
+	NG_HOLE_HOOKSTAT_TYPE_INFO;
+static const struct ng_parse_type ng_hole_hookstat_type = {
+	&ng_parse_struct_type,
+	&ng_hole_hookstat_type_fields
+};
+
+/* List of commands and how to convert arguments to/from ASCII. */
+static const struct ng_cmdlist ng_hole_cmdlist[] = {
+	{
+	  NGM_HOLE_COOKIE,
+	  NGM_HOLE_GET_STATS,
+	  "getstats",
+	  &ng_parse_hookbuf_type,
+	  &ng_hole_hookstat_type
+	},
+	{
+	  NGM_HOLE_COOKIE,
+	  NGM_HOLE_CLR_STATS,
+	  "clrstats",
+	  &ng_parse_hookbuf_type,
+	  NULL
+	},
+	{
+	  NGM_HOLE_COOKIE,
+	  NGM_HOLE_GETCLR_STATS,
+	  "getclrstats",
+	  &ng_parse_hookbuf_type,
+	  &ng_hole_hookstat_type
+	},
+	{ 0 }
+};
+
 /* Netgraph methods */
 static ng_constructor_t	ngh_cons;
+static ng_rcvmsg_t	ngh_rcvmsg;
+static ng_newhook_t	ngh_newhook;
 static ng_rcvdata_t	ngh_rcvdata;
 static ng_disconnect_t	ngh_disconnect;
 
@@ -63,14 +106,14 @@
 	NG_HOLE_NODE_TYPE,
 	NULL,		/* modeventhand_t */
 	ngh_cons,	/* ng_constructor_t */
-	NULL,		/* ng_rcvmsg_t */
+	ngh_rcvmsg,	/* ng_rcvmsg_t */
 	NULL,		/* ng_shutdown_t */
-	NULL,		/* ng_newhook_t */
+	ngh_newhook,	/* ng_newhook_t */
 	NULL,		/* ng_findhook_t */

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


More information about the p4-projects mailing list