Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Oct 2008 07:48:34 GMT
From:      Ed Schouten <ed@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 150837 for review
Message-ID:  <200810030748.m937mYs9056560@repoman.freebsd.org>

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

Change 150837 by ed@ed_dull on 2008/10/03 07:48:09

	IFC.

Affected files ...

.. //depot/projects/mpsafetty/gnu/usr.bin/gdb/kgdb/kld.c#3 integrate
.. //depot/projects/mpsafetty/lib/libpmc/pmc.k8.3#2 integrate
.. //depot/projects/mpsafetty/sbin/ifconfig/ifvlan.c#3 integrate
.. //depot/projects/mpsafetty/share/man/man4/ng_tty.4#2 integrate
.. //depot/projects/mpsafetty/sys/arm/xscale/ixp425/avila_machdep.c#3 integrate
.. //depot/projects/mpsafetty/sys/compat/linprocfs/linprocfs.c#6 integrate
.. //depot/projects/mpsafetty/sys/compat/linux/linux_ioctl.c#8 integrate
.. //depot/projects/mpsafetty/sys/compat/linux/linux_misc.c#7 integrate
.. //depot/projects/mpsafetty/sys/compat/linux/linux_socket.c#4 integrate
.. //depot/projects/mpsafetty/sys/compat/svr4/svr4_sockio.c#4 integrate
.. //depot/projects/mpsafetty/sys/conf/kmod.mk#2 integrate
.. //depot/projects/mpsafetty/sys/contrib/ipfilter/netinet/ip_auth.c#2 integrate
.. //depot/projects/mpsafetty/sys/contrib/pf/net/pf.c#4 integrate
.. //depot/projects/mpsafetty/sys/contrib/pf/net/pf_if.c#3 integrate
.. //depot/projects/mpsafetty/sys/contrib/pf/net/pf_ioctl.c#5 integrate
.. //depot/projects/mpsafetty/sys/contrib/pf/net/pf_subr.c#3 integrate
.. //depot/projects/mpsafetty/sys/contrib/pf/net/pfvar.h#2 integrate
.. //depot/projects/mpsafetty/sys/contrib/rdma/rdma_cma.c#3 integrate
.. //depot/projects/mpsafetty/sys/dev/agp/agp_i810.c#3 integrate
.. //depot/projects/mpsafetty/sys/dev/agp/agpreg.h#2 integrate
.. //depot/projects/mpsafetty/sys/dev/ata/ata-chipset.c#8 integrate
.. //depot/projects/mpsafetty/sys/dev/ata/ata-pci.h#7 integrate
.. //depot/projects/mpsafetty/sys/dev/cxgb/cxgb_sge.c#9 integrate
.. //depot/projects/mpsafetty/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c#4 integrate
.. //depot/projects/mpsafetty/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#9 integrate
.. //depot/projects/mpsafetty/sys/dev/firewire/firewire.c#3 integrate
.. //depot/projects/mpsafetty/sys/dev/nfe/if_nfe.c#3 integrate
.. //depot/projects/mpsafetty/sys/dev/nfe/if_nfereg.h#3 integrate
.. //depot/projects/mpsafetty/sys/dev/nfe/if_nfevar.h#2 integrate
.. //depot/projects/mpsafetty/sys/dev/pccbb/pccbb_pci.c#3 integrate
.. //depot/projects/mpsafetty/sys/fs/cd9660/cd9660_rrip.c#3 integrate
.. //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum_drive.c#4 integrate
.. //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum_rm.c#2 integrate
.. //depot/projects/mpsafetty/sys/kern/kern_jail.c#3 integrate
.. //depot/projects/mpsafetty/sys/kern/kern_mib.c#4 integrate
.. //depot/projects/mpsafetty/sys/kern/kern_uuid.c#3 integrate
.. //depot/projects/mpsafetty/sys/kern/kern_xxx.c#3 integrate
.. //depot/projects/mpsafetty/sys/net/bridgestp.c#3 integrate
.. //depot/projects/mpsafetty/sys/net/if.c#7 integrate
.. //depot/projects/mpsafetty/sys/net/if_bridge.c#5 integrate
.. //depot/projects/mpsafetty/sys/net/if_ef.c#3 integrate
.. //depot/projects/mpsafetty/sys/net/if_ethersubr.c#4 integrate
.. //depot/projects/mpsafetty/sys/net/if_faith.c#3 integrate
.. //depot/projects/mpsafetty/sys/net/if_gif.c#3 integrate
.. //depot/projects/mpsafetty/sys/net/if_gif.h#2 integrate
.. //depot/projects/mpsafetty/sys/net/if_gre.c#3 integrate
.. //depot/projects/mpsafetty/sys/net/if_loop.c#4 integrate
.. //depot/projects/mpsafetty/sys/net/if_mib.c#4 integrate
.. //depot/projects/mpsafetty/sys/net/if_spppsubr.c#4 integrate
.. //depot/projects/mpsafetty/sys/net/if_stf.c#4 integrate
.. //depot/projects/mpsafetty/sys/net/if_tun.c#4 integrate
.. //depot/projects/mpsafetty/sys/net/if_var.h#3 integrate
.. //depot/projects/mpsafetty/sys/net/if_vlan.c#5 integrate
.. //depot/projects/mpsafetty/sys/net/raw_cb.c#4 integrate
.. //depot/projects/mpsafetty/sys/net/raw_usrreq.c#4 integrate
.. //depot/projects/mpsafetty/sys/net/route.c#7 integrate
.. //depot/projects/mpsafetty/sys/net/rtsock.c#4 integrate
.. //depot/projects/mpsafetty/sys/net/vnet.h#1 branch
.. //depot/projects/mpsafetty/sys/net80211/ieee80211_ddb.c#6 integrate
.. //depot/projects/mpsafetty/sys/netgraph/atm/ng_atm.c#3 integrate
.. //depot/projects/mpsafetty/sys/netgraph/netgraph.h#3 integrate
.. //depot/projects/mpsafetty/sys/netgraph/ng_base.c#6 integrate
.. //depot/projects/mpsafetty/sys/netgraph/ng_eiface.c#3 integrate
.. //depot/projects/mpsafetty/sys/netgraph/ng_gif.c#3 integrate
.. //depot/projects/mpsafetty/sys/netgraph/ng_iface.c#5 integrate
.. //depot/projects/mpsafetty/sys/netgraph/ng_tty.c#9 integrate
.. //depot/projects/mpsafetty/sys/netgraph/ng_tty.h#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/if_ether.c#7 integrate
.. //depot/projects/mpsafetty/sys/netinet/igmp.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/in.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/in.h#2 integrate
.. //depot/projects/mpsafetty/sys/netinet/in_gif.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/in_mcast.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/in_pcb.c#8 integrate
.. //depot/projects/mpsafetty/sys/netinet/in_rmx.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip6.h#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip_carp.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip_divert.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip_fastfwd.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip_fw.h#5 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip_fw2.c#10 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip_fw_nat.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip_icmp.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip_input.c#6 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip_ipsec.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip_mroute.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet/ip_options.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet/raw_ip.c#7 integrate
.. //depot/projects/mpsafetty/sys/netinet/tcp_hostcache.c#6 integrate
.. //depot/projects/mpsafetty/sys/netinet/tcp_input.c#8 integrate
.. //depot/projects/mpsafetty/sys/netinet/tcp_offload.c#5 integrate
.. //depot/projects/mpsafetty/sys/netinet/tcp_output.c#7 integrate
.. //depot/projects/mpsafetty/sys/netinet/tcp_reass.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/tcp_sack.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/tcp_subr.c#6 integrate
.. //depot/projects/mpsafetty/sys/netinet/tcp_syncache.c#10 integrate
.. //depot/projects/mpsafetty/sys/netinet/tcp_timer.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet/tcp_timewait.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet/tcp_usrreq.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet/udp_usrreq.c#11 integrate
.. //depot/projects/mpsafetty/sys/netinet/vinet.h#1 branch
.. //depot/projects/mpsafetty/sys/netinet6/dest6.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet6/frag6.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet6/icmp6.c#6 integrate
.. //depot/projects/mpsafetty/sys/netinet6/in6.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet6/in6_gif.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet6/in6_ifattach.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet6/in6_pcb.c#6 integrate
.. //depot/projects/mpsafetty/sys/netinet6/in6_proto.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet6/in6_rmx.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet6/in6_src.c#6 integrate
.. //depot/projects/mpsafetty/sys/netinet6/ip6_forward.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet6/ip6_input.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet6/ip6_ipsec.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet6/ip6_mroute.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet6/ip6_output.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet6/mld6.c#5 integrate
.. //depot/projects/mpsafetty/sys/netinet6/nd6.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet6/nd6_nbr.c#5 integrate
.. //depot/projects/mpsafetty/sys/netinet6/nd6_rtr.c#4 integrate
.. //depot/projects/mpsafetty/sys/netinet6/raw_ip6.c#7 integrate
.. //depot/projects/mpsafetty/sys/netinet6/route6.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet6/scope6.c#3 integrate
.. //depot/projects/mpsafetty/sys/netinet6/udp6_usrreq.c#6 integrate
.. //depot/projects/mpsafetty/sys/netinet6/vinet6.h#1 branch
.. //depot/projects/mpsafetty/sys/netipsec/ipsec.c#5 integrate
.. //depot/projects/mpsafetty/sys/netipsec/ipsec.h#3 integrate
.. //depot/projects/mpsafetty/sys/netipsec/ipsec_input.c#4 integrate
.. //depot/projects/mpsafetty/sys/netipsec/ipsec_mbuf.c#3 integrate
.. //depot/projects/mpsafetty/sys/netipsec/ipsec_output.c#4 integrate
.. //depot/projects/mpsafetty/sys/netipsec/key.c#4 integrate
.. //depot/projects/mpsafetty/sys/netipsec/keysock.c#4 integrate
.. //depot/projects/mpsafetty/sys/netipsec/vipsec.h#1 branch
.. //depot/projects/mpsafetty/sys/netipsec/xform_ah.c#3 integrate
.. //depot/projects/mpsafetty/sys/netipsec/xform_esp.c#3 integrate
.. //depot/projects/mpsafetty/sys/netipsec/xform_ipcomp.c#3 integrate
.. //depot/projects/mpsafetty/sys/netipsec/xform_ipip.c#3 integrate
.. //depot/projects/mpsafetty/sys/nfsclient/nfs_diskless.c#3 integrate
.. //depot/projects/mpsafetty/sys/nfsclient/nfs_vfsops.c#8 integrate
.. //depot/projects/mpsafetty/sys/nfsclient/nfs_vnops.c#6 integrate
.. //depot/projects/mpsafetty/sys/rpc/authunix_prot.c#3 integrate
.. //depot/projects/mpsafetty/sys/sys/protosw.h#2 integrate
.. //depot/projects/mpsafetty/sys/sys/sysctl.h#4 integrate
.. //depot/projects/mpsafetty/sys/sys/vimage.h#4 integrate
.. //depot/projects/mpsafetty/usr.sbin/bsnmpd/modules/Makefile#2 integrate

