svn commit: r252559 - in user/attilio/vmcontention: . contrib/llvm/lib/Target/ARM etc gnu/usr.bin/patch include lib/libc/gen lib/libc/iconv lib/libc/locale lib/libdwarf lib/libstand sbin/devd sbin/...

Attilio Rao attilio at FreeBSD.org
Wed Jul 3 10:45:44 UTC 2013


Author: attilio
Date: Wed Jul  3 10:45:39 2013
New Revision: 252559
URL: http://svnweb.freebsd.org/changeset/base/252559

Log:
  MFC

Added:
  user/attilio/vmcontention/share/man/man4/cc_cdg.4
     - copied unchanged from r252558, head/share/man/man4/cc_cdg.4
  user/attilio/vmcontention/sys/boot/fdt/dts/bcm2835.dtsi
     - copied unchanged from r252558, head/sys/boot/fdt/dts/bcm2835.dtsi
  user/attilio/vmcontention/sys/boot/fdt/dts/rpi.dts
     - copied unchanged from r252558, head/sys/boot/fdt/dts/rpi.dts
  user/attilio/vmcontention/sys/boot/i386/gptboot/gptboot.8
     - copied unchanged from r252558, head/sys/boot/i386/gptboot/gptboot.8
  user/attilio/vmcontention/sys/modules/cc/cc_cdg/
     - copied from r252558, head/sys/modules/cc/cc_cdg/
  user/attilio/vmcontention/sys/netinet/cc/cc_cdg.c
     - copied unchanged from r252558, head/sys/netinet/cc/cc_cdg.c
Deleted:
  user/attilio/vmcontention/sys/boot/fdt/dts/bcm2835-rpi-b.dts
Modified:
  user/attilio/vmcontention/Makefile.inc1
  user/attilio/vmcontention/ObsoleteFiles.inc
  user/attilio/vmcontention/UPDATING
  user/attilio/vmcontention/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h
  user/attilio/vmcontention/etc/network.subr
  user/attilio/vmcontention/etc/newsyslog.conf
  user/attilio/vmcontention/etc/syslog.conf
  user/attilio/vmcontention/gnu/usr.bin/patch/pch.c
  user/attilio/vmcontention/include/iconv.h
  user/attilio/vmcontention/lib/libc/gen/siginterrupt.c
  user/attilio/vmcontention/lib/libc/gen/signal.c
  user/attilio/vmcontention/lib/libc/iconv/Symbol.map
  user/attilio/vmcontention/lib/libc/iconv/citrus_iconv.h
  user/attilio/vmcontention/lib/libc/iconv/citrus_iconv_local.h
  user/attilio/vmcontention/lib/libc/iconv/citrus_lock.h
  user/attilio/vmcontention/lib/libc/iconv/citrus_mapper.c
  user/attilio/vmcontention/lib/libc/iconv/iconv.c
  user/attilio/vmcontention/lib/libc/locale/cXXrtomb_iconv.h
  user/attilio/vmcontention/lib/libc/locale/mbrtocXX_iconv.h
  user/attilio/vmcontention/lib/libdwarf/dwarf_init.c
  user/attilio/vmcontention/lib/libdwarf/dwarf_loc.c
  user/attilio/vmcontention/lib/libstand/nfs.c
  user/attilio/vmcontention/sbin/devd/devd.8
  user/attilio/vmcontention/sbin/devd/devd.cc
  user/attilio/vmcontention/sbin/dhclient/clparse.c
  user/attilio/vmcontention/sbin/dhclient/dhclient.c
  user/attilio/vmcontention/sbin/dhclient/dhcpd.h
  user/attilio/vmcontention/sbin/geom/class/part/gpart.8
  user/attilio/vmcontention/sbin/hastctl/hastctl.c
  user/attilio/vmcontention/sbin/hastd/control.c
  user/attilio/vmcontention/sbin/hastd/hastd.8
  user/attilio/vmcontention/sbin/ifconfig/af_nd6.c
  user/attilio/vmcontention/sbin/mdconfig/mdconfig.c
  user/attilio/vmcontention/sbin/reboot/boot_i386.8
  user/attilio/vmcontention/sbin/swapon/swapon.c
  user/attilio/vmcontention/share/man/man4/Makefile
  user/attilio/vmcontention/share/man/man4/oce.4
  user/attilio/vmcontention/share/man/man9/locking.9
  user/attilio/vmcontention/sys/amd64/include/counter.h
  user/attilio/vmcontention/sys/amd64/vmm/intel/ept.c
  user/attilio/vmcontention/sys/arm/arm/bus_space_generic.c
  user/attilio/vmcontention/sys/arm/arm/generic_timer.c
  user/attilio/vmcontention/sys/arm/broadcom/bcm2835/bcm2835_mbox.c
  user/attilio/vmcontention/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
  user/attilio/vmcontention/sys/arm/conf/RPI-B
  user/attilio/vmcontention/sys/arm/include/counter.h
  user/attilio/vmcontention/sys/boot/i386/gptboot/Makefile
  user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c
  user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zvol.h
  user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
  user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c
  user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
  user/attilio/vmcontention/sys/conf/newvers.sh
  user/attilio/vmcontention/sys/dev/cxgbe/t4_main.c
  user/attilio/vmcontention/sys/dev/mfi/mfi.c
  user/attilio/vmcontention/sys/dev/usb/quirk/usb_quirk.c
  user/attilio/vmcontention/sys/dev/usb/usbdevs
  user/attilio/vmcontention/sys/fs/nfsclient/nfs_clport.c
  user/attilio/vmcontention/sys/fs/smbfs/smbfs_smb.c
  user/attilio/vmcontention/sys/i386/include/counter.h
  user/attilio/vmcontention/sys/ia64/include/counter.h
  user/attilio/vmcontention/sys/kern/kern_acct.c
  user/attilio/vmcontention/sys/kern/kern_descrip.c
  user/attilio/vmcontention/sys/kern/subr_counter.c
  user/attilio/vmcontention/sys/kern/uipc_usrreq.c
  user/attilio/vmcontention/sys/mips/include/counter.h
  user/attilio/vmcontention/sys/modules/Makefile
  user/attilio/vmcontention/sys/modules/cc/Makefile
  user/attilio/vmcontention/sys/net/if_bridge.c
  user/attilio/vmcontention/sys/net/if_lagg.c
  user/attilio/vmcontention/sys/netinet/in_mcast.c
  user/attilio/vmcontention/sys/netinet6/in6.c
  user/attilio/vmcontention/sys/netinet6/in6_ifattach.c
  user/attilio/vmcontention/sys/netinet6/in6_var.h
  user/attilio/vmcontention/sys/netinet6/nd6.c
  user/attilio/vmcontention/sys/nfsclient/nfs_vnops.c
  user/attilio/vmcontention/sys/powerpc/include/counter.h
  user/attilio/vmcontention/sys/powerpc/wii/wii_ipcreg.h
  user/attilio/vmcontention/sys/sparc64/include/counter.h
  user/attilio/vmcontention/sys/ufs/ffs/ffs_alloc.c
  user/attilio/vmcontention/sys/ufs/ffs/ffs_balloc.c
  user/attilio/vmcontention/sys/ufs/ufs/dinode.h
  user/attilio/vmcontention/sys/ufs/ufs/inode.h
  user/attilio/vmcontention/sys/ufs/ufs/ufs_extattr.c
  user/attilio/vmcontention/sys/ufs/ufs/ufs_vnops.c
  user/attilio/vmcontention/tools/tools/cxgbetool/cxgbetool.c
  user/attilio/vmcontention/usr.bin/killall/killall.1
  user/attilio/vmcontention/usr.bin/killall/killall.c
  user/attilio/vmcontention/usr.bin/svn/lib/libapr_util/Makefile
  user/attilio/vmcontention/usr.bin/svn/lib/libapr_util/apr_ldap.h
  user/attilio/vmcontention/usr.bin/svn/lib/libapr_util/apu.h
  user/attilio/vmcontention/usr.bin/svn/lib/libapr_util/apu_config.h
  user/attilio/vmcontention/usr.sbin/bhyve/pci_emul.c
  user/attilio/vmcontention/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt
  user/attilio/vmcontention/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c
  user/attilio/vmcontention/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def
  user/attilio/vmcontention/usr.sbin/nfsd/nfsv4.4
  user/attilio/vmcontention/usr.sbin/pw/pw_user.c
