Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Dec 2004 02:01:19 GMT
From:      David Xu <davidxu@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 67325 for review
Message-ID:  <200412190201.iBJ21JJj005934@repoman.freebsd.org>

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

Change 67325 by davidxu@davidxu_tiger on 2004/12/19 02:01:14

	IPC

Affected files ...

.. //depot/projects/davidxu_thread/src/Makefile#3 integrate
.. //depot/projects/davidxu_thread/src/Makefile.inc1#4 integrate
.. //depot/projects/davidxu_thread/src/UPDATING#3 integrate
.. //depot/projects/davidxu_thread/src/UPDATING.64BTT#2 delete
.. //depot/projects/davidxu_thread/src/contrib/groff/tmac/doc-common#2 integrate
.. //depot/projects/davidxu_thread/src/etc/defaults/rc.conf#4 integrate
.. //depot/projects/davidxu_thread/src/etc/mtree/BSD.include.dist#2 integrate
.. //depot/projects/davidxu_thread/src/etc/rc.d/jail#3 integrate
.. //depot/projects/davidxu_thread/src/etc/rc.d/named#2 integrate
.. //depot/projects/davidxu_thread/src/etc/rc.d/ppp-user#2 integrate
.. //depot/projects/davidxu_thread/src/etc/rc.shutdown#2 integrate
.. //depot/projects/davidxu_thread/src/gnu/usr.bin/groff/tmac/mdoc.local#2 integrate
.. //depot/projects/davidxu_thread/src/installworld_newk#2 delete
.. //depot/projects/davidxu_thread/src/installworld_oldk#2 delete
.. //depot/projects/davidxu_thread/src/lib/libc/gen/sigsetops.3#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/pthread.map#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/sys/thr_error.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_cancel.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_clean.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_concurrency.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_cond.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_create.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_fork.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_init.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_kern.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_mutex.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_once.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_private.h#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_sem.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_sig.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_sigsuspend.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_spinlock.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libthread/Makefile#4 edit
.. //depot/projects/davidxu_thread/src/lib/libthread/sys/lock.h#3 edit
.. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_cond.c#3 edit
.. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_fork.c#3 edit
.. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_init.c#3 edit
.. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_kern.c#3 edit
.. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_mutex.c#3 edit
.. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_private.h#5 edit
.. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_pspinlock.c#3 edit
.. //depot/projects/davidxu_thread/src/lib/libutil/_secure_path.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/msun/bsdsrc/b_exp.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/msun/bsdsrc/b_log.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/msun/bsdsrc/b_tgamma.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/msun/bsdsrc/mathimpl.h#2 integrate
.. //depot/projects/davidxu_thread/src/libexec/ftpd/ftpd.c#3 integrate
.. //depot/projects/davidxu_thread/src/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#4 integrate
.. //depot/projects/davidxu_thread/src/release/doc/share/misc/dev.archlist.txt#4 integrate
.. //depot/projects/davidxu_thread/src/release/doc/share/misc/man2hwnotes.pl#2 integrate
.. //depot/projects/davidxu_thread/src/rescue/rescue/Makefile#3 integrate
.. //depot/projects/davidxu_thread/src/sbin/atm/atmconfig/Makefile#2 integrate
.. //depot/projects/davidxu_thread/src/sbin/mknod/mknod.8#2 integrate
.. //depot/projects/davidxu_thread/src/share/examples/etc/make.conf#2 integrate
.. //depot/projects/davidxu_thread/src/share/examples/ppp/ppp.conf.isdn#2 integrate
.. //depot/projects/davidxu_thread/src/share/examples/ppp/ppp.conf.sample#2 integrate
.. //depot/projects/davidxu_thread/src/share/examples/ppp/ppp.conf.span-isp#2 integrate
.. //depot/projects/davidxu_thread/src/share/examples/ppp/ppp.conf.span-isp.working#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/Makefile#4 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/aac.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/acpi.4#3 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/altq.4#3 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/ath.4#3 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/atkbd.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/bge.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/divert.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/firewire.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/fwe.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/fwip.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/fwohci.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/man4.sparc64/Makefile#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/man4.sparc64/snd_audiocs.4#1 branch
.. //depot/projects/davidxu_thread/src/share/man/man4/mpt.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/netgraph.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/ng_bt3c.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/ng_netflow.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/polling.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/pst.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/smp.4#3 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/snd_maestro.4#1 branch
.. //depot/projects/davidxu_thread/src/share/man/man4/snd_maestro3.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/ti.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/txp.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/ubser.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/umass.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/vpo.4#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man5/make.conf.5#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man5/rc.conf.5#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man7/hier.7#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man7/ports.7#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man7/release.7#2 integrate
.. //depot/projects/davidxu_thread/src/share/man/man9/Makefile#4 integrate
.. //depot/projects/davidxu_thread/src/share/man/man9/kernel_mount.9#1 branch
.. //depot/projects/davidxu_thread/src/share/misc/bsd-family-tree#2 integrate
.. //depot/projects/davidxu_thread/src/sys/alpha/alpha/pmap.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/amd64/amd64/pmap.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/arm/arm/intr.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/arm/arm/pmap.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/arm/arm/swtch.S#4 integrate
.. //depot/projects/davidxu_thread/src/sys/arm/conf/SIMICS#2 integrate
.. //depot/projects/davidxu_thread/src/sys/arm/include/atomic.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/arm/sa11x0/assabet_machdep.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/arm/sa11x0/sa11x0_irqhandler.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/files.amd64#3 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/files.i386#4 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/files.pc98#3 integrate
.. //depot/projects/davidxu_thread/src/sys/contrib/ipfilter/netinet/fil.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/contrib/ipfilter/netinet/ip_nat.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/aac/aac_pci.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpi_support/acpi_asus.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpi_support/acpi_ibm.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpi_support/acpi_panasonic.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpi_support/acpi_sony.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpi_support/acpi_toshiba.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpica/acpi_pci_link.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpica/acpivar.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ath/ath_rate/amrr/amrr.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ath/ath_rate/onoe/onoe.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ath/if_ath.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/bge/if_bge.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/bge/if_bgereg.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/bktr/bktr_card.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/bktr/bktr_card.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/bktr/bktr_tuner.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/bktr/bktr_tuner.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/bktr/msp34xx.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/cp/if_cp.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ctau/if_ct.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/cx/if_cx.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/drm/drm_sysctl.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/fb/vga.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ida/ida.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ida/ida_pci.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ida/idavar.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/kbd/atkbd.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/kbd/atkbdreg.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/mpt/mpt_pci.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/mse/mse.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/mse/mse_cbus.c#1 branch
.. //depot/projects/davidxu_thread/src/sys/dev/mse/mse_isa.c#1 branch
.. //depot/projects/davidxu_thread/src/sys/dev/mse/msevar.h#1 branch
.. //depot/projects/davidxu_thread/src/sys/dev/twe/twe.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/twe/tweio.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/ehci.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/ohci.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/ugen.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/uhid.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/ukbd.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/umodem.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/ums.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/uplcom.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/urio.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/usb.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/usbdevs#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/usbdi.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/uscanner.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/wi/if_wi.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/fs/devfs/devfs_vnops.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/fs/fifofs/fifo_vnops.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/fs/ntfs/ntfs_vfsops.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/geom/bde/g_bde_lock.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/geom/raid3/g_raid3.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/gnu/ext2fs/ext2_vnops.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/i386/pmap.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/isa/mse.c#2 delete
.. //depot/projects/davidxu_thread/src/sys/i386/pci/pci_cfgreg.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/ia64/ia64/pmap.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/init_sysent.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_descrip.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_exec.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_fork.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_sig.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_subr.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_switch.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_thread.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/sched_4bsd.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/sched_ule.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/subr_disk.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/syscalls.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/syscalls.master#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/uipc_mbuf.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/vfs_mount.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/modules/Makefile#3 integrate
.. //depot/projects/davidxu_thread/src/sys/modules/acpi/acpi_asus/Makefile#2 integrate
.. //depot/projects/davidxu_thread/src/sys/modules/acpi/acpi_ibm/Makefile#2 integrate
.. //depot/projects/davidxu_thread/src/sys/modules/mse/Makefile#1 branch
.. //depot/projects/davidxu_thread/src/sys/modules/wlan_ccmp/Makefile#2 integrate
.. //depot/projects/davidxu_thread/src/sys/net/bpf.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/net/if_sppp.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/net/if_spppsubr.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/net80211/ieee80211_crypto_ccmp.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/net80211/ieee80211_crypto_tkip.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/net80211/ieee80211_freebsd.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/netgraph/ng_bridge.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/nfsclient/nfs.h#3 integrate
.. //depot/projects/davidxu_thread/src/sys/nfsclient/nfs_bio.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/nfsclient/nfs_nfsiod.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/nfsclient/nfs_vfsops.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/nfsclient/nfs_vnops.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/nfsclient/nfsnode.h#3 integrate
.. //depot/projects/davidxu_thread/src/sys/pc98/pc98/mse.c#2 delete
.. //depot/projects/davidxu_thread/src/sys/powerpc/powerpc/pmap.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/sparc64/sparc64/pmap.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/bio.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/filedesc.h#3 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/mouse.h#3 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/param.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/syscall.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/syscall.mk#2 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/sysproto.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/umtx.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/tools/vnode_if.awk#3 integrate
.. //depot/projects/davidxu_thread/src/sys/ufs/ffs/ffs_vnops.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/ufs/ufs/ufs_extattr.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/ufs/ufs/ufs_vnops.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/vm/vm_fault.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/vm/vm_map.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/vm/vm_meter.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/vm/vm_object.c#3 integrate
.. //depot/projects/davidxu_thread/src/tools/tools/kttcp/kttcp.c#2 integrate
.. //depot/projects/davidxu_thread/src/tools/tools/kttcp/sys/kttcp.c#2 integrate
.. //depot/projects/davidxu_thread/src/tools/tools/nanobsd/Customize/comconsole#2 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/calendar/calendars/calendar.freebsd#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/calendar/calendars/calendar.music#2 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/calendar/calendars/de_DE.ISO8859-1/calendar.musik#2 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/Makefile#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/arch.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/compat.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/cond.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/dir.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/dir.h#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/for.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/job.c#4 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/lst.h#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/lst.lib/lstConcat.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/lst.lib/lstDestroy.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/lst.lib/lstDupl.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/lst.lib/lstInit.c#3 delete
.. //depot/projects/davidxu_thread/src/usr.bin/make/main.c#4 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/make.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/make.h#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/nonints.h#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/parse.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/str.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/suff.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/targ.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/var.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/rev/rev.c#2 integrate
.. //depot/projects/davidxu_thread/src/usr.sbin/boot0cfg/boot0cfg.c#2 integrate
.. //depot/projects/davidxu_thread/src/usr.sbin/burncd/burncd.c#2 integrate
.. //depot/projects/davidxu_thread/src/usr.sbin/config/config.8#2 integrate
.. //depot/projects/davidxu_thread/src/usr.sbin/fwcontrol/fwcontrol.8#2 integrate
.. //depot/projects/davidxu_thread/src/usr.sbin/lpr/lpd/printjob.c#2 integrate
.. //depot/projects/davidxu_thread/src/usr.sbin/ppp/command.c#3 integrate
.. //depot/projects/davidxu_thread/src/usr.sbin/ppp/lcp.c#2 integrate
.. //depot/projects/davidxu_thread/src/usr.sbin/ppp/lcp.h#2 integrate
.. //depot/projects/davidxu_thread/src/usr.sbin/ppp/lqr.c#2 integrate
.. //depot/projects/davidxu_thread/src/usr.sbin/ppp/ppp.8.m4#3 integrate
.. //depot/projects/davidxu_thread/src/usr.sbin/pppctl/pppctl.c#2 integrate