Differences ...

==== //depot/projects/mpsafetty/gnu/usr.bin/gdb/kgdb/kld.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/gnu/usr.bin/gdb/kgdb/kld.c,v 1.10 2008/09/25 19:32:03 jhb Exp $");
+__FBSDID("$FreeBSD: src/gnu/usr.bin/gdb/kgdb/kld.c,v 1.11 2008/10/02 20:42:10 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/stat.h>
@@ -201,7 +201,7 @@
 load_kld (char *path, CORE_ADDR base_addr, int from_tty)
 {
 	struct section_addr_info *sap;
-	struct section_table *sections, *sections_end, *s;
+	struct section_table *sections = NULL, *sections_end = NULL, *s;
 	struct cleanup *cleanup;
 	bfd *bfd;
 	int i;

==== //depot/projects/mpsafetty/lib/libpmc/pmc.k8.3#2 (text+ko) ====

@@ -21,9 +21,9 @@
 .\" out of the use of this software, even if advised of the possibility of
 .\" such damage.
 .\"
-.\" $FreeBSD: src/lib/libpmc/pmc.k8.3,v 1.2 2008/09/16 16:53:26 svn Exp $
+.\" $FreeBSD: src/lib/libpmc/pmc.k8.3,v 1.3 2008/10/02 08:53:06 jkoshy Exp $
 .\"
-.Dd September 17, 2008
+.Dd October 2, 2008
 .Os
 .Dt PMC.K8 3
 .Sh NAME
@@ -110,9 +110,11 @@
 The event specifiers supported on AMD K8 PMCs are:
 .Bl -tag -width indent
 .It Li k8-bu-cpu-clk-unhalted
+.Pq Event 76H
 Count the number of clock cycles when the CPU is not in the HLT or
 STPCLK states.
 .It Li k8-bu-fill-request-l2-miss Op Li ,mask= Ns Ar qualifier
+.Pq Event 7EH
 Count fill requests that missed in the L2 cache.
 This event may be further qualified using
 .Ar qualifier ,
@@ -130,7 +132,24 @@
 .El
 .Pp
 The default is to count all types of requests.
+.It Li k8-bu-fill-into-l2 Op Li ,mask= Ns Ar qualifier
+.Pq Event 7FH
+The number of lines written to and from the L2 cache.
+The event may be further qualified by using
+.Ar qualifier ,
+which is a
+.Ql +
+separated set of the following keywords:
+.Pp
+.Bl -tag -width indent -compact
+.It Li dirty-l2-victim
+Count lines written into L2 cache due to victim writebacks from the
+Icache or Dcache, TLB page table walks or hardware data prefetches.
+.It Li victim-from-l2
+Count writebacks of dirty lines from L2 to the system.
+.El
 .It Li k8-bu-internal-l2-request Op Li ,mask= Ns Ar qualifier
+.Pq Event 7DH
 Count internally generated requests to the L2 cache.
 This event may be further qualified using
 .Ar qualifier ,
@@ -153,8 +172,10 @@
 .Pp
 The default is to count all types of requests.
 .It Li k8-dc-access
+.Pq Event 40H
 Count data cache accesses including microcode scratchpad accesses.
 .It Li k8-dc-copyback Op Li ,mask= Ns Ar qualifier
+.Pq Event 44H
 Count data cache copyback operations.
 This event may be further qualified using
 .Ar qualifier ,
@@ -188,6 +209,7 @@
 The default is to count operations for lines in all the
 above states.
 .It Li k8-dc-dcache-accesses-by-locks Op Li ,mask= Ns Ar qualifier
+.Pq Event 4CH
 Count data cache accesses by lock instructions.
 This event is only available on processors of revision C or later
 vintage.
@@ -206,6 +228,7 @@
 .Pp
 The default is to count all accesses.
 .It Li k8-dc-dispatched-prefetch-instructions Op Li ,mask= Ns Ar qualifier
+.Pq Event 4BH
 Count the number of dispatched prefetch instructions.
 This event may be further qualified using
 .Ar qualifier ,
@@ -224,18 +247,25 @@
 .Pp
 The default is to count all operations.
 .It Li k8-dc-l1-dtlb-miss-and-l2-dtlb-hit
+.Pq Event 45H
 Count L1 DTLB misses that are L2 DTLB hits.
 .It Li k8-dc-l1-dtlb-miss-and-l2-dtlb-miss
+.Pq Event 46H
 Count L1 DTLB misses that are also misses in the L2 DTLB.
 .It Li k8-dc-microarchitectural-early-cancel-of-an-access
+.Pq Event 49H
 Count microarchitectural early cancels of data cache accesses.
 .It Li k8-dc-microarchitectural-late-cancel-of-an-access
+.Pq Event 48H
 Count microarchitectural late cancels of data cache accesses.
 .It Li k8-dc-misaligned-data-reference
+.Pq Event 47H
 Count misaligned data references.
 .It Li k8-dc-miss
+.Pq Event 41H
 Count data cache misses.
 .It Li k8-dc-one-bit-ecc-error Op Li ,mask= Ns Ar qualifier
+.Pq Event 4AH
 Count one bit ECC errors found by the scrubber.
 This event may be further qualified using
 .Ar qualifier ,
@@ -252,6 +282,7 @@
 .Pp
 The default is to count both kinds of errors.
 .It Li k8-dc-refill-from-l2 Op Li ,mask= Ns Ar qualifier
+.Pq Event 42H
 Count data cache refills from L2 cache.
 This event may be further qualified using
 .Ar qualifier ,
@@ -285,6 +316,7 @@
 The default is to count operations for lines in all the
 above states.
 .It Li k8-dc-refill-from-system Op Li ,mask= Ns Ar qualifier
+.Pq Event 43H
 Count data cache refills from system memory.
 This event may be further qualified using
 .Ar qualifier ,
@@ -317,7 +349,16 @@
 .Pp
 The default is to count operations for lines in all the
 above states.
+.It Li k8-fp-cycles-with-no-fpu-ops-retired
+.Pq Event 01H
+Count cycles when no FPU ops were retired.
+This event is supported in revision B and later CPUs.
+.It Li k8-fp-dispatched-fpu-fast-flag-ops
+.Pq Event 02H
+Count dispatched FPU ops that use the fast flag interface.
+This event is supported in revision B and later CPUs.
 .It Li k8-fp-dispatched-fpu-ops Op Li ,mask= Ns Ar qualifier
+.Pq Event 00H
 Count the number of dispatched FPU ops.
 This event is supported in revision B and later CPUs.
 This event may be further qualified using
@@ -342,38 +383,44 @@
 .El
 .Pp
 The default is to count all types of ops.
-.It Li k8-fp-cycles-with-no-fpu-ops-retired
-Count cycles when no FPU ops were retired.
-This event is supported in revision B and later CPUs.
-.It Li k8-fp-dispatched-fpu-fast-flag-ops
-Count dispatched FPU ops that use the fast flag interface.
-This event is supported in revision B and later CPUs.
 .It Li k8-fr-decoder-empty
+.Pq Event D0H
 Count cycles when there was nothing to dispatch (i.e., the decoder
 was empty).
-.It Li k8-fr-dispatch-stalls
-Count all dispatch stalls.
 .It Li k8-fr-dispatch-stall-for-segment-load
+.Pq Event D4H
 Count dispatch stalls for segment loads.
 .It Li k8-fr-dispatch-stall-for-serialization
+.Pq Event D3H
 Count dispatch stalls for serialization.
 .It Li k8-fr-dispatch-stall-from-branch-abort-to-retire
+.Pq Event D2H
 Count dispatch stalls from branch abort to retiral.
 .It Li k8-fr-dispatch-stall-when-fpu-is-full
+.Pq Event D7H
 Count dispatch stalls when the FPU is full.
 .It Li k8-fr-dispatch-stall-when-ls-is-full
+.Pq Event D8H
 Count dispatch stalls when the load/store unit is full.
 .It Li k8-fr-dispatch-stall-when-reorder-buffer-is-full
+.Pq Event D5H
 Count dispatch stalls when the reorder buffer is full.
 .It Li k8-fr-dispatch-stall-when-reservation-stations-are-full
+.Pq Event D6H
 Count dispatch stalls when reservation stations are full.
+.It Li k8-fr-dispatch-stall-when-waiting-far-xfer-or-resync-branch-pending
+.Pq Event DAH
+Count dispatch stalls when a far control transfer or a resync branch
+is pending.
 .It Li k8-fr-dispatch-stall-when-waiting-for-all-to-be-quiet
+.Pq Event D9H
 Count dispatch stalls when waiting for all to be quiet.
 .\" XXX What does "waiting for all to be quiet" mean?
-.It Li k8-fr-dispatch-stall-when-waiting-far-xfer-or-resync-branch-pending
-Count dispatch stalls when a far control transfer or a resync branch
-is pending.
+.It Li k8-fr-dispatch-stalls
+.Pq Event D1H
+Count all dispatch stalls.
 .It Li k8-fr-fpu-exceptions Op Li ,mask= Ns Ar qualifier
+.Pq Event DBH
 Count FPU exceptions.
 This event is supported in revision B and later CPUs.
 This event may be further qualified using
@@ -395,25 +442,35 @@
 .Pp
 The default is to count all types of exceptions.
 .It Li k8-fr-interrupts-masked-cycles
+.Pq Event CDH
 Count cycles when interrupts were masked (by CPU RFLAGS field IF was zero).
 .It Li k8-fr-interrupts-masked-while-pending-cycles
+.Pq Event CEH
 Count cycles while interrupts were masked while pending (i.e., cycles
 when INTR was asserted while CPU RFLAGS field IF was zero).
 .It Li k8-fr-number-of-breakpoints-for-dr0
+.Pq Event DCH
 Count the number of breakpoints for DR0.
 .It Li k8-fr-number-of-breakpoints-for-dr1
+.Pq Event DDH
 Count the number of breakpoints for DR1.
 .It Li k8-fr-number-of-breakpoints-for-dr2
+.Pq Event DEH
 Count the number of breakpoints for DR2.
 .It Li k8-fr-number-of-breakpoints-for-dr3
+.Pq Event DFH
 Count the number of breakpoints for DR3.
 .It Li k8-fr-retired-branches
+.Pq Event C2H
 Count retired branches including exceptions and interrupts.
 .It Li k8-fr-retired-branches-mispredicted
+.Pq Event C3H
 Count mispredicted retired branches.
 .It Li k8-fr-retired-far-control-transfers
+.Pq Event C6H
 Count retired far control transfers (which are always mispredicted).
 .It Li k8-fr-retired-fastpath-double-op-instructions Op Li ,mask= Ns Ar qualifier
+.Pq Event CCH
 Count retired fastpath double op instructions.
 This event is supported in revision B and later CPUs.
 This event may be further qualified using
@@ -433,6 +490,7 @@
 .Pp
 The default is to count all types of instructions.
 .It Li k8-fr-retired-fpu-instructions Op Li ,mask= Ns Ar qualifier
+.Pq Event CBH
 Count retired FPU instructions.
 This event is supported in revision B and later CPUs.
 This event may be further qualified using
@@ -454,47 +512,68 @@
 .Pp
 The default is to count all types of instructions.
 .It Li k8-fr-retired-near-returns
+.Pq Event C8H
 Count retired near returns.
 .It Li k8-fr-retired-near-returns-mispredicted
+.Pq Event C9H
 Count mispredicted near returns.
 .It Li k8-fr-retired-resyncs
+.Pq Event C7H
 Count retired resyncs (non-control transfer branches).
-.It Li k8-fr-retired-taken-hardware-interrupts
-Count retired taken hardware interrupts.
 .It Li k8-fr-retired-taken-branches
+.Pq Event C4H
 Count retired taken branches.
 .It Li k8-fr-retired-taken-branches-mispredicted
+.Pq Event C5H
 Count retired taken branches that were mispredicted.
 .It Li k8-fr-retired-taken-branches-mispredicted-by-addr-miscompare
+.Pq Event CAH
 Count retired taken branches that were mispredicted only due to an
 address miscompare.
+.It Li k8-fr-retired-taken-hardware-interrupts
+.Pq Event CFH
+Count retired taken hardware interrupts.
 .It Li k8-fr-retired-uops
+.Pq Event C1H
 Count retired uops.
 .It Li k8-fr-retired-x86-instructions
+.Pq Event C0H
 Count retired x86 instructions including exceptions and interrupts.
 .It Li k8-ic-fetch
+.Pq Event 80H
 Count instruction cache fetches.
 .It Li k8-ic-instruction-fetch-stall
+.Pq Event 87H
 Count cycles in stalls due to instruction fetch.
 .It Li k8-ic-l1-itlb-miss-and-l2-itlb-hit
+.Pq Event 84H
 Count L1 ITLB misses that are L2 ITLB hits.
 .It Li k8-ic-l1-itlb-miss-and-l2-itlb-miss
+.Pq Event 85H
 Count ITLB misses that miss in both L1 and L2 ITLBs.
 .It Li k8-ic-microarchitectural-resync-by-snoop
+.Pq Event 86H
 Count microarchitectural resyncs caused by snoops.
 .It Li k8-ic-miss
+.Pq Event 81H
 Count instruction cache misses.
 .It Li k8-ic-refill-from-l2
+.Pq Event 82H
 Count instruction cache refills from L2 cache.
 .It Li k8-ic-refill-from-system
+.Pq Event 83H
 Count instruction cache refills from system memory.
 .It Li k8-ic-return-stack-hits
+.Pq Event 88H
 Count hits to the return stack.
 .It Li k8-ic-return-stack-overflow
+.Pq Event 89H
 Count overflows of the return stack.
 .It Li k8-ls-buffer2-full
+.Pq Event 23H
 Count load/store buffer2 full events.
 .It Li k8-ls-locked-operation Op Li ,mask= Ns Ar qualifier
+.Pq Event 24H
 Count locked operations.
 For revision C and later CPUs, the following qualifiers are supported:
 .Pp
@@ -510,17 +589,23 @@
 .Pp
 The default is to count the number of lock instructions executed.
 .It Li k8-ls-microarchitectural-late-cancel
+.Pq Event 25H
 Count microarchitectural late cancels of operations in the load/store
 unit.
 .It Li k8-ls-microarchitectural-resync-by-self-modifying-code
+.Pq Event 21H
 Count microarchitectural resyncs caused by self-modifying code.
 .It Li k8-ls-microarchitectural-resync-by-snoop
+.Pq Event 22H
 Count microarchitectural resyncs caused by snoops.
 .It Li k8-ls-retired-cflush-instructions
+.Pq Event 26H
 Count retired CFLUSH instructions.
 .It Li k8-ls-retired-cpuid-instructions
+.Pq Event 27H
 Count retired CPUID instructions.
 .It Li k8-ls-segment-register-load Op Li ,mask= Ns Ar qualifier
+.Pq Event 20H
 Count segment register loads.
 This event may be further qualified using
 .Ar qualifier ,
@@ -546,7 +631,31 @@
 .El
 .Pp
 The default is to count all types of loads.
+.It Li k8-nb-ht-bus0-bandwidth Op Li ,mask= Ns Ar qualifier
+.It Li k8-nb-ht-bus1-bandwidth Op Li ,mask= Ns Ar qualifier
+.It Li k8-nb-ht-bus2-bandwidth Op Li ,mask= Ns Ar qualifier
+.Pq Events F6H, F7H and F8H respectively
+Count events on the HyperTransport(tm) buses.
+These events may be further qualified using
+.Ar qualifier ,
+which is a
+.Ql +
+separated set of the following keywords:
+.Pp
+.Bl -tag -width indent -compact
+.It Li buffer-release
+Count buffer release messages sent.
+.It Li command
+Count command messages sent.
+.It Li data
+Count data messages sent.
+.It Li nop
+Count nop messages sent.
+.El
+.Pp
+The default is to count all types of messages.
 .It Li k8-nb-memory-controller-bypass-saturation Op Li ,mask= Ns Ar qualifier
+.Pq Event E4H
 Count memory controller bypass counter saturation events.
 This event may be further qualified using
 .Ar qualifier ,
@@ -566,8 +675,10 @@
 .El
 .Pp
 .It Li k8-nb-memory-controller-dram-slots-missed
+.Pq Event E2H
 Count memory controller DRAM command slots missed (in MemClks).
 .It Li k8-nb-memory-controller-page-access-event Op Li ,mask= Ns Ar qualifier
+.Pq Event E0H
 Count memory controller page access events.
 This event may be further qualified using
 .Ar qualifier ,
@@ -586,8 +697,30 @@
 .Pp
 The default is to count all types of events.
 .It Li k8-nb-memory-controller-page-table-overflow
+.Pq Event E1H
 Count memory control page table overflow events.
+.It Li k8-nb-memory-controller-turnaround Op Li ,mask= Ns Ar qualifier
+.Pq Event E3H
+Count memory control turnaround events.
+This event may be further qualified using
+.Ar qualifier ,
+which is a
+.Ql +
+separated set of the following keywords:
+.Pp
+.Bl -tag -width indent -compact
+.\" XXX doc is unclear whether these are cycle counts or event counts
+.It Li dimm-turnaround
+Count DIMM turnarounds.
+.It Li read-to-write-turnaround
+Count read to write turnarounds.
+.It Li write-to-read-turnaround
+Count write to read turnarounds.
+.El
+.Pp
+The default is to count all types of events.
 .It Li k8-nb-probe-result Op Li ,mask= Ns Ar qualifier
+.Pq Event ECH
 Count probe events.
 This event may be further qualified using
 .Ar qualifier ,
@@ -606,6 +739,7 @@
 Count probe misses.
 .El
 .It Li k8-nb-sized-commands Op Li ,mask= Ns Ar qualifier
+.Pq Event EBH
 Count sized commands issued.
 This event may be further qualified using
 .Ar qualifier ,
@@ -624,47 +758,6 @@
 .El
 .Pp
 The default is to count all types of commands.
-.It Li k8-nb-memory-controller-turnaround Op Li ,mask= Ns Ar qualifier
-Count memory control turnaround events.
-This event may be further qualified using
-.Ar qualifier ,
-which is a
-.Ql +
-separated set of the following keywords:
-.Pp
-.Bl -tag -width indent -compact
-.\" XXX doc is unclear whether these are cycle counts or event counts
-.It Li dimm-turnaround
-Count DIMM turnarounds.
-.It Li read-to-write-turnaround
-Count read to write turnarounds.
-.It Li write-to-read-turnaround
-Count write to read turnarounds.
-.El
-.Pp
-The default is to count all types of events.
-.It Li k8-nb-ht-bus0-bandwidth Op Li ,mask= Ns Ar qualifier
-.It Li k8-nb-ht-bus1-bandwidth Op Li ,mask= Ns Ar qualifier
-.It Li k8-nb-ht-bus2-bandwidth Op Li ,mask= Ns Ar qualifier
-Count events on the HyperTransport(tm) buses.
-These events may be further qualified using
-.Ar qualifier ,
-which is a
-.Ql +
-separated set of the following keywords:
-.Pp
-.Bl -tag -width indent -compact
-.It Li buffer-release
-Count buffer release messages sent.
-.It Li command
-Count command messages sent.
-.It Li data
-Count data messages sent.
-.It Li nop
-Count nop messages sent.
-.El
-.Pp
-The default is to count all types of messages.
 .El
 .Ss Event Name Aliases
 The following table shows the mapping between the PMC-independent

==== //depot/projects/mpsafetty/sbin/ifconfig/ifvlan.c#3 (text+ko) ====

@@ -56,7 +56,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-  "$FreeBSD: src/sbin/ifconfig/ifvlan.c,v 1.14 2008/08/28 22:13:44 jfv Exp $";
+  "$FreeBSD: src/sbin/ifconfig/ifvlan.c,v 1.15 2008/10/02 20:03:41 sam Exp $";
 #endif
 
 #define	NOTAG	((u_short) -1)
@@ -174,6 +174,9 @@
 static struct cmd vlan_cmds[] = {
 	DEF_CLONE_CMD_ARG("vlan",			setvlantag),
 	DEF_CLONE_CMD_ARG("vlandev",			setvlandev),
+	/* NB: non-clone cmds */
+	DEF_CMD_ARG("vlan",				setvlantag),
+	DEF_CMD_ARG("vlandev",				setvlandev),
 	/* XXX For compatibility.  Should become DEF_CMD() some day. */
 	DEF_CMD_OPTARG("-vlandev",			unsetvlandev),
 	DEF_CMD("vlanmtu",	IFCAP_VLAN_MTU,		setifcap),

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

@@ -32,15 +32,15 @@
 .\"
 .\" Author: Archie Cobbs <archie@FreeBSD.org>
 .\"
-.\" $FreeBSD: src/share/man/man4/ng_tty.4,v 1.17 2005/02/05 11:31:31 ru Exp $
+.\" $FreeBSD: src/share/man/man4/ng_tty.4,v 1.18 2008/10/03 05:14:54 thompsa Exp $
 .\" $Whistle: ng_tty.8,v 1.5 1999/01/25 23:46:28 archie Exp $
 .\"
-.Dd January 19, 1999
+.Dd October 2, 2008
 .Dt NG_TTY 4
 .Os
 .Sh NAME
 .Nm ng_tty
-.Nd netgraph node type that is also a line discipline
+.Nd netgraph node type that is also a TTY hook
 .Sh SYNOPSIS
 .In sys/types.h
 .In sys/ttycom.h
@@ -48,11 +48,7 @@
 .Sh DESCRIPTION
 The
 .Nm tty
-node type is both a netgraph node type and a line discipline.
-A new node is created when the corresponding line discipline,
-.Dv NETGRAPHDISC ,
-is registered on a tty device (see
-.Xr tty 4 ) .
+node type is both a netgraph node type and a TTY hook.
 .Pp
 The node has a single hook called
 .Dv hook .
@@ -61,13 +57,18 @@
 .Dv hook
 are transmitted out on the tty device.
 No modification to the data is performed in either direction.
-While the line discipline is installed on a tty, the normal
-read and write operations are unavailable, returning
+While the hook is installed on a tty, the normal read and write 
+operations are unavailable, returning
 .Er EIO .
 .Pp
+Incoming data is delivered directly to ng_tty via the tty bypass hook as a
+buffer pointer and length, this is converted to a mbuf and passed to the peer.
+.Pp
 The node supports an optional
 .Dq hot character .
-If set to non-zero, incoming
+If the driver can not deliver data directly to the tty bypass hook then each
+character is input one at a time.
+If set to non-zero and bypass mode is unavailable, incoming
 data from the tty device is queued until this character is seen.
 This avoids sending lots of mbufs containing a small number of bytes,
 but introduces potentially infinite latency.
@@ -110,14 +111,12 @@
 .It Dv NGM_TTY_GET_HOTCHAR
 Returns an integer containing the current hot character in the lower
 eight bits.
+.It Dv NGM_TTY_SET_TTY
+This command takes an integer pointer to the open file descriptor of the tty
+and registers the tty hooks.
 .El
 .Sh SHUTDOWN
-This node shuts down when the corresponding device is closed
-(or the line discipline is uninstalled on the device).
-The
-.Dv NGM_SHUTDOWN
-control message is not valid, and always returns the error
-.Er EOPNOTSUPP .
+This node shuts down when the corresponding device is closed.
 .Sh SEE ALSO
 .Xr ioctl 2 ,
 .Xr netgraph 4 ,
@@ -131,6 +130,7 @@
 .Fx 4.0 .
 .Sh AUTHORS
 .An Archie Cobbs Aq archie@FreeBSD.org
+.An Andrew Thompson Aq thompsa@FreeBSD.org
 .Sh BUGS
 The serial driver code also has a notion of a
 .Dq hot character .

==== //depot/projects/mpsafetty/sys/arm/xscale/ixp425/avila_machdep.c#3 (text+ko) ====

@@ -48,7 +48,7 @@
 #include "opt_msgbuf.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_machdep.c,v 1.11 2008/07/18 06:14:36 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_machdep.c,v 1.12 2008/10/02 22:31:30 bms Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -480,6 +480,11 @@
 	init_param1();
 	init_param2(physmem);
 	kdb_init();
+
+	/* use static kernel environment if so configured */
+	if (envmode == 1)
+		kern_envp = static_env;
+
 	return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP -
 	    sizeof(struct pcb)));
 }