Directory Properties:
  user/attilio/vmcontention/   (props changed)
  user/attilio/vmcontention/contrib/llvm/   (props changed)
  user/attilio/vmcontention/lib/libc/   (props changed)
  user/attilio/vmcontention/sbin/   (props changed)
  user/attilio/vmcontention/share/man/man4/   (props changed)
  user/attilio/vmcontention/sys/   (props changed)
  user/attilio/vmcontention/sys/amd64/vmm/   (props changed)
  user/attilio/vmcontention/sys/boot/   (props changed)
  user/attilio/vmcontention/sys/cddl/contrib/opensolaris/   (props changed)
  user/attilio/vmcontention/sys/conf/   (props changed)
  user/attilio/vmcontention/usr.sbin/bhyve/   (props changed)

Modified: user/attilio/vmcontention/Makefile.inc1
==============================================================================
--- user/attilio/vmcontention/Makefile.inc1	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/Makefile.inc1	Wed Jul  3 10:45:39 2013	(r252559)
@@ -1131,11 +1131,11 @@ legacy:
 .endif
 .for _tool in tools/build
 	${_+_}@${ECHODIR} "===> ${_tool} (obj,includes,depend,all,install)"; \
-	    cd ${.CURDIR}/${_tool}; \
-	    ${MAKE} DIRPRFX=${_tool}/ obj; \
-	    ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy includes; \
-	    ${MAKE} DIRPRFX=${_tool}/ depend; \
-	    ${MAKE} DIRPRFX=${_tool}/ all; \
+	    cd ${.CURDIR}/${_tool} && \
+	    ${MAKE} DIRPRFX=${_tool}/ obj && \
+	    ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy includes && \
+	    ${MAKE} DIRPRFX=${_tool}/ depend && \
+	    ${MAKE} DIRPRFX=${_tool}/ all && \
 	    ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install
 .endfor
 