Differences ...

==== //depot/projects/davidxu_thread/src/Makefile#3 (text+ko) ====

@@ -1,5 +1,5 @@
 #
-# $FreeBSD: src/Makefile,v 1.311 2004/12/07 14:41:16 harti Exp $
+# $FreeBSD: src/Makefile,v 1.313 2004/12/16 19:55:57 ru Exp $
 #
 # The user-driven targets are:
 #
@@ -86,9 +86,9 @@
 
 PATH=	/sbin:/bin:/usr/sbin:/usr/bin
 MAKEOBJDIRPREFIX?=	/usr/obj
-_MAKEOBJDIRPREFIX!= /usr/bin/env -i \
-		PATH=${PATH} MAKEFLAGS="${.MAKEFLAGS}" ${MAKE} \
-		-f /dev/null -V MAKEOBJDIRPREFIX dummy
+_MAKEOBJDIRPREFIX!= /usr/bin/env -i PATH=${PATH} ${MAKE} \
+    ${.MAKEFLAGS:MMAKEOBJDIRPREFIX=*} \
+    -f /dev/null -V MAKEOBJDIRPREFIX dummy
 .if !empty(_MAKEOBJDIRPREFIX)
 .error MAKEOBJDIRPREFIX can only be set in environment, not as a global\
 	(in /etc/make.conf) or command-line variable.