==== //depot/projects/mpsafetty/sys/compat/linprocfs/linprocfs.c#6 (text+ko) ====

@@ -42,7 +42,7 @@
 #include "opt_compat.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.123 2008/09/26 15:29:18 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.124 2008/10/02 15:37:58 zec Exp $");
 
 #include <sys/param.h>
 #include <sys/queue.h>
@@ -1001,6 +1001,7 @@
 static int
 linprocfs_donetdev(PFS_FILL_ARGS)
 {
+	INIT_VNET_NET(TD_TO_VNET(curthread));
 	char ifname[16]; /* XXX LINUX_IFNAMSIZ */
 	struct ifnet *ifp;
 

==== //depot/projects/mpsafetty/sys/compat/linux/linux_ioctl.c#8 (text+ko) ====

@@ -29,7 +29,7 @@
 #include "opt_compat.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.143 2008/08/25 04:55:29 julian Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.144 2008/10/02 15:37:58 zec Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -2051,6 +2051,7 @@
 int
 linux_ifname(struct ifnet *ifp, char *buffer, size_t buflen)
 {
+	INIT_VNET_NET(ifp->if_vnet);
 	struct ifnet *ifscan;
 	int ethno;
 
@@ -2084,6 +2085,7 @@
 static struct ifnet *
 ifname_linux_to_bsd(const char *lxname, char *bsdname)
 {
+	INIT_VNET_NET(TD_TO_VNET(curthread));
 	struct ifnet *ifp;
 	int len, unit;
 	char *ep;
@@ -2124,6 +2126,7 @@
 static int
 linux_ifconf(struct thread *td, struct ifconf *uifc)
 {
+	INIT_VNET_NET(TD_TO_VNET(td));
 #ifdef COMPAT_LINUX32
 	struct l_ifconf ifc;
 #else

==== //depot/projects/mpsafetty/sys/compat/linux/linux_misc.c#7 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.227 2008/09/22 18:59:24 trasz Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.228 2008/10/02 15:37:58 zec Exp $");
 
 #include "opt_compat.h"
 #include "opt_mac.h"
@@ -707,6 +707,7 @@
 int
 linux_newuname(struct thread *td, struct linux_newuname_args *args)
 {
+	INIT_VPROCG(TD_TO_VPROCG(td));
 	struct l_new_utsname utsname;
 	char osname[LINUX_MAX_UTSNAME];
 	char osrelease[LINUX_MAX_UTSNAME];

==== //depot/projects/mpsafetty/sys/compat/linux/linux_socket.c#4 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.76 2008/09/09 13:01:14 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.77 2008/10/02 15:37:58 zec Exp $");
 
 /* XXX we use functions that might not exist. */
 #include "opt_compat.h"
@@ -546,6 +546,9 @@
 static int
 linux_socket(struct thread *td, struct linux_socket_args *args)
 {
+#ifdef INET6
+	INIT_VNET_INET6(curvnet);
+#endif
 	struct socket_args /* {
 		int domain;
 		int type;

==== //depot/projects/mpsafetty/sys/compat/svr4/svr4_sockio.c#4 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_sockio.c,v 1.20 2008/08/25 05:38:18 julian Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_sockio.c,v 1.21 2008/10/02 15:37:58 zec Exp $");
 
 #include <sys/param.h>
 #include <sys/proc.h>
@@ -88,6 +88,7 @@
 	switch (cmd) {
 	case SVR4_SIOCGIFNUM:
 		{
+			INIT_VNET_NET(curvnet);
 			struct ifnet *ifp;
 			struct ifaddr *ifa;
 			int ifnum = 0;

==== //depot/projects/mpsafetty/sys/conf/kmod.mk#2 (text+ko) ====

@@ -1,5 +1,5 @@
 #	From: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
-# $FreeBSD: src/sys/conf/kmod.mk,v 1.222 2008/03/04 16:54:31 jhb Exp $
+# $FreeBSD: src/sys/conf/kmod.mk,v 1.223 2008/10/02 14:45:29 bms Exp $
 #
 # The include file <bsd.kmod.mk> handles building and installing loadable
 # kernel modules.
@@ -331,7 +331,8 @@
 	dev/sound/pcm/feeder_if.m dev/sound/pcm/mixer_if.m \
 	dev/sound/midi/mpu_if.m dev/sound/midi/mpufoi_if.m \
 	dev/sound/midi/synth_if.m dev/usb/usb_if.m isa/isa_if.m \
-	kern/bus_if.m kern/cpufreq_if.m kern/device_if.m kern/serdev_if.m \
+	kern/bus_if.m kern/clock_if.m \
+	kern/cpufreq_if.m kern/device_if.m kern/serdev_if.m \
 	libkern/iconv_converter_if.m opencrypto/cryptodev_if.m \
 	pc98/pc98/canbus_if.m
 

==== //depot/projects/mpsafetty/sys/contrib/ipfilter/netinet/ip_auth.c#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/contrib/ipfilter/netinet/ip_auth.c,v 1.47 2007/11/26 08:18:19 darrenr Exp $	*/
+/*	$FreeBSD: src/sys/contrib/ipfilter/netinet/ip_auth.c,v 1.48 2008/10/02 15:37:58 zec Exp $	*/
 
 /*
  * Copyright (C) 1998-2003 by Darren Reed & Guido van Rooij.
@@ -70,6 +70,11 @@
 #include <netinet/in.h>
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
+#if !defined(_KERNEL) && defined(__FreeBSD_version) && \
+    __FreeBSD_version >= 800049
+# define V_ip_do_randomid	ip_do_randomid
+# define V_ip_id		ip_id
+#endif
 #if !defined(_KERNEL) && !defined(__osf__) && !defined(__sgi)
 # define	KERNEL
 # define	_KERNEL
@@ -120,7 +125,7 @@
 /* END OF INCLUDES */
 
 #if !defined(lint)
-static const char rcsid[] = "@(#)$FreeBSD: src/sys/contrib/ipfilter/netinet/ip_auth.c,v 1.47 2007/11/26 08:18:19 darrenr Exp $";
+static const char rcsid[] = "@(#)$FreeBSD: src/sys/contrib/ipfilter/netinet/ip_auth.c,v 1.48 2008/10/02 15:37:58 zec Exp $";
 /* static const char rcsid[] = "@(#)$Id: ip_auth.c,v 2.73.2.24 2007/09/09 11:32:04 darrenr Exp $"; */
 #endif
 

==== //depot/projects/mpsafetty/sys/contrib/pf/net/pf.c#4 (text+ko) ====

@@ -41,7 +41,7 @@
 #include "opt_inet6.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/contrib/pf/net/pf.c,v 1.56 2008/08/17 23:27:27 bz Exp $");
+__FBSDID("$FreeBSD: src/sys/contrib/pf/net/pf.c,v 1.57 2008/10/02 15:37:58 zec Exp $");
 #endif
 
 #ifdef __FreeBSD__
@@ -1759,6 +1759,7 @@
     u_int8_t flags, u_int16_t win, u_int16_t mss, u_int8_t ttl, int tag,
     u_int16_t rtag, struct ether_header *eh, struct ifnet *ifp)
 {
+	INIT_VNET_INET(curvnet);
 	struct mbuf	*m;
 	int		 len, tlen;
 #ifdef INET
@@ -2922,6 +2923,7 @@
 pf_socket_lookup(int direction, struct pf_pdesc *pd)
 #endif
 {
+	INIT_VNET_INET(curvnet);
 	struct pf_addr		*saddr, *daddr;
 	u_int16_t		 sport, dport;
 #ifdef __FreeBSD__
@@ -3101,6 +3103,7 @@
 u_int16_t
 pf_get_mss(struct mbuf *m, int off, u_int16_t th_off, sa_family_t af)
 {
+	INIT_VNET_INET(curvnet);
 	int		 hlen;
 	u_int8_t	 hdr[60];
 	u_int8_t	*opt, optlen;
@@ -3140,6 +3143,7 @@
 pf_calc_mss(struct pf_addr *addr, sa_family_t af, u_int16_t offer)
 {
 #ifdef INET
+	INIT_VNET_INET(curvnet);
 	struct sockaddr_in	*dst;
 	struct route		 ro;
 #endif /* INET */
@@ -3242,6 +3246,7 @@
     struct ifqueue *ifq)
 #endif
 {
+	INIT_VNET_INET(curvnet);
 	struct pf_rule		*nr = NULL;
 	struct pf_addr		*saddr = pd->src, *daddr = pd->dst;
 	struct tcphdr		*th = pd->hdr.tcp;
@@ -6096,6 +6101,7 @@
 pf_route(struct mbuf **m, struct pf_rule *r, int dir, struct ifnet *oifp,
     struct pf_state *s, struct pf_pdesc *pd)
 {
+	INIT_VNET_INET(curvnet);
 	struct mbuf		*m0, *m1;
 	struct route		 iproute;
 	struct route		*ro = NULL;
@@ -6633,18 +6639,30 @@
 	if (sum) {
 		switch (p) {
 		case IPPROTO_TCP:
+		    {

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



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