@@ -1264,10 +1264,10 @@ bootstrap-tools:
     ${_crunch} \
     ${_nmtree}
 	${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
-		cd ${.CURDIR}/${_tool}; \
-		${MAKE} DIRPRFX=${_tool}/ obj; \
-		${MAKE} DIRPRFX=${_tool}/ depend; \
-		${MAKE} DIRPRFX=${_tool}/ all; \
+		cd ${.CURDIR}/${_tool} && \
+		${MAKE} DIRPRFX=${_tool}/ obj && \
+		${MAKE} DIRPRFX=${_tool}/ depend && \
+		${MAKE} DIRPRFX=${_tool}/ all && \
 		${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install
 .endfor
 
@@ -1305,16 +1305,16 @@ build-tools:
     usr.bin/mkesdb_static \
     usr.bin/mkcsmapper_static
 	${_+_}@${ECHODIR} "===> ${_tool} (obj,build-tools)"; \
-		cd ${.CURDIR}/${_tool}; \
-		${MAKE} DIRPRFX=${_tool}/ obj; \
+		cd ${.CURDIR}/${_tool} && \
+		${MAKE} DIRPRFX=${_tool}/ obj && \
 		${MAKE} DIRPRFX=${_tool}/ build-tools
 .endfor
 .for _tool in \
     ${_gcc_tools}
 	${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all)"; \
-		cd ${.CURDIR}/${_tool}; \
-		${MAKE} DIRPRFX=${_tool}/ obj; \
-		${MAKE} DIRPRFX=${_tool}/ depend; \
+		cd ${.CURDIR}/${_tool} && \
+		${MAKE} DIRPRFX=${_tool}/ obj && \
+		${MAKE} DIRPRFX=${_tool}/ depend && \
 		${MAKE} DIRPRFX=${_tool}/ all
 .endfor
 
@@ -1363,10 +1363,10 @@ cross-tools:
     ${_crunchide} \
     ${_kgzip}
 	${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
-		cd ${.CURDIR}/${_tool}; \
-		${MAKE} DIRPRFX=${_tool}/ obj; \
-		${MAKE} DIRPRFX=${_tool}/ depend; \
-		${MAKE} DIRPRFX=${_tool}/ all; \
+		cd ${.CURDIR}/${_tool} && \
+		${MAKE} DIRPRFX=${_tool}/ obj && \
+		${MAKE} DIRPRFX=${_tool}/ depend && \
+		${MAKE} DIRPRFX=${_tool}/ all && \
 		${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX} install
 .endfor
 
@@ -1545,10 +1545,10 @@ lib/libradius__L: lib/libmd__L
 ${_lib}__PL: .PHONY
 .if exists(${.CURDIR}/${_lib})
 	${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \
-		cd ${.CURDIR}/${_lib}; \
-		${MAKE} DIRPRFX=${_lib}/ obj; \
-		${MAKE} DIRPRFX=${_lib}/ depend; \
-		${MAKE} -DNO_PROFILE -DNO_PIC DIRPRFX=${_lib}/ all; \
+		cd ${.CURDIR}/${_lib} && \
+		${MAKE} DIRPRFX=${_lib}/ obj && \
+		${MAKE} DIRPRFX=${_lib}/ depend && \
+		${MAKE} -DNO_PROFILE -DNO_PIC DIRPRFX=${_lib}/ all && \
 		${MAKE} -DNO_PROFILE -DNO_PIC DIRPRFX=${_lib}/ install
 .endif
 .endfor
@@ -1557,10 +1557,10 @@ ${_lib}__PL: .PHONY
 ${_lib}__L: .PHONY
 .if exists(${.CURDIR}/${_lib})
 	${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \
-		cd ${.CURDIR}/${_lib}; \
-		${MAKE} DIRPRFX=${_lib}/ obj; \
-		${MAKE} DIRPRFX=${_lib}/ depend; \
-		${MAKE} DIRPRFX=${_lib}/ all; \
+		cd ${.CURDIR}/${_lib} && \
+		${MAKE} DIRPRFX=${_lib}/ obj && \
+		${MAKE} DIRPRFX=${_lib}/ depend && \
+		${MAKE} DIRPRFX=${_lib}/ all && \
 		${MAKE} DIRPRFX=${_lib}/ install
 .endif
 .endfor
@@ -1570,10 +1570,10 @@ ${_lib}__L: .PHONY
 # modules.
 lib/libpam__L: .PHONY
 	${_+_}@${ECHODIR} "===> lib/libpam (obj,depend,all,install)"; \
-		cd ${.CURDIR}/lib/libpam; \
-		${MAKE} DIRPRFX=lib/libpam/ obj; \
-		${MAKE} DIRPRFX=lib/libpam/ depend; \
-		${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET all; \
+		cd ${.CURDIR}/lib/libpam && \
+		${MAKE} DIRPRFX=lib/libpam/ obj && \
+		${MAKE} DIRPRFX=lib/libpam/ depend && \
+		${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET all && \
 		${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET install
 
 _prereq_libs: ${_prereq_libs:S/$/__PL/}
@@ -1584,7 +1584,7 @@ _generic_libs: ${_generic_libs:S/$/__L/}
 .for __target in all clean cleandepend cleandir depend includes obj
 .for entry in ${SUBDIR}
 ${entry}.${__target}__D: .PHONY
-	${_+_}@if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \
+	${_+_}@set -e; if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \
 		${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH} (${__target})"; \
 		edir=${entry}.${MACHINE_ARCH}; \
 		cd ${.CURDIR}/$${edir}; \
@@ -1822,10 +1822,10 @@ _xb-bootstrap-tools:
 .for _tool in \
     ${_clang_tblgen}
 	${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
-	cd ${.CURDIR}/${_tool}; \
-	${CDMAKE} DIRPRFX=${_tool}/ obj; \
-	${CDMAKE} DIRPRFX=${_tool}/ depend; \
-	${CDMAKE} DIRPRFX=${_tool}/ all; \
+	cd ${.CURDIR}/${_tool} && \
+	${CDMAKE} DIRPRFX=${_tool}/ obj && \
+	${CDMAKE} DIRPRFX=${_tool}/ depend && \
+	${CDMAKE} DIRPRFX=${_tool}/ all && \
 	${CDMAKE} DIRPRFX=${_tool}/ DESTDIR=${CDTMP} install
 .endfor
 
@@ -1841,9 +1841,9 @@ _xb-cross-tools:
     ${_clang_libs} \
     ${_clang}
 	${_+_}@${ECHODIR} "===> xdev ${_tool} (obj,depend,all)"; \
-	cd ${.CURDIR}/${_tool}; \
-	${CDMAKE} DIRPRFX=${_tool}/ obj; \
-	${CDMAKE} DIRPRFX=${_tool}/ depend; \
+	cd ${.CURDIR}/${_tool} && \
+	${CDMAKE} DIRPRFX=${_tool}/ obj && \
+	${CDMAKE} DIRPRFX=${_tool}/ depend && \
 	${CDMAKE} DIRPRFX=${_tool}/ all
 .endfor
 

Modified: user/attilio/vmcontention/ObsoleteFiles.inc
==============================================================================
--- user/attilio/vmcontention/ObsoleteFiles.inc	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/ObsoleteFiles.inc	Wed Jul  3 10:45:39 2013	(r252559)
@@ -41,7 +41,7 @@
 # 20130623: dialog update from 1.1 to 1.2
 OLD_LIBS+=usr/lib/libdialog.so.7
 OLD_LIBS+=usr/lib32/libdialog.so.7
-# 20130616: vfs_mounted.9 removed
+# 20130616: vfs_mount.9 removed
 OLD_FILES+=usr/share/man/man9/vfs_mount.9.gz
 # 20130614: remove CVS from base
 OLD_FILES+=usr/bin/cvs

Modified: user/attilio/vmcontention/UPDATING
==============================================================================
--- user/attilio/vmcontention/UPDATING	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/UPDATING	Wed Jul  3 10:45:39 2013	(r252559)
@@ -31,6 +31,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
 	disable the most expensive debugging functionality run
 	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20130629:
+	Fix targets that run multiple make's to use && rather than ;
+	so that subsequent steps depend on success of previous.
+
+	NOTE: if building 'universe' with -j* on stable/8 or stable/9
+	it would be better to start the build using bmake, to avoid
+	overloading the machine.
+
 20130618:
 	Fix a bug that allowed a tracing process (e.g. gdb) to write
 	to a memory-mapped file in the traced process's address space

Modified: user/attilio/vmcontention/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h
==============================================================================
--- user/attilio/vmcontention/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h	Wed Jul  3 10:45:39 2013	(r252559)
@@ -27,7 +27,7 @@ protected:
 
 public:
   explicit ARMFrameLowering(const ARMSubtarget &sti)
-    : TargetFrameLowering(StackGrowsDown, sti.getStackAlignment(), 0, 4),
+    : TargetFrameLowering(StackGrowsDown, sti.getStackAlignment(), 0, 8),
       STI(sti) {
   }
 

Modified: user/attilio/vmcontention/etc/network.subr
==============================================================================
--- user/attilio/vmcontention/etc/network.subr	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/etc/network.subr	Wed Jul  3 10:45:39 2013	(r252559)
@@ -164,6 +164,9 @@ ifconfig_up()
 		fi
 	fi
 
+	ifalias $1 link alias
+	ifalias $1 ether alias
+
 	if [ ${_cfg} -eq 0 ]; then
 		${IFCONFIG_CMD} $1 up
 	fi
@@ -432,6 +435,9 @@ afexists()
 			return 1
 		fi
 		;;
+	link|ether)
+		return 0
+		;;
 	*)
 		err 1 "afexists(): Unsupported address family: $_af"
 		;;
@@ -700,7 +706,7 @@ ifalias()
 	afexists $2 || return $_ret
 
 	case "$2" in
-	inet|inet6)
+	inet|inet6|link|ether)
 		ifalias_af_common $1 $2 $3 && _ret=0
 		;;
 	esac
@@ -907,6 +913,11 @@ ifalias_af_common_handler()
 	*)	return	;;
 	esac
 
+	# link(ether) does not support address removal.
+	case $_af:$_action in
+	link:-alias|ether:-alias)	return ;;
+	esac
+
 	_tmpargs=
 	for _c in $_args; do
 		case $_c in
@@ -965,6 +976,8 @@ ifalias_af_common()
 		inet\ *)	_iaf=inet ;;
 		inet6\ *)	_iaf=inet6 ;;
 		ipx\ *)		_iaf=ipx ;;
