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