From owner-svn-src-user@FreeBSD.ORG Wed Jul 3 10:45:44 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id D73308EB; Wed, 3 Jul 2013 10:45:44 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id C73681C61; Wed, 3 Jul 2013 10:45:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r63AjiBl029810; Wed, 3 Jul 2013 10:45:44 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r63AjdTN029776; Wed, 3 Jul 2013 10:45:39 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201307031045.r63AjdTN029776@svn.freebsd.org> From: Attilio Rao Date: Wed, 3 Jul 2013 10:45:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: 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/... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jul 2013 10:45:44 -0000 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 -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 #include #include +#include #include #include @@ -87,6 +88,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -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::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 @@ -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(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 ***