+		link\ *)	_iaf=link ;;
+		ether\ *)	_iaf=ether ;;
 		esac
 
 		case ${_af}:${_action}:${_iaf}:"${ifconfig_args}" in
@@ -1012,7 +1025,7 @@ ifalias_af_common()
 	_tmpargs=
 	for _c in `get_if_var $_if ifconfig_IF_aliases` $_aliasn; do
 		case $_c in
-		inet|inet6|ipx)
+		inet|inet6|ipx|link|ether)
 			case $_tmpargs in
 			${_af}\ *)
 				eval ifalias_af_common_handler $_if $_af $_action $_tmpargs && _ret=0

Modified: user/attilio/vmcontention/etc/newsyslog.conf
==============================================================================
--- user/attilio/vmcontention/etc/newsyslog.conf	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/etc/newsyslog.conf	Wed Jul  3 10:45:39 2013	(r252559)
@@ -32,6 +32,7 @@
 /var/log/monthly.log			640  12	   *	$M1D0 JN
 /var/log/pflog				600  3	   100	*     JB    /var/run/pflogd.pid
 /var/log/ppp.log	root:network	640  3	   100	*     JC
+/var/log/devd.log			644  3	   100	*     JC
 /var/log/security			600  10	   100	*     JC
 /var/log/sendmail.st			640  10	   *	168   BN
 /var/log/utx.log			644  3	   *	@01T05 B

Modified: user/attilio/vmcontention/etc/syslog.conf
==============================================================================
--- user/attilio/vmcontention/etc/syslog.conf	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/etc/syslog.conf	Wed Jul  3 10:45:39 2013	(r252559)
@@ -13,6 +13,7 @@ mail.info					/var/log/maillog
 lpr.info					/var/log/lpd-errs
 ftp.info					/var/log/xferlog
 cron.*						/var/log/cron
+!-devd
 *.=debug					/var/log/debug.log
 *.emerg						*
 # uncomment this to log all writes to /dev/console to /var/log/console.log
@@ -27,6 +28,9 @@ cron.*						/var/log/cron
 # news.crit					/var/log/news/news.crit
 # news.err					/var/log/news/news.err
 # news.notice					/var/log/news/news.notice
+# Uncomment this if you wish to see messages produced by devd
+# !devd
+# *.>=info                                       /var/log/devd.log
 !ppp
 *.*						/var/log/ppp.log
 !*

Modified: user/attilio/vmcontention/gnu/usr.bin/patch/pch.c
==============================================================================
--- user/attilio/vmcontention/gnu/usr.bin/patch/pch.c	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/gnu/usr.bin/patch/pch.c	Wed Jul  3 10:45:39 2013	(r252559)
@@ -83,12 +83,17 @@ re_patch(void)
 void
 open_patch_file(char *filename)
 {
+	int nr, nw;
+
 	if (filename == Nullch || !*filename || strEQ(filename, "-")) {
 		pfp = fopen(TMPPATNAME, "w");
 		if (pfp == Nullfp)
 			pfatal2("can't create %s", TMPPATNAME);
-		while (fgets(buf, buf_size, stdin) != Nullch)
-			fputs(buf, pfp);
+		while ((nr = fread(buf, 1, buf_size, stdin)) > 0) {
+			nw = fwrite(buf, 1, nr, pfp);
+			if (nr != nw)
+				pfatal2("write error to %s", TMPPATNAME);
+		}
 		Fclose(pfp);
 		filename = TMPPATNAME;
 	}
@@ -1176,7 +1181,7 @@ pgets(bool do_indent)
 					indent++;
 			}
 		}
-		Strncpy(buf, line, len - skipped);
+		memcpy(buf, line, len - skipped);
 		buf[len - skipped] = '\0';
 	}
 	return len;

Modified: user/attilio/vmcontention/include/iconv.h
==============================================================================
--- user/attilio/vmcontention/include/iconv.h	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/include/iconv.h	Wed Jul  3 10:45:39 2013	(r252559)
@@ -43,7 +43,7 @@
 
 #define iconv_open		libiconv_open
 #define iconv_close		libiconv_close
-#define iconv(cd, in, insize, out, outsize)	libiconv(cd, __DECONST(char **, in), insize, out, outsize)
+#define iconv			libiconv
 #define iconv_t			libiconv_t
 
 struct __tag_iconv_t;
@@ -51,7 +51,7 @@ typedef	struct __tag_iconv_t	*iconv_t;
 
 __BEGIN_DECLS
 iconv_t	libiconv_open(const char *, const char *);
-size_t	libiconv(iconv_t, char ** __restrict,
+size_t	libiconv(iconv_t, const char ** __restrict,
 		     size_t * __restrict, char ** __restrict,
 		     size_t * __restrict);
 int	libiconv_close(iconv_t);
@@ -60,7 +60,7 @@ int	libiconv_close(iconv_t);
  */
 int	__iconv_get_list(char ***, size_t *, bool);
 void	__iconv_free_list(char **, size_t);
-size_t	__iconv(iconv_t, char **, size_t *, char **,
+size_t	__iconv(iconv_t, const char **, size_t *, char **,
 		     size_t *, __uint32_t, size_t *);
 #define __ICONV_F_HIDE_INVALID	0x0001
 

Modified: user/attilio/vmcontention/lib/libc/gen/siginterrupt.c
==============================================================================
--- user/attilio/vmcontention/lib/libc/gen/siginterrupt.c	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libc/gen/siginterrupt.c	Wed Jul  3 10:45:39 2013	(r252559)
@@ -46,7 +46,7 @@ int
 siginterrupt(sig, flag)
 	int sig, flag;
 {
-	extern sigset_t _sigintr;
+	extern sigset_t _sigintr __hidden;
 	struct sigaction sa;
 	int ret;
 

Modified: user/attilio/vmcontention/lib/libc/gen/signal.c
==============================================================================
--- user/attilio/vmcontention/lib/libc/gen/signal.c	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libc/gen/signal.c	Wed Jul  3 10:45:39 2013	(r252559)
@@ -41,7 +41,7 @@ __FBSDID("$FreeBSD$");
 #include "un-namespace.h"
 #include "libc_private.h"
 
-sigset_t _sigintr;		/* shared with siginterrupt */
+sigset_t _sigintr __hidden;	/* shared with siginterrupt */
 
 sig_t
 signal(s, a)

Modified: user/attilio/vmcontention/lib/libc/iconv/Symbol.map
==============================================================================
--- user/attilio/vmcontention/lib/libc/iconv/Symbol.map	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libc/iconv/Symbol.map	Wed Jul  3 10:45:39 2013	(r252559)
@@ -17,6 +17,16 @@ FBSD_1.2 {
 	libiconvlist;
 };
 
+FBSD_1.3 {
+	iconv;
+	iconv_open;
+	iconv_close;
+	iconv_open_into;
+	iconv_set_relocation_prefix;
+	iconvctl;
+	iconvlist;
+};
+
 FBSDprivate_1.0 {
 	_citrus_bcs_convert_to_lower;
 	_citrus_bcs_convert_to_upper;

Modified: user/attilio/vmcontention/lib/libc/iconv/citrus_iconv.h
==============================================================================
--- user/attilio/vmcontention/lib/libc/iconv/citrus_iconv.h	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libc/iconv/citrus_iconv.h	Wed Jul  3 10:45:39 2013	(r252559)
@@ -52,7 +52,7 @@ __END_DECLS
  */
 static __inline int
 _citrus_iconv_convert(struct _citrus_iconv * __restrict cv,
-    char * __restrict * __restrict in, size_t * __restrict inbytes,
+    const char * __restrict * __restrict in, size_t * __restrict inbytes,
     char * __restrict * __restrict out, size_t * __restrict outbytes,
     uint32_t flags, size_t * __restrict nresults)
 {

Modified: user/attilio/vmcontention/lib/libc/iconv/citrus_iconv_local.h
==============================================================================
--- user/attilio/vmcontention/lib/libc/iconv/citrus_iconv_local.h	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libc/iconv/citrus_iconv_local.h	Wed Jul  3 10:45:39 2013	(r252559)
@@ -45,7 +45,7 @@ static void	 _citrus_##_m_##_iconv_unini
 		    (struct _citrus_iconv_shared *);			\
 static int	 _citrus_##_m_##_iconv_convert				\
 		    (struct _citrus_iconv * __restrict,			\
-		    char * __restrict * __restrict,			\
+		    const char * __restrict * __restrict,		\
 		    size_t * __restrict,				\
 		    char * __restrict * __restrict,			\
 		    size_t * __restrict outbytes,			\
@@ -74,7 +74,7 @@ typedef void (*_citrus_iconv_uninit_shar
     (struct _citrus_iconv_shared *);
 typedef int (*_citrus_iconv_convert_t)
     (struct _citrus_iconv * __restrict,
-    char *__restrict* __restrict, size_t * __restrict,
+    const char *__restrict* __restrict, size_t * __restrict,
     char * __restrict * __restrict, size_t * __restrict, uint32_t,
     size_t * __restrict);
 typedef int (*_citrus_iconv_init_context_t)(struct _citrus_iconv *);

Modified: user/attilio/vmcontention/lib/libc/iconv/citrus_lock.h
==============================================================================
--- user/attilio/vmcontention/lib/libc/iconv/citrus_lock.h	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libc/iconv/citrus_lock.h	Wed Jul  3 10:45:39 2013	(r252559)
@@ -27,7 +27,8 @@
 
 #include <pthread.h>
 
-static pthread_rwlock_t	lock;
+/* XXX Yes, the original code has three separate file-local lock instances */
+static pthread_rwlock_t	lock = PTHREAD_RWLOCK_INITIALIZER;
 
 #define WLOCK	if (__isthreaded)		\
 		    pthread_rwlock_wrlock(&lock);

Modified: user/attilio/vmcontention/lib/libc/iconv/citrus_mapper.c
==============================================================================
--- user/attilio/vmcontention/lib/libc/iconv/citrus_mapper.c	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libc/iconv/citrus_mapper.c	Wed Jul  3 10:45:39 2013	(r252559)
@@ -96,7 +96,7 @@ _citrus_mapper_create_area(
 	ma->ma_dir = strdup(area);
 	if (ma->ma_dir == NULL) {
 		ret = errno;
-		free(ma->ma_dir);
+		free(ma);
 		goto quit;
 	}
 	_CITRUS_HASH_INIT(&ma->ma_cache, CM_HASH_SIZE);

Modified: user/attilio/vmcontention/lib/libc/iconv/iconv.c
==============================================================================
--- user/attilio/vmcontention/lib/libc/iconv/iconv.c	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libc/iconv/iconv.c	Wed Jul  3 10:45:39 2013	(r252559)
@@ -47,16 +47,13 @@
 #include "citrus_hash.h"
 #include "citrus_iconv.h"
 
-#ifdef __weak_alias
-__weak_alias(libiconv, _iconv)
-__weak_alias(libiconv_open, _iconv_open)
-__weak_alias(libiconv_open_into, _iconv_open_into)
-__weak_alias(libiconv_close, _iconv_close)
-__weak_alias(libiconvlist, _iconvlist)
-__weak_alias(libiconvctl, _iconvctl)
-__weak_alias(libiconv_set_relocation_prefix, _iconv_set_relocation_prefix)
-__weak_alias(iconv_canonicalize, _iconv_canonicalize)
-#endif
+__weak_reference(libiconv, iconv);
+__weak_reference(libiconv_open, iconv_open);
+__weak_reference(libiconv_open_into, iconv_open_into);
+__weak_reference(libiconv_close, iconv_close);
+__weak_reference(libiconvlist, iconvlist);
+__weak_reference(libiconvctl, iconvctl);
+__weak_reference(libiconv_set_relocation_prefix, iconv_set_relocation_prefix);
 
 #define ISBADF(_h_)	(!(_h_) || (_h_) == (iconv_t)-1)
 
@@ -133,7 +130,7 @@ libiconv_close(iconv_t handle)
 }
 
 size_t
-libiconv(iconv_t handle, char **in, size_t *szin, char **out, size_t *szout)
+libiconv(iconv_t handle, const char **in, size_t *szin, char **out, size_t *szout)
 {
 	size_t ret;
 	int err;
@@ -154,7 +151,7 @@ libiconv(iconv_t handle, char **in, size
 }
 
 size_t
-__iconv(iconv_t handle, char **in, size_t *szin, char **out,
+__iconv(iconv_t handle, const char **in, size_t *szin, char **out,
     size_t *szout, uint32_t flags, size_t *invalids)
 {
 	size_t ret;

Modified: user/attilio/vmcontention/lib/libc/locale/cXXrtomb_iconv.h
==============================================================================
--- user/attilio/vmcontention/lib/libc/locale/cXXrtomb_iconv.h	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libc/locale/cXXrtomb_iconv.h	Wed Jul  3 10:45:39 2013	(r252559)
@@ -57,7 +57,8 @@ cXXrtomb_l(char * __restrict s, charXX_t
 {
 	_ConversionState *cs;
 	struct _citrus_iconv *handle;
-	char *src, *dst;
+	const char *src;
+	char *dst;
 	size_t srcleft, dstleft, invlen;
 	int err;
 

Modified: user/attilio/vmcontention/lib/libc/locale/mbrtocXX_iconv.h
==============================================================================
--- user/attilio/vmcontention/lib/libc/locale/mbrtocXX_iconv.h	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libc/locale/mbrtocXX_iconv.h	Wed Jul  3 10:45:39 2013	(r252559)
@@ -99,7 +99,8 @@ mbrtocXX_l(charXX_t * __restrict pc, con
 
 	/* Convert as few characters to the dst buffer as possible. */
 	for (i = 0; ; i++) {
-		char *src, *dst;
+		const char *src;
+		char *dst;
 		size_t srcleft, dstleft, invlen;
 		int err;
 

Modified: user/attilio/vmcontention/lib/libdwarf/dwarf_init.c
==============================================================================
--- user/attilio/vmcontention/lib/libdwarf/dwarf_init.c	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libdwarf/dwarf_init.c	Wed Jul  3 10:45:39 2013	(r252559)
@@ -192,7 +192,7 @@ dwarf_read_sleb128(Elf_Data **dp, uint64
 		shift += 7;
 	} while ((b & 0x80) != 0);
 
-	if (shift < 32 && (b & 0x40) != 0)
+	if (shift < 64 && (b & 0x40) != 0)
 		ret |= (-1 << shift);
 
 	return ret;

Modified: user/attilio/vmcontention/lib/libdwarf/dwarf_loc.c
==============================================================================
--- user/attilio/vmcontention/lib/libdwarf/dwarf_loc.c	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libdwarf/dwarf_loc.c	Wed Jul  3 10:45:39 2013	(r252559)
@@ -46,7 +46,7 @@ dwarf_decode_sleb128(uint8_t **dp)
 		shift += 7;
 	} while ((b & 0x80) != 0);
 
-	if (shift < 32 && (b & 0x40) != 0)
+	if (shift < 64 && (b & 0x40) != 0)
 		ret |= (-1 << shift);
 
 	*dp = src;

Modified: user/attilio/vmcontention/lib/libstand/nfs.c
==============================================================================
--- user/attilio/vmcontention/lib/libstand/nfs.c	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/lib/libstand/nfs.c	Wed Jul  3 10:45:39 2013	(r252559)
@@ -1465,8 +1465,9 @@ nfs_readdir(struct open_file *f, struct 
 	d->d_name[d->d_namlen] = '\0';
 
 	pos = roundup(d->d_namlen, sizeof(uint32_t)) / sizeof(uint32_t);
-	fp->off = cookie = ((uint64_t)ntohl(rent->nameplus[pos++]) << 32) |
-	    ntohl(rent->nameplus[pos++]);
+	fp->off = cookie = ((uint64_t)ntohl(rent->nameplus[pos]) << 32) |
+	    ntohl(rent->nameplus[pos + 1]);
+	pos += 2;
 	buf = (u_char *)&rent->nameplus[pos];
 	return (0);
 }

Modified: user/attilio/vmcontention/sbin/devd/devd.8
==============================================================================
--- user/attilio/vmcontention/sbin/devd/devd.8	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/sbin/devd/devd.8	Wed Jul  3 10:45:39 2013	(r252559)
@@ -33,7 +33,7 @@
 .Nd "device state change daemon"
 .Sh SYNOPSIS
 .Nm
-.Op Fl Ddn
+.Op Fl dn
 .Op Fl f Ar file
 .Op Fl l Ar num
 .Sh DESCRIPTION
@@ -44,10 +44,8 @@ kernel events happen.
 .Pp
 The following options are accepted.
 .Bl -tag -width ".Fl f Ar file"
-.It Fl D
-Enable debugging messages.
 .It Fl d
-Run in the foreground instead of becoming a daemon.
+Run in the foreground instead of becoming a daemon and log additional information for debugging.
 .It Fl f Ar file
 Use configuration file
 .Ar file

Modified: user/attilio/vmcontention/sbin/devd/devd.cc
==============================================================================
--- user/attilio/vmcontention/sbin/devd/devd.cc	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/sbin/devd/devd.cc	Wed Jul  3 10:45:39 2013	(r252559)
@@ -79,6 +79,7 @@ __FBSDID("$FreeBSD$");
 #include <cstdio>
 #include <csignal>
 #include <cstring>
+#include <cstdarg>
 
 #include <dirent.h>
 #include <err.h>
@@ -87,6 +88,7 @@ __FBSDID("$FreeBSD$");
 #include <paths.h>
 #include <poll.h>
 #include <regex.h>
+#include <syslog.h>
 #include <unistd.h>
 
 #include <algorithm>
@@ -114,13 +116,15 @@ static const char detach = '-';
 
 static struct pidfh *pfh;
 
-int Dflag;
 int dflag;
 int nflag;
+static unsigned total_events = 0;
+static volatile sig_atomic_t got_siginfo = 0;
 static volatile sig_atomic_t romeo_must_die = 0;
 
 static const char *configfile = CF;
 
+static void devdlog(int priority, const char* message, ...);
 static void event_loop(void);
 static void usage(void);
 
@@ -167,7 +171,7 @@ bool
 event_proc::run(config &c) const
 {
 	vector<eps *>::const_iterator i;
-		
+
 	for (i = _epsvec.begin(); i != _epsvec.end(); ++i)
 		if (!(*i)->do_action(c))
 			return (false);
@@ -175,7 +179,7 @@ event_proc::run(config &c) const
 }
 
 action::action(const char *cmd)
-	: _cmd(cmd) 
+	: _cmd(cmd)
 {
 	// nothing
 }
@@ -194,7 +198,7 @@ my_system(const char *command)
 	sigset_t newsigblock, oldsigblock;
 
 	if (!command)		/* just checking... */
-		return(1);
+		return (1);
 
 	/*
 	 * Ignore SIGINT and SIGQUIT, block SIGCHLD. Remember to save
@@ -243,8 +247,7 @@ bool
 action::do_action(config &c)
 {
 	string s = c.expand_string(_cmd.c_str());
-	if (Dflag)
-		fprintf(stderr, "Executing '%s'\n", s.c_str());
+	devdlog(LOG_NOTICE, "Executing '%s'\n", s.c_str());
 	my_system(s.c_str());
 	return (true);
 }
@@ -268,15 +271,22 @@ match::do_match(config &c)
 	const string &value = c.get_variable(_var);
 	bool retval;
 
-	if (Dflag)
-		fprintf(stderr, "Testing %s=%s against %s, invert=%d\n",
+	/*
+	 * This function gets called WAY too often to justify calling syslog()
+	 * each time, even at LOG_DEBUG.  Because if syslogd isn't running, it
+	 * can consume excessive amounts of systime inside of connect().  Only
+	 * log when we're in -d mode.
+	 */
+	if (dflag) {
+		devdlog(LOG_DEBUG, "Testing %s=%s against %s, invert=%d\n",
 		    _var.c_str(), value.c_str(), _re.c_str(), _inv);
+	}
 
 	retval = (regexec(&_regex, value.c_str(), 0, NULL, 0) == 0);
 	if (_inv == 1)
 		retval = (retval == 0) ? 1 : 0;
 
-	return retval;
+	return (retval);
 }
 
 #include <sys/sockio.h>
@@ -322,8 +332,7 @@ media::do_match(config &c)
 	value = c.get_variable("device-name");
 	if (value.empty())
 		value = c.get_variable("subsystem");
-	if (Dflag)
-		fprintf(stderr, "Testing media type of %s against 0x%x\n",
+	devdlog(LOG_DEBUG, "Testing media type of %s against 0x%x\n",
 		    value.c_str(), _type);
 
 	retval = false;
@@ -335,20 +344,18 @@ media::do_match(config &c)
 
 		if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) >= 0 &&
 		    ifmr.ifm_status & IFM_AVALID) {
-			if (Dflag)
-				fprintf(stderr, "%s has media type 0x%x\n", 
+			devdlog(LOG_DEBUG, "%s has media type 0x%x\n",
 				    value.c_str(), IFM_TYPE(ifmr.ifm_active));
 			retval = (IFM_TYPE(ifmr.ifm_active) == _type);
 		} else if (_type == -1) {
-			if (Dflag)
-				fprintf(stderr, "%s has unknown media type\n", 
+			devdlog(LOG_DEBUG, "%s has unknown media type\n",
 				    value.c_str());
 			retval = true;
 		}
 		close(s);
 	}
 
-	return retval;
+	return (retval);
 }
 
 const string var_list::bogus = "_$_$_$_$_B_O_G_U_S_$_$_$_$_";
@@ -374,8 +381,14 @@ var_list::is_set(const string &var) cons
 void
 var_list::set_variable(const string &var, const string &val)
 {
-	if (Dflag)
-		fprintf(stderr, "setting %s=%s\n", var.c_str(), val.c_str());
+	/*
+	 * This function gets called WAY too often to justify calling syslog()
+	 * each time, even at LOG_DEBUG.  Because if syslogd isn't running, it
+	 * can consume excessive amounts of systime inside of connect().  Only
+	 * log when we're in -d mode.
+	 */
+	if (dflag)
+		devdlog(LOG_DEBUG, "setting %s=%s\n", var.c_str(), val.c_str());
 	_vars[var] = val;
 }
 
@@ -393,8 +406,7 @@ config::reset(void)
 void
 config::parse_one_file(const char *fn)
 {
-	if (Dflag)
-		fprintf(stderr, "Parsing %s\n", fn);
+	devdlog(LOG_DEBUG, "Parsing %s\n", fn);
 	yyin = fopen(fn, "r");
 	if (yyin == NULL)
 		err(1, "Cannot open config file %s", fn);
@@ -411,8 +423,7 @@ config::parse_files_in_dir(const char *d
 	struct dirent *dp;
 	char path[PATH_MAX];
 
-	if (Dflag)
-		fprintf(stderr, "Parsing files in %s\n", dirname);
+	devdlog(LOG_DEBUG, "Parsing files in %s\n", dirname);
 	dirp = opendir(dirname);
 	if (dirp == NULL)
 		return;
@@ -460,7 +471,7 @@ void
 config::open_pidfile()
 {
 	pid_t otherpid;
-	
+
 	if (_pidfile.empty())
 		return;
 	pfh = pidfile_open(_pidfile.c_str(), 0600, &otherpid);
@@ -474,21 +485,21 @@ config::open_pidfile()
 void
 config::write_pidfile()
 {
-	
+
 	pidfile_write(pfh);
 }
 
 void
 config::close_pidfile()
 {
-	
+
 	pidfile_close(pfh);
 }
 
 void
 config::remove_pidfile()
 {
-	
+
 	pidfile_remove(pfh);
 }
 
@@ -536,11 +547,10 @@ void
 config::push_var_table()
 {
 	var_list *vl;
-	
+
 	vl = new var_list();
 	_var_list_table.push_back(vl);
-	if (Dflag)
-		fprintf(stderr, "Pushing table\n");
+	devdlog(LOG_DEBUG, "Pushing table\n");
 }
 
 void
@@ -548,8 +558,7 @@ config::pop_var_table()
 {
 	delete _var_list_table.back();
 	_var_list_table.pop_back();
-	if (Dflag)
-		fprintf(stderr, "Popping table\n");
+	devdlog(LOG_DEBUG, "Popping table\n");
 }
 
 void
@@ -573,7 +582,7 @@ config::get_variable(const string &var)
 bool
 config::is_id_char(char ch) const
 {
-	return (ch != '\0' && (isalpha(ch) || isdigit(ch) || ch == '_' || 
+	return (ch != '\0' && (isalpha(ch) || isdigit(ch) || ch == '_' ||
 	    ch == '-'));
 }
 
@@ -589,7 +598,7 @@ config::expand_one(const char *&src, str
 		dst += *src++;
 		return;
 	}
-		
+
 	// $(foo) -> $(foo)
 	// Not sure if I want to support this or not, so for now we just pass
 	// it through.
@@ -606,7 +615,7 @@ config::expand_one(const char *&src, str
 		}
 		return;
 	}
-	
+
 	// $[^A-Za-z] -> $\1
 	if (!isalpha(*src)) {
 		dst += '$';
@@ -657,7 +666,7 @@ bool
 config::chop_var(char *&buffer, char *&lhs, char *&rhs) const
 {
 	char *walker;
-	
+
 	if (*buffer == '\0')
 		return (false);
 	walker = lhs = buffer;
@@ -731,8 +740,7 @@ config::find_and_execute(char type)
 		s = "detach";
 		break;
 	}
-	if (Dflag)
-		fprintf(stderr, "Processing %s event\n", s);
+	devdlog(LOG_DEBUG, "Processing %s event\n", s);
 	for (i = l->begin(); i != l->end(); ++i) {
 		if ((*i)->matches(*this)) {
 			(*i)->run(*this);
@@ -742,7 +750,7 @@ config::find_and_execute(char type)
 
 }
 
-

+
 static void
 process_event(char *buffer)
 {
@@ -750,8 +758,7 @@ process_event(char *buffer)
 	char *sp;
 
 	sp = buffer + 1;
-	if (Dflag)
-		fprintf(stderr, "Processing event '%s'\n", buffer);
+	devdlog(LOG_DEBUG, "Processing event '%s'\n", buffer);
 	type = *buffer++;
 	cfg.push_var_table();
 	// No match doesn't have a device, and the format is a little
@@ -794,7 +801,7 @@ process_event(char *buffer)
 			cfg.set_variable("bus", sp + 3);
 		break;
 	}
-	
+
 	cfg.find_and_execute(type);
 	cfg.pop_var_table();
 }
@@ -843,6 +850,8 @@ notify_clients(const char *data, int len
 			--num_clients;
 			close(*i);
 			i = clients.erase(i);
+			devdlog(LOG_WARNING, "notify_clients: write() failed; "
+			    "dropping unresponsive client\n");
 		} else
 			++i;
 	}
@@ -871,6 +880,8 @@ check_clients(void)
 			--num_clients;
 			close(*i);
 			i = clients.erase(i);
+			devdlog(LOG_NOTICE, "check_clients:  "
+			    "dropping disconnected client\n");
 		} else
 			++i;
 	}
@@ -923,8 +934,7 @@ event_loop(void)
 			rv = select(fd + 1, &fds, &fds, &fds, &tv);
 			// No events -> we've processed all pending events
 			if (rv == 0) {
-				if (Dflag)
-					fprintf(stderr, "Calling daemon\n");
+				devdlog(LOG_DEBUG, "Calling daemon\n");
 				cfg.remove_pidfile();
 				cfg.open_pidfile();
 				daemon(0, 0);
@@ -958,6 +968,11 @@ event_loop(void)
 			tv.tv_usec = 0;
 		}
 		rv = select(max_fd, &fds, NULL, NULL, &tv);
+		if (got_siginfo) {
+			devdlog(LOG_INFO, "Events received so far=%ld\n",
+			    total_events);
+			got_siginfo = 0;
+		}
 		if (rv == -1) {
 			if (errno == EINTR)
 				continue;
@@ -967,6 +982,12 @@ event_loop(void)
 		if (FD_ISSET(fd, &fds)) {
 			rv = read(fd, buffer, sizeof(buffer) - 1);
 			if (rv > 0) {
+				total_events++;
+				if (rv == sizeof(buffer) - 1) {
+					devdlog(LOG_WARNING, "Warning: "
+					    "available event data exceeded "
+					    "buffer space\n");
+				}
 				notify_clients(buffer, rv);
 				buffer[rv] = '\0';
 				while (buffer[--rv] == '\n')
@@ -985,7 +1006,7 @@ event_loop(void)
 	}
 	close(fd);
 }
-

+
 /*
  * functions that the parser uses.
  */
@@ -1070,7 +1091,7 @@ set_variable(const char *var, const char
 	free(const_cast<char *>(val));
 }
 
-

+
 
 static void
 gensighand(int)
@@ -1078,10 +1099,37 @@ gensighand(int)
 	romeo_must_die = 1;
 }
 
+/*
+ * SIGINFO handler.  Will print useful statistics to the syslog or stderr
+ * as appropriate
+ */
+static void
+siginfohand(int)
+{
+	got_siginfo = 1;
+}
+
+/*
+ * Local logging function.  Prints to syslog if we're daemonized; syslog
+ * otherwise.
+ */
+static void
+devdlog(int priority, const char* fmt, ...)
+{
+	va_list argp;
+
+	va_start(argp, fmt);
+	if (dflag)
+		vfprintf(stderr, fmt, argp);
+	else
+		vsyslog(priority, fmt, argp);
+	va_end(argp);
+}
+
 static void
 usage()
 {
-	fprintf(stderr, "usage: %s [-Ddn] [-l connlimit] [-f file]\n",
+	fprintf(stderr, "usage: %s [-dn] [-l connlimit] [-f file]\n",
 	    getprogname());
 	exit(1);
 }
@@ -1111,11 +1159,8 @@ main(int argc, char **argv)
 	int ch;
 
 	check_devd_enabled();
-	while ((ch = getopt(argc, argv, "Ddf:l:n")) != -1) {
+	while ((ch = getopt(argc, argv, "df:l:n")) != -1) {
 		switch (ch) {
-		case 'D':
-			Dflag++;
-			break;
 		case 'd':
 			dflag++;
 			break;
@@ -1143,6 +1188,7 @@ main(int argc, char **argv)
 	signal(SIGHUP, gensighand);
 	signal(SIGINT, gensighand);
 	signal(SIGTERM, gensighand);
+	signal(SIGINFO, siginfohand);
 	event_loop();
 	return (0);
 }

Modified: user/attilio/vmcontention/sbin/dhclient/clparse.c
==============================================================================
--- user/attilio/vmcontention/sbin/dhclient/clparse.c	Wed Jul  3 10:31:45 2013	(r252558)
+++ user/attilio/vmcontention/sbin/dhclient/clparse.c	Wed Jul  3 10:45:39 2013	(r252559)
@@ -642,6 +642,10 @@ parse_client_lease_declaration(FILE *cfi

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-user mailing list