==== //depot/projects/davidxu_thread/src/Makefile.inc1#4 (text+ko) ====

@@ -1,5 +1,5 @@
 #
-# $FreeBSD: src/Makefile.inc1,v 1.459 2004/12/01 23:23:14 peter Exp $
+# $FreeBSD: src/Makefile.inc1,v 1.460 2004/12/17 10:11:33 ru Exp $
 #
 # Make command line options:
 #	-DNO_DYNAMICROOT do not link /bin and /sbin dynamically
@@ -27,7 +27,7 @@
 # The intended user-driven targets are:
 # buildworld  - rebuild *everything*, including glue to help do upgrades
 # installworld- install everything built by "buildworld"
-# update      - convenient way to update your source tree (eg: sup/cvs)
+# update      - convenient way to update your source tree (eg: cvsup/cvs)
 #
 # Standard targets (not defined here) are documented in the makefiles in
 # /usr/share/mk.  These include:
@@ -739,7 +739,7 @@
 #
 # update
 #
-# Update the source tree, by running sup and/or running cvs to update to the
+# Update the source tree, by running cvsup and/or running cvs to update to the
 # latest copy.
 #
 update:
@@ -765,7 +765,7 @@
 .endif
 .if defined(CVS_UPDATE)
 	@echo "--------------------------------------------------------------"
-	@echo ">>> Updating ${.CURDIR} from cvs repository" ${CVSROOT}
+	@echo ">>> Updating ${.CURDIR} from CVS repository" ${CVSROOT}
 	@echo "--------------------------------------------------------------"
 	cd ${.CURDIR}; ${CVS} -R -q update ${CVSFLAGS}
 .endif

==== //depot/projects/davidxu_thread/src/UPDATING#3 (text+ko) ====

@@ -23,6 +23,13 @@
 	developers choose to disable these features on build machines
 	to maximize performance.
 
+20041213:
+	The behaviour of ppp(8) has changed slightly.  If lqr is enabled
+	(``enable lqr''), older versions would revert to LCP ECHO mode on
+	negotiation failure.  Now, ``enable echo'' is required for this
+	behaviour.  The ppp version number has been bumped to 3.4.2 to
+	reflect the change.
+
 20041201:
 	The wlan support has been updated to split the crypto support
 	into separate modules.  For static WEP you must configure the
@@ -1977,4 +1984,4 @@
 Contact Warner Losh if you have any questions about your use of
 this document.
 
-$FreeBSD: src/UPDATING,v 1.382 2004/12/12 07:22:16 obrien Exp $
+$FreeBSD: src/UPDATING,v 1.383 2004/12/13 17:52:10 brian Exp $

==== //depot/projects/davidxu_thread/src/contrib/groff/tmac/doc-common#2 (text+ko) ====


==== //depot/projects/davidxu_thread/src/etc/defaults/rc.conf#4 (text+ko) ====

@@ -13,7 +13,7 @@
 #
 # All arguments must be in double or single quotes.
 #
-# $FreeBSD: src/etc/defaults/rc.conf,v 1.233 2004/12/01 22:05:50 rees Exp $
+# $FreeBSD: src/etc/defaults/rc.conf,v 1.235 2004/12/15 12:39:28 brian Exp $
 
 ##############################################################
 ###  Important initial Boot-time options  ####################
@@ -146,6 +146,7 @@
 
 # User ppp configuration.
 ppp_enable="NO"		# Start user-ppp (or NO).
+ppp_program="/usr/sbin/ppp"	# Path to user-ppp program.
 ppp_mode="auto"		# Choice of "auto", "ddial", "direct" or "dedicated".
 			# For details see man page for ppp(8). Default is auto.
 ppp_nat="YES"		# Use PPP's internal network address translation or NO.
@@ -493,7 +494,8 @@
 #jail_example_rootdir="/usr/jail/default"	# Jail's root directory
 #jail_example_hostname="default.domain.com"	# Jail's hostname
 #jail_example_ip="192.168.0.10"			# Jail's IP number
-#jail_example_exec="/bin/sh /etc/rc"		# command to execute in jail
+#jail_example_exec_start="/bin/sh /etc/rc"		# command to execute in jail for starting
+#jail_example_exec_stop="/bin/sh /etc/rc.shutdown"	# command to execute in jail for stopping
 #jail_example_devfs_enable="NO"			# mount devfs in the jail
 #jail_example_fdescfs_enable="NO"		# mount fdescfs in the jail
 #jail_example_procfs_enable="NO"		# mount procfs in jail

==== //depot/projects/davidxu_thread/src/etc/mtree/BSD.include.dist#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/etc/mtree/BSD.include.dist,v 1.93 2004/09/27 08:18:43 dougb Exp $
+# $FreeBSD: src/etc/mtree/BSD.include.dist,v 1.94 2004/12/15 13:58:28 pjd Exp $
 #
 # Please see the file src/etc/mtree/README before making changes to this file.
 #
@@ -54,8 +54,6 @@
         ..
     ..
     fs
-        autofs
-        ..
         devfs
         ..
         fdescfs

==== //depot/projects/davidxu_thread/src/etc/rc.d/jail#3 (text+ko) ====

@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $FreeBSD: src/etc/rc.d/jail,v 1.19 2004/11/24 10:44:39 mux Exp $
+# $FreeBSD: src/etc/rc.d/jail,v 1.20 2004/12/14 14:36:35 rse Exp $
 #
 
 # PROVIDE: jail
@@ -34,7 +34,21 @@
 	eval jail_hostname=\"\$jail_${_j}_hostname\"
 	eval jail_ip=\"\$jail_${_j}_ip\"
 	eval jail_exec=\"\$jail_${_j}_exec\"
-	[ -z "${jail_exec}" ] && jail_exec="/bin/sh /etc/rc"
+	eval jail_exec_start=\"\$jail_${_j}_exec_start\"
+	eval jail_exec_stop=\"\$jail_${_j}_exec_stop\"
+	if [ -n "${jail_exec}" ]; then
+		#   simple/backward-compatible execution
+		jail_exec_start="${jail_exec}"
+		jail_exec_stop=""
+	else
+		#   flexible execution
+		if [ -z "${jail_exec_start}" ]; then
+			jail_exec_start="/bin/sh /etc/rc"
+			if [ -z "${jail_exec_stop}" ]; then
+				jail_exec_stop="/bin/sh /etc/rc.shutdown"
+			fi
+		fi
+	fi
 
 	# The default jail ruleset will be used by rc.subr if none is specified.
 	eval jail_ruleset=\"\$jail_${_j}_devfs_ruleset\"
@@ -65,6 +79,8 @@
 	debug "$_j procdir: $jail_procdir"
 	debug "$_j ruleset: $jail_ruleset"
 	debug "$_j fstab: $jail_fstab"
+	debug "$_j exec start: $jail_exec_start"
+	debug "$_j exec stop: $jail_exec_stop"
 }
 
 # set_sysctl rc_knob mib msg
@@ -177,8 +193,8 @@
 			fi
 		fi
 		_tmp_jail=${_tmp_dir}/jail.$$
-		jail -i ${jail_rootdir} ${jail_hostname} \
-			${jail_ip} ${jail_exec} > ${_tmp_jail} 2>&1
+		eval jail -l -U root -i ${jail_rootdir} ${jail_hostname} \
+			${jail_ip} ${jail_exec_start} > ${_tmp_jail} 2>&1
 		[ "$?" -eq 0 ] && echo -n " $jail_hostname"
 		_jail_id=$(head -1 ${_tmp_jail})
 		tail +2 ${_tmp_jail} >${jail_rootdir}/var/log/console.log
@@ -198,7 +214,13 @@
 			_jail_id=$(cat /var/run/jail_${_jail}.id)
 			if [ ! -z "${_jail_id}" ]; then
 				init_variables $_jail
+				if [ -n "${jail_exec_stop}" ]; then
+					eval env -i /usr/sbin/jexec ${_jail_id} ${jail_exec_stop} \
+						>> ${jail_rootdir}/var/log/console.log 2>&1
+				fi
 				killall -j ${_jail_id} -TERM > /dev/null 2>&1
+				sleep 1
+				killall -j ${_jail_id} -KILL > /dev/null 2>&1
 				jail_umount_fs
 				echo -n " $jail_hostname"
 			fi

==== //depot/projects/davidxu_thread/src/etc/rc.d/named#2 (text+ko) ====

@@ -1,7 +1,7 @@
 #!/bin/sh
 #
 # $NetBSD: named,v 1.10 2002/03/22 04:33:59 thorpej Exp $
-# $FreeBSD: src/etc/rc.d/named,v 1.16 2004/10/07 13:55:26 mtm Exp $
+# $FreeBSD: src/etc/rc.d/named,v 1.17 2004/12/18 15:19:36 phk Exp $
 #
 
 # PROVIDE: named
@@ -48,6 +48,10 @@
 		else
 			ln -s ${named_chrootdir}/etc/namedb /etc/namedb
 		fi
+	else
+		# Make sure it points to the right place.
+		ln -sf ${named_chrootdir}/etc/namedb /etc/namedb
+
 	fi
 
 	# Mount a devfs in the chroot directory if needed

==== //depot/projects/davidxu_thread/src/etc/rc.d/ppp-user#2 (text+ko) ====

@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $FreeBSD: src/etc/rc.d/ppp-user,v 1.6 2004/10/07 13:55:26 mtm Exp $
+# $FreeBSD: src/etc/rc.d/ppp-user,v 1.7 2004/12/15 12:39:28 brian Exp $
 #
 
 # PROVIDE: ppp-user
@@ -10,11 +10,11 @@
 . /etc/rc.subr
 
 name="ppp"
-rcvar="ppp_enable"
-start_cmd="ppp_start"
-stop_cmd=":"
+rcvar=`set_rcvar`
+start_precmd="ppp_precmd"
+start_postcmd="ppp_postcmd"
 
-ppp_start()
+ppp_precmd()
 {
 	# Establish ppp mode.
 	#
@@ -24,21 +24,21 @@
 		ppp_mode="auto"
 	fi
 
-	ppp_command="/usr/sbin/ppp -quiet -${ppp_mode}"
+	rc_flags="$rc_flags -quiet -${ppp_mode}"
 
 	# Switch on NAT mode?
 	#
 	case ${ppp_nat} in
 	[Yy][Ee][Ss])
-		ppp_command="${ppp_command} -nat"
+		rc_flags="$rc_flags -nat"
 		;;
 	esac
 
-	ppp_command="${ppp_command} ${ppp_profile}"
+	rc_flags="$rc_flags ${ppp_profile}"
+}
 
-	echo "Starting ppp as \"${ppp_user}\""
-	su -m ${ppp_user} -c "exec ${ppp_command}"
-
+ppp_postcmd()
+{
 	# Re-Sync ipfilter so it picks up any new network interfaces
 	#
 	/etc/rc.d/ipfilter resync

==== //depot/projects/davidxu_thread/src/etc/rc.shutdown#2 (text+ko) ====

@@ -24,7 +24,7 @@
 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 #
-# $FreeBSD: src/etc/rc.shutdown,v 1.29 2004/10/17 13:39:42 schweikh Exp $
+# $FreeBSD: src/etc/rc.shutdown,v 1.30 2004/12/14 14:36:35 rse Exp $
 #
 
 # Site-specific closing actions for daemons run by init on shutdown,
@@ -80,7 +80,9 @@
 # Determine the shutdown order of the /etc/rc.d scripts,
 # and perform the operation
 #
-files=`rcorder -k shutdown /etc/rc.d/* 2>/dev/null`
+rcorder_opts="-k shutdown"
+[ `/sbin/sysctl -n security.jail.jailed` -eq 1 ] && rcorder_opts="$rcorder_opts -s nojail"
+files=`rcorder ${rcorder_opts} /etc/rc.d/* 2>/dev/null`
 
 for _rc_elem in `reverse_list $files`; do
 	debug "run_rc_script $_rc_elem faststop"

==== //depot/projects/davidxu_thread/src/gnu/usr.bin/groff/tmac/mdoc.local#2 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/gnu/usr.bin/groff/tmac/mdoc.local,v 1.42 2004/08/19 10:41:54 ru Exp $
+.\" $FreeBSD: src/gnu/usr.bin/groff/tmac/mdoc.local,v 1.44 2004/12/18 07:20:33 ru Exp $
 .\"
 .\"     %beginstrip%
 .
@@ -60,9 +60,9 @@
 .ds doc-default-operating-system FreeBSD\~6.0
 .
 .\" FreeBSD releases not found in doc-common
-.\" .ds doc-operating-system-FreeBSD-4.11   4.11
-.\" .ds doc-operating-system-FreeBSD-5.4    5.4
-.\" .ds doc-operating-system-FreeBSD-6.0    6.0
+.ds doc-operating-system-FreeBSD-4.11   4.11
+.ds doc-operating-system-FreeBSD-5.4    5.4
+.ds doc-operating-system-FreeBSD-6.0    6.0
 .
 .ec
 .

==== //depot/projects/davidxu_thread/src/lib/libc/gen/sigsetops.3#2 (text+ko) ====

@@ -30,9 +30,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)sigsetops.3	8.1 (Berkeley) 6/4/93
-.\" $FreeBSD: src/lib/libc/gen/sigsetops.3,v 1.8 2003/06/24 15:27:31 yar Exp $
+.\" $FreeBSD: src/lib/libc/gen/sigsetops.3,v 1.9 2004/12/16 20:27:55 maxim Exp $
 .\"
-.Dd June 4, 1993
+.Dd December 16, 2004
 .Dt SIGSETOPS 3
 .Os
 .Sh NAME
@@ -92,21 +92,24 @@
 function returns whether a specified signal
 .Fa signo
 is contained in the signal set.
-.Pp
-These functions
-are provided as macros in the include file <signal.h>.
-Actual functions are available
-if their names are undefined (with
-.Ic #undef Ar name ) .
 .Sh RETURN VALUES
 The
 .Fn sigismember
 function returns 1
 if the signal is a member of the set,
 0 otherwise.
-The other functions return 0.
+The other functions return 0 upon success.
+A \-1 return value
+indicates an error occurred and the global variable
+.Va errno
+is set to indicate the reason.
 .Sh ERRORS
-Currently no errors are detected.
+These functions could fail if one of the following occurs:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+.Fa signo
+has an invalid value.
+.El
 .Sh SEE ALSO
 .Xr kill 2 ,
 .Xr sigaction 2 ,

==== //depot/projects/davidxu_thread/src/lib/libpthread/pthread.map#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/lib/libpthread/pthread.map,v 1.13 2004/09/26 06:50:14 deischen Exp $
+# $FreeBSD: src/lib/libpthread/pthread.map,v 1.14 2004/12/18 18:07:36 deischen Exp $
 LIBTHREAD_1_0 {
 global:
 	___creat;
@@ -14,6 +14,7 @@
 	__poll;
 	__pthread_cond_timedwait;
 	__pthread_cond_wait;
+	__pthread_mutex_init;
 	__pthread_mutex_lock;
 	__pthread_mutex_trylock;
 	__pthread_mutex_timedlock;

==== //depot/projects/davidxu_thread/src/lib/libpthread/sys/thr_error.c#2 (text+ko) ====

@@ -31,12 +31,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libpthread/sys/thr_error.c,v 1.7 2003/04/23 21:46:50 deischen Exp $
+ * $FreeBSD: src/lib/libpthread/sys/thr_error.c,v 1.8 2004/12/18 18:07:37 deischen Exp $
  */
 #include <pthread.h>
 #include "libc_private.h"
 #include "thr_private.h"
 
+#undef errno
 extern	int	errno;
 
 int *

==== //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_cancel.c#2 (text+ko) ====

@@ -1,6 +1,6 @@
 /*
  * David Leonard <d@openbsd.org>, 1999. Public domain.
- * $FreeBSD: src/lib/libpthread/thread/thr_cancel.c,v 1.31 2003/12/09 02:20:56 davidxu Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_cancel.c,v 1.32 2004/12/18 18:07:37 deischen Exp $
  */
 #include <sys/errno.h>
 #include <pthread.h>
@@ -14,18 +14,26 @@
 static inline int
 checkcancel(struct pthread *curthread)
 {
-	if (((curthread->cancelflags & PTHREAD_CANCEL_DISABLE) == 0) &&
-	    ((curthread->cancelflags & THR_CANCELLING) != 0)) {
+	if ((curthread->cancelflags & THR_CANCELLING) != 0) {
 		/*
 		 * It is possible for this thread to be swapped out
 		 * while performing cancellation; do not allow it
 		 * to be cancelled again.
 		 */
-		curthread->cancelflags &= ~THR_CANCELLING;
-		return (1);
+		if ((curthread->flags & THR_FLAGS_EXITING) != 0) {
+			/*
+			 * This may happen once, but after this, it
+			 * shouldn't happen again.
+			 */
+			curthread->cancelflags &= ~THR_CANCELLING;
+			return (0);
+		}
+		if ((curthread->cancelflags & PTHREAD_CANCEL_DISABLE) == 0) {
+			curthread->cancelflags &= ~THR_CANCELLING;
+			return (1);
+		}
 	}
-	else
-		return (0);
+	return (0);
 }
 
 static inline void

==== //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_clean.c#2 (text+ko) ====

@@ -29,7 +29,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libpthread/thread/thr_clean.c,v 1.8 2003/04/18 05:04:15 deischen Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_clean.c,v 1.9 2004/12/18 18:07:37 deischen Exp $
  */
 #include <signal.h>
 #include <errno.h>
@@ -50,6 +50,7 @@
 	    malloc(sizeof(struct pthread_cleanup))) != NULL) {
 		new->routine = routine;
 		new->routine_arg = routine_arg;
+		new->onstack = 0;
 		new->next = curthread->cleanup;
 
 		curthread->cleanup = new;
@@ -67,6 +68,7 @@
 		if (execute) {
 			old->routine(old->routine_arg);
 		}
-		free(old);
+		if (old->onstack == 0)
+			free(old);
 	}
 }

==== //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_concurrency.c#2 (text+ko) ====

@@ -24,7 +24,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libpthread/thread/thr_concurrency.c,v 1.8 2004/03/14 05:24:27 bde Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_concurrency.c,v 1.9 2004/12/18 18:07:37 deischen Exp $
  */
 #include <errno.h>
 #include <pthread.h>
@@ -84,6 +84,13 @@
 	int i;
 	int ret;
 
+	/*
+	 * Turn on threaded mode, if failed, it is unnecessary to
+	 * do further work.
+	 */
+	if (_kse_isthreaded() == 0 && _kse_setthreaded(1))
+		return (EAGAIN);
+
 	ret = 0;
 	curthread = _get_curthread();
 	/* Race condition, but so what. */

==== //depot/projects/davidxu_thread/src/lib/libpthread/thread/thr_cond.c#2 (text+ko) ====

@@ -29,7 +29,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libpthread/thread/thr_cond.c,v 1.51 2003/12/09 02:20:56 davidxu Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_cond.c,v 1.52 2004/12/18 18:07:37 deischen Exp $
  */
 #include <stdlib.h>
 #include <errno.h>
@@ -47,6 +47,9 @@
 static inline struct pthread	*cond_queue_deq(pthread_cond_t);
 static inline void		cond_queue_remove(pthread_cond_t, pthread_t);
 static inline void		cond_queue_enq(pthread_cond_t, pthread_t);
+static void			cond_wait_backout(void *);
+static inline void		check_continuation(struct pthread *,
+				    struct pthread_cond *, pthread_mutex_t *);
 
 /*
  * Double underscore versions are cancellation points.  Single underscore
@@ -171,8 +174,7 @@
 	struct pthread	*curthread = _get_curthread();
 	int	rval = 0;
 	int	done = 0;
-	int	interrupted = 0;
-	int	unlock_mutex = 1;
+	int	mutex_locked = 1;
 	int	seqno;
 
 	if (cond == NULL)
@@ -198,10 +200,11 @@
 	 * and backed out of the waiting queue prior to executing the
 	 * signal handler.
 	 */
+
+	/* Lock the condition variable structure: */
+	THR_LOCK_ACQUIRE(curthread, &(*cond)->c_lock);
+	seqno = (*cond)->c_seqno;
 	do {
-		/* Lock the condition variable structure: */
-		THR_LOCK_ACQUIRE(curthread, &(*cond)->c_lock);
-
 		/*
 		 * If the condvar was statically allocated, properly
 		 * initialize the tail queue.
@@ -217,9 +220,6 @@
 		case COND_TYPE_FAST:
 			if ((mutex == NULL) || (((*cond)->c_mutex != NULL) &&
 			    ((*cond)->c_mutex != *mutex))) {
-				/* Unlock the condition variable structure: */
-				THR_LOCK_RELEASE(curthread, &(*cond)->c_lock);
-
 				/* Return invalid argument error: */
 				rval = EINVAL;
 			} else {
@@ -233,15 +233,11 @@
 				 */
 				cond_queue_enq(*cond, curthread);
 
-				/* Remember the mutex and sequence number: */
-				(*cond)->c_mutex = *mutex;
-				seqno = (*cond)->c_seqno;
-
 				/* Wait forever: */
 				curthread->wakeup_time.tv_sec = -1;
 
 				/* Unlock the mutex: */
-				if ((unlock_mutex != 0) &&
+				if (mutex_locked &&
 				    ((rval = _mutex_cv_unlock(mutex)) != 0)) {
 					/*
 					 * Cannot unlock the mutex, so remove
@@ -249,22 +245,18 @@
 					 * variable queue:
 					 */
 					cond_queue_remove(*cond, curthread);
-
-					/* Check for no more waiters: */
-					if (TAILQ_FIRST(&(*cond)->c_queue) == NULL)
-						(*cond)->c_mutex = NULL;
-
-					/* Unlock the condition variable structure: */
-					THR_LOCK_RELEASE(curthread, &(*cond)->c_lock);
 				}
 				else {
+					/* Remember the mutex: */
+					(*cond)->c_mutex = *mutex;
+
 					/*
 					 * Don't unlock the mutex the next
 					 * time through the loop (if the
 					 * thread has to be requeued after
 					 * handling a signal).
 					 */
-					unlock_mutex = 0;
+					mutex_locked = 0;
 
 					/*
 					 * This thread is active and is in a
@@ -277,6 +269,7 @@
 
 					/* Remember the CV: */
 					curthread->data.cond = *cond;
+					curthread->sigbackout = cond_wait_backout;
 					THR_SCHED_UNLOCK(curthread, curthread);
 
 					/* Unlock the CV structure: */
@@ -286,8 +279,6 @@
 					/* Schedule the next thread: */
 					_thr_sched_switch(curthread);
 
-					curthread->data.cond = NULL;
-
 					/*
 					 * XXX - This really isn't a good check
 					 * since there can be more than one
@@ -299,60 +290,61 @@
 					 * should be sent "as soon as possible".
 					 */
 					done = (seqno != (*cond)->c_seqno);
-
-					if (THR_IN_SYNCQ(curthread)) {
+					if (done && !THR_IN_CONDQ(curthread)) {
 						/*
-						 * Lock the condition variable
-						 * while removing the thread.
+						 * The thread is dequeued, so
+						 * it is safe to clear these.
 						 */
-						THR_LOCK_ACQUIRE(curthread,
-						    &(*cond)->c_lock);
+						curthread->data.cond = NULL;
+						curthread->sigbackout = NULL;
+						check_continuation(curthread,
+						    NULL, mutex);
+						return (_mutex_cv_lock(mutex));
+					}
+
+					/* Relock the CV structure: */
+					THR_LOCK_ACQUIRE(curthread,
+					    &(*cond)->c_lock);
+
+					/*
+					 * Clear these after taking the lock to
+					 * prevent a race condition where a
+					 * signal can arrive before dequeueing
+					 * the thread.
+					 */
+					curthread->data.cond = NULL;
+					curthread->sigbackout = NULL;
+					done = (seqno != (*cond)->c_seqno);
 
+					if (THR_IN_CONDQ(curthread)) {
 						cond_queue_remove(*cond,
 						    curthread);
 
 						/* Check for no more waiters: */
 						if (TAILQ_FIRST(&(*cond)->c_queue) == NULL)
 							(*cond)->c_mutex = NULL;
-
-						THR_LOCK_RELEASE(curthread,
-						    &(*cond)->c_lock);
 					}
-
-					/*
-					 * Save the interrupted flag; locking
-					 * the mutex may destroy it.
-					 */
-					interrupted = curthread->interrupted;
-
-					/*
-					 * Note that even though this thread may
-					 * have been canceled, POSIX requires
-					 * that the mutex be reaquired prior to
-					 * cancellation.
-					 */
-					if (done || interrupted) {
-						rval = _mutex_cv_lock(mutex);
-						unlock_mutex = 1;
-					}
 				}
 			}
 			break;
 
 		/* Trap invalid condition variable types: */
 		default:
-			/* Unlock the condition variable structure: */
-			THR_LOCK_RELEASE(curthread, &(*cond)->c_lock);
-
 			/* Return an invalid argument error: */
 			rval = EINVAL;
 			break;
 		}
 
-		if ((interrupted != 0) && (curthread->continuation != NULL))
-			curthread->continuation((void *) curthread);
+		check_continuation(curthread, *cond,
+		    mutex_locked ? NULL : mutex);
 	} while ((done == 0) && (rval == 0));
 
+	/* Unlock the condition variable structure: */
+	THR_LOCK_RELEASE(curthread, &(*cond)->c_lock);
+
+	if (mutex_locked == 0)
+		_mutex_cv_lock(mutex);
+
 	/* Return the completion status: */
 	return (rval);
 }
@@ -378,8 +370,7 @@
 	struct pthread	*curthread = _get_curthread();
 	int	rval = 0;
 	int	done = 0;
-	int	interrupted = 0;
-	int	unlock_mutex = 1;
+	int	mutex_locked = 1;
 	int	seqno;
 
 	THR_ASSERT(curthread->locklevel == 0,
@@ -407,10 +398,11 @@
 	 * and backed out of the waiting queue prior to executing the

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



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