PERFORCE change 165911 for review

Edward Tomasz Napierala trasz at FreeBSD.org
Fri Jul 10 19:12:17 UTC 2009


http://perforce.freebsd.org/chv.cgi?CH=165911

Change 165911 by trasz at trasz_victim on 2009/07/10 19:12:12

	IFC.

Affected files ...

.. //depot/projects/soc2009/trasz_limits/MAINTAINERS#3 integrate
.. //depot/projects/soc2009/trasz_limits/bin/ps/ps.1#3 integrate
.. //depot/projects/soc2009/trasz_limits/cddl/contrib/opensolaris/head/thread.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/etc/mtree/BSD.include.dist#4 integrate
.. //depot/projects/soc2009/trasz_limits/include/Makefile#4 integrate
.. //depot/projects/soc2009/trasz_limits/include/unistd.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libc/sys/Makefile.inc#4 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libc/sys/Symbol.map#6 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libc/sys/execve.2#2 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libc/sys/pathconf.2#3 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libcam/Makefile#2 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libthr/thread/thr_rtld.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libthr/thread/thr_rwlock.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libusb/libusb.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libusb/libusb10.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libusb/libusb10.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libusb/libusb10_desc.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libusb/libusb10_io.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sbin/camcontrol/camcontrol.8#2 integrate
.. //depot/projects/soc2009/trasz_limits/sbin/camcontrol/camcontrol.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/share/man/man4/Makefile#6 integrate
.. //depot/projects/soc2009/trasz_limits/share/man/man4/ahci.4#1 branch
.. //depot/projects/soc2009/trasz_limits/share/man/man4/pcm.4#4 integrate
.. //depot/projects/soc2009/trasz_limits/share/man/man5/procfs.5#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/cpu_switch.S#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/exception.S#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/genassym.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/io_apic.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/machdep.c#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/msi.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/pmap.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/sys_machdep.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/vm_machdep.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/ia32/ia32_exception.S#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/ia32/ia32_reg.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/ia32/ia32_signal.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/include/param.h#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/include/pcb.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/linux32/linux32_sysvec.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/arm/include/param.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/bsm/audit_kevents.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/ata/ata_all.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/cam/ata/ata_all.h#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/cam/ata/ata_da.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/cam/ata/ata_xpt.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/cam/cam.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/cam.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/cam_ccb.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/cam_periph.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/cam_xpt.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/cam_xpt.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/cam_xpt_internal.h#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/cam/cam_xpt_periph.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/scsi/scsi_all.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/scsi/scsi_cd.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/scsi/scsi_ch.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/scsi/scsi_da.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/scsi/scsi_pass.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/scsi/scsi_pt.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/scsi/scsi_sa.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/scsi/scsi_ses.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/scsi/scsi_sg.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cam/scsi/scsi_xpt.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/compat/freebsd32/freebsd32_proto.h#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/compat/freebsd32/freebsd32_syscall.h#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/compat/freebsd32/freebsd32_syscalls.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/compat/freebsd32/freebsd32_sysent.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/compat/freebsd32/syscalls.master#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/compat/svr4/svr4_stat.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/conf/files#9 integrate
.. //depot/projects/soc2009/trasz_limits/sys/conf/newvers.sh#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/advansys/advansys.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/advansys/advlib.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ahci/ahci.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/dev/ahci/ahci.h#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/dev/aic7xxx/aic79xx_osm.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/aic7xxx/aic7xxx_osm.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/amd/amd.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ata/atapi-cam.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ata/atapi-cd.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ata/chipsets/ata-ahci.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ata/chipsets/ata-nvidia.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ath/ah_osdep.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ath/ah_osdep.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ciss/ciss.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ciss/cissvar.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/cxgb/cxgb_sge.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/drm/drm_pciids.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/drm/r600_cp.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/drm/radeon_drv.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/e1000_82542.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ipw/if_ipw.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/isp/isp_freebsd.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/iwi/if_iwi.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/iwn/if_iwn.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/mfi/mfi.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/mfi/mfivar.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/mlx/mlx.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/mlx/mlxvar.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/mpt/mpt.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/mpt/mpt_pci.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/mwl/if_mwl.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/mwl/if_mwlvar.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/sound/pcm/feeder_rate.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/trm/trm.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/wpi/if_wpi.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/xl/if_xl.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/fs/fifofs/fifo_vnops.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/fs/nfs/nfs_var.h#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/fs/nfsclient/nfs_clrpcops.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/fs/nfsclient/nfs_clstate.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/geom/geom_dev.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/geom/part/g_part.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/geom/part/g_part_if.m#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/i386/i386/io_apic.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/i386/i386/msi.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/i386/i386/pmap.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/i386/ibcs2/ibcs2_misc.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/i386/include/param.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/i386/xen/pmap.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ia64/include/param.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/init_sysent.c#7 edit
.. //depot/projects/soc2009/trasz_limits/sys/kern/kern_exit.c#9 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/kern_prot.c#15 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/subr_param.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/sys_pipe.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/syscalls.c#6 edit
.. //depot/projects/soc2009/trasz_limits/sys/kern/syscalls.master#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/systrace_args.c#6 edit
.. //depot/projects/soc2009/trasz_limits/sys/kern/tty.c#7 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/tty_pts.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/uipc_socket.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/vfs_syscalls.c#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/mips/include/param.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/modules/Makefile#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/modules/ahci/Makefile#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/modules/cam/Makefile#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/modules/geom/geom_label/Makefile#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/modules/wlan/Makefile#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211.c#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_action.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_action.h#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_adhoc.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_ageq.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_ageq.h#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_freebsd.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_hostap.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_ht.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_ht.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_ioctl.h#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_node.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_node.h#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_sta.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_var.h#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_wds.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/include/param.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sparc64/include/param.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sun4v/include/param.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sys/disk.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sys/hrl.h#22 edit
.. //depot/projects/soc2009/trasz_limits/sys/sys/namei.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sys/socketvar.h#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sys/syscall.h#6 edit
.. //depot/projects/soc2009/trasz_limits/sys/sys/syscall.mk#6 edit
.. //depot/projects/soc2009/trasz_limits/sys/sys/syscallsubr.h#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sys/sysproto.h#6 edit
.. //depot/projects/soc2009/trasz_limits/sys/tools/sound/feeder_rate_mkfilter.awk#3 integrate
.. //depot/projects/soc2009/trasz_limits/tools/regression/usr.bin/jot/regress.dddd.out#1 branch
.. //depot/projects/soc2009/trasz_limits/tools/regression/usr.bin/jot/regress.sh#2 integrate
.. //depot/projects/soc2009/trasz_limits/usr.bin/cpio/cmdline.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/usr.bin/cpio/test/test_owner_parse.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/usr.bin/fstat/fstat.1#2 integrate
.. //depot/projects/soc2009/trasz_limits/usr.bin/jot/jot.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/usr.bin/netstat/netstat.1#3 integrate
.. //depot/projects/soc2009/trasz_limits/usr.bin/sockstat/sockstat.1#2 integrate
.. //depot/projects/soc2009/trasz_limits/usr.sbin/jail/jail.8#5 integrate
.. //depot/projects/soc2009/trasz_limits/usr.sbin/jls/jls.8#3 integrate
.. //depot/projects/soc2009/trasz_limits/usr.sbin/jls/jls.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/usr.sbin/pkg_install/add/perform.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/usr.sbin/ppp/ppp.8.m4#2 integrate
.. //depot/projects/soc2009/trasz_limits/usr.sbin/sysinstall/dispatch.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/usr.sbin/sysinstall/install.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/usr.sbin/sysinstall/menus.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/usr.sbin/sysinstall/sysinstall.h#3 integrate

Differences ...

==== //depot/projects/soc2009/trasz_limits/MAINTAINERS#3 (text+ko) ====

@@ -1,4 +1,4 @@
-$FreeBSD: src/MAINTAINERS,v 1.153 2009/06/24 17:23:10 imp Exp $
+$FreeBSD: src/MAINTAINERS,v 1.154 2009/07/06 11:46:18 flz Exp $
 
 Please note that the content of this file is strictly advisory.
 No locks listed here are valid.  The only strict review requirements
@@ -111,7 +111,7 @@
 rpc		alfred	Pre-commit review requested.
 xfs		kan at FreeBSD.org,rodrigc at FreeBSD.org,cattelan at xfs.org
 			Pre-commit review preferred.
-pkg_install	krion	Pre-commit review or approval from portmgr@ requested.
+pkg_install	portmgr	Pre-commit review or approval from portmgr@ requested.
 linux emul	emulation	Please discuss changes here.
 bs{diff,patch}	cperciva	Pre-commit review requested.
 portsnap	cperciva	Pre-commit review requested.
@@ -123,7 +123,6 @@
 usr.bin/bluetooth	emax	Pre-commit review preferred.
 usr.sbin/bluetooth	emax	Pre-commit review preferred.
 gnu/usr.bin/send-pr	bugmaster	Pre-commit review requested.
-BSD.{local,x11*}.dist	portmgr	Pre-commit review requested, since these files interface with ports.
 ncurses		rafan	Heads-up appreciated, try not to break it.
 
 Following are the entries from the Makefiles, and a few other sources.

==== //depot/projects/soc2009/trasz_limits/bin/ps/ps.1#3 (text+ko) ====

@@ -27,9 +27,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)ps.1	8.3 (Berkeley) 4/18/94
-.\" $FreeBSD: src/bin/ps/ps.1,v 1.91 2009/05/17 04:00:43 brian Exp $
+.\" $FreeBSD: src/bin/ps/ps.1,v 1.92 2009/07/09 16:40:00 trasz Exp $
 .\"
-.Dd May 16, 2009
+.Dd July 9, 2009
 .Dt PS 1
 .Os
 .Sh NAME
@@ -637,6 +637,7 @@
 .Xr kill 1 ,
 .Xr pgrep 1 ,
 .Xr pkill 1 ,
+.Xr procstat 1 ,
 .Xr w 1 ,
 .Xr kvm 3 ,
 .Xr strftime 3 ,

==== //depot/projects/soc2009/trasz_limits/cddl/contrib/opensolaris/head/thread.h#2 (text+ko) ====

@@ -53,7 +53,6 @@
 #define	mutex_lock(l)		pthread_mutex_lock(l)
 #define	mutex_trylock(l)	pthread_mutex_trylock(l)
 #define	mutex_unlock(l)		pthread_mutex_unlock(l)
-#define	mutex_owned(l)		pthread_mutex_isowned_np(l)
 #define	rwlock_init(l,f,a)	pthread_rwlock_init(l,NULL)
 #define	rwlock_destroy(l)	pthread_rwlock_destroy(l)
 #define	rw_rdlock(l)		pthread_rwlock_rdlock(l)

==== //depot/projects/soc2009/trasz_limits/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c#2 (text+ko) ====

@@ -115,6 +115,14 @@
 	mp->initialized = B_FALSE;
 }
 
+int
+zmutex_owned(kmutex_t *mp)
+{
+	ASSERT(mp->initialized == B_TRUE);
+
+	return (mp->m_owner == curthread);
+}
+
 void
 mutex_enter(kmutex_t *mp)
 {

==== //depot/projects/soc2009/trasz_limits/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h#2 (text+ko) ====

@@ -237,9 +237,11 @@
 
 #define	mutex_init(mp, b, c, d)		zmutex_init((kmutex_t *)(mp))
 #define	mutex_destroy(mp)		zmutex_destroy((kmutex_t *)(mp))
+#define	mutex_owned(mp)			zmutex_owned((kmutex_t *)(mp))
 
 extern void zmutex_init(kmutex_t *mp);
 extern void zmutex_destroy(kmutex_t *mp);
+extern int zmutex_owned(kmutex_t *mp);
 extern void mutex_enter(kmutex_t *mp);
 extern void mutex_exit(kmutex_t *mp);
 extern int mutex_tryenter(kmutex_t *mp);

==== //depot/projects/soc2009/trasz_limits/etc/mtree/BSD.include.dist#4 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/etc/mtree/BSD.include.dist,v 1.130 2009/05/27 16:16:56 thompsa Exp $
+# $FreeBSD: src/etc/mtree/BSD.include.dist,v 1.131 2009/07/10 08:18:08 scottl Exp $
 #
 # Please see the file src/etc/mtree/README before making changes to this file.
 #
@@ -78,6 +78,8 @@
         ..
     ..
     cam
+        ata
+        ..
         scsi
         ..
     ..

==== //depot/projects/soc2009/trasz_limits/include/Makefile#4 (text+ko) ====

@@ -1,5 +1,5 @@
 #	@(#)Makefile	8.2 (Berkeley) 1/4/94
-# $FreeBSD: src/include/Makefile,v 1.289 2009/05/27 16:16:56 thompsa Exp $
+# $FreeBSD: src/include/Makefile,v 1.290 2009/07/10 08:18:08 scottl Exp $
 #
 # Doing a "make install" builds /usr/include.
 
@@ -38,7 +38,7 @@
 	nfs nfsclient nfsserver \
 	sys vm
 
-LSUBDIRS=	cam/scsi \
+LSUBDIRS=	cam/ata cam/scsi \
 	dev/acpica dev/an dev/bktr dev/firewire dev/hwpmc \
 	dev/ic dev/iicbus ${_dev_ieee488} dev/lmc dev/ofw \
 	dev/pbio ${_dev_powermac_nvram} dev/ppbus dev/smbus \

==== //depot/projects/soc2009/trasz_limits/include/unistd.h#3 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)unistd.h	8.12 (Berkeley) 4/27/95
- * $FreeBSD: src/include/unistd.h,v 1.94 2009/06/15 20:38:55 jhb Exp $
+ * $FreeBSD: src/include/unistd.h,v 1.95 2009/07/08 15:23:18 trasz Exp $
  */
 
 #ifndef _UNISTD_H_
@@ -513,6 +513,7 @@
 int	 iruserok(unsigned long, int, const char *, const char *);
 int	 iruserok_sa(const void *, int, int, const char *, const char *);
 int	 issetugid(void);
+long	 lpathconf(const char *, int);
 #ifndef _MKDTEMP_DECLARED
 char	*mkdtemp(char *);
 #define	_MKDTEMP_DECLARED

==== //depot/projects/soc2009/trasz_limits/lib/libc/sys/Makefile.inc#4 (text+ko) ====

@@ -1,5 +1,5 @@
 #	@(#)Makefile.inc	8.3 (Berkeley) 10/24/94
-# $FreeBSD: src/lib/libc/sys/Makefile.inc,v 1.140 2009/06/24 21:10:52 jhb Exp $
+# $FreeBSD: src/lib/libc/sys/Makefile.inc,v 1.141 2009/07/08 15:23:18 trasz Exp $
 
 # sys sources
 .PATH: ${.CURDIR}/${MACHINE_ARCH}/sys ${.CURDIR}/sys
@@ -159,6 +159,7 @@
 MLINKS+=ntp_adjtime.2 ntp_gettime.2
 MLINKS+=open.2 openat.2
 MLINKS+=pathconf.2 fpathconf.2
+MLINKS+=pathconf.2 lpathconf.2
 MLINKS+=read.2 pread.2 read.2 preadv.2 read.2 readv.2
 MLINKS+=readlink.2 readlinkat.2
 MLINKS+=recv.2 recvfrom.2 recv.2 recvmsg.2

==== //depot/projects/soc2009/trasz_limits/lib/libc/sys/Symbol.map#6 (text) ====

@@ -1,5 +1,5 @@
 /*
- * $FreeBSD: src/lib/libc/sys/Symbol.map,v 1.26 2009/06/29 01:33:59 kan Exp $
+ * $FreeBSD: src/lib/libc/sys/Symbol.map,v 1.27 2009/07/08 15:23:18 trasz Exp $
  */
 
 /*
@@ -346,6 +346,7 @@
 	jail_set;
 	jail_remove;
 	linkat;
+	lpathconf;
 	mkdirat;
 	mkfifoat;
 	mknodat;

==== //depot/projects/soc2009/trasz_limits/lib/libc/sys/execve.2#2 (text+ko) ====

@@ -26,7 +26,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)execve.2	8.5 (Berkeley) 6/1/94
-.\" $FreeBSD: src/lib/libc/sys/execve.2,v 1.42 2008/08/26 10:53:32 kib Exp $
+.\" $FreeBSD: src/lib/libc/sys/execve.2,v 1.43 2009/07/05 20:20:09 pjd Exp $
 .\"
 .Dd April 10, 2008
 .Dt EXECVE 2
@@ -220,13 +220,11 @@
 .Fn fexecve ,
 the file descriptor
 .Fa fd
-need not have been
-opened with the
+need not have been opened with the
 .Dv O_EXEC
 flag.
-However, if the file to be executed denies read and write
-permission for the process preparing to do the exec, the only way to
-provide the
+However, if the file to be executed denies read permission for the process
+preparing to do the exec, the only way to provide the
 .Fa fd
 to
 .Fn fexecve
@@ -234,6 +232,7 @@
 .Dv O_EXEC
 flag when opening
 .Fa fd .
+Note that the file to be executed can not be open for writing.
 .Sh RETURN VALUES
 As the
 .Fn execve
@@ -277,7 +276,7 @@
 permission, but has an invalid magic number in its header.
 .It Bq Er ETXTBSY
 The new process file is a pure procedure (shared text)
-file that is currently open for writing or reading by some process.
+file that is currently open for writing by some process.
 .It Bq Er ENOMEM
 The new process requires more virtual memory than
 is allowed by the imposed maximum

==== //depot/projects/soc2009/trasz_limits/lib/libc/sys/pathconf.2#3 (text+ko) ====

@@ -26,13 +26,14 @@
 .\" SUCH DAMAGE.
 .\"
 .\"	@(#)pathconf.2	8.1 (Berkeley) 6/4/93
-.\" $FreeBSD: src/lib/libc/sys/pathconf.2,v 1.23 2009/06/25 12:53:50 trasz Exp $
+.\" $FreeBSD: src/lib/libc/sys/pathconf.2,v 1.24 2009/07/08 15:23:18 trasz Exp $
 .\"
-.Dd June 25, 2009
+.Dd July 7, 2009
 .Dt PATHCONF 2
 .Os
 .Sh NAME
 .Nm pathconf ,
+.Nm lpathconf ,
 .Nm fpathconf
 .Nd get configurable pathname variables
 .Sh LIBRARY
@@ -42,10 +43,13 @@
 .Ft long
 .Fn pathconf "const char *path" "int name"
 .Ft long
+.Fn lpathconf "const char *path" "int name"
+.Ft long
 .Fn fpathconf "int fd" "int name"
 .Sh DESCRIPTION
 The
-.Fn pathconf
+.Fn pathconf ,
+.Fn lpathconf
 and
 .Fn fpathconf
 system calls provide a method for applications to determine the current
@@ -53,7 +57,9 @@
 with a pathname or file descriptor.
 .Pp
 For
-.Fn pathconf ,
+.Fn pathconf
+and
+.Fn lpathconf ,
 the
 .Fa path
 argument is the name of a file or directory.
@@ -68,6 +74,18 @@
 Symbolic constants for each name value are found in the include file
 .Li <unistd.h> .
 .Pp
+The
+.Fn lpathconf
+system call is like
+.Fn pathconf
+except in the case where the named file is a symbolic link,
+in which case
+.Fn lpathconf
+returns information about the link,
+while
+.Fn pathconf
+returns information about the file the link references.
+.Pp
 The available values are as follows:
 .Pp
 .Bl -tag -width 6n
@@ -239,3 +257,7 @@
 .Fn fpathconf
 system calls first appeared in
 .Bx 4.4 .
+The
+.Fn lpathconf
+system call first appeared in
+.Fx 8.0 .

==== //depot/projects/soc2009/trasz_limits/lib/libcam/Makefile#2 (text+ko) ====

@@ -1,8 +1,9 @@
-# $FreeBSD: src/lib/libcam/Makefile,v 1.12 2004/02/05 22:44:22 ru Exp $
+# $FreeBSD: src/lib/libcam/Makefile,v 1.13 2009/07/10 08:18:08 scottl Exp $
 
 LIB=		cam
 SHLIBDIR?=	/lib
-SRCS=		camlib.c scsi_cmdparse.c scsi_all.c scsi_da.c scsi_sa.c cam.c
+SRCS=		camlib.c scsi_cmdparse.c scsi_all.c scsi_da.c scsi_sa.c cam.c \
+		ata_all.c
 INCS=		camlib.h
 
 DPADD=		${LIBSBUF}
@@ -34,7 +35,8 @@
 		cam_cdbparse.3 csio_encode_visit.3 \
 		cam_cdbparse.3 buff_encode_visit.3
 
-.PATH:		${.CURDIR}/../../sys/cam/scsi ${.CURDIR}/../../sys/cam
+.PATH:		${.CURDIR}/../../sys/cam/scsi ${.CURDIR}/../../sys/cam/ata \
+		${.CURDIR}/../../sys/cam
 
 SDIR=		${.CURDIR}/../../sys
 CFLAGS+=	-I${.CURDIR} -I${SDIR}

==== //depot/projects/soc2009/trasz_limits/lib/libthr/thread/thr_rtld.c#2 (text) ====

@@ -23,7 +23,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libthr/thread/thr_rtld.c,v 1.11 2009/04/19 23:02:50 rwatson Exp $
+ * $FreeBSD: src/lib/libthr/thread/thr_rtld.c,v 1.12 2009/07/06 09:31:04 attilio Exp $
  *
  */
 
@@ -114,6 +114,7 @@
 	THR_CRITICAL_ENTER(curthread);
 	while (_thr_rwlock_rdlock(&l->lock, 0, NULL) != 0)
 		;
+	curthread->rdlock_count++;
 	RESTORE_ERRNO();
 }
 
@@ -148,6 +149,7 @@
 	
 	state = l->lock.rw_state;
 	if (_thr_rwlock_unlock(&l->lock) == 0) {
+		curthread->rdlock_count--;
 		if ((state & URWLOCK_WRITE_OWNER) == 0) {
 			THR_CRITICAL_LEAVE(curthread);
 		} else {

==== //depot/projects/soc2009/trasz_limits/lib/libthr/thread/thr_rwlock.c#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libthr/thread/thr_rwlock.c,v 1.15 2008/04/14 08:08:40 davidxu Exp $
+ * $FreeBSD: src/lib/libthr/thread/thr_rwlock.c,v 1.16 2009/07/06 09:31:04 attilio Exp $
  */
 
 #include <errno.h>
@@ -177,10 +177,11 @@
 		/* if interrupted, try to lock it in userland again. */
 		if (_thr_rwlock_tryrdlock(&prwlock->lock, flags) == 0) {
 			ret = 0;
-			curthread->rdlock_count++;
 			break;
 		}
 	}
+	if (ret == 0)
+		curthread->rdlock_count++;
 	return (ret);
 }
 

==== //depot/projects/soc2009/trasz_limits/lib/libusb/libusb.h#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/lib/libusb/libusb.h,v 1.7 2009/06/23 01:04:58 thompsa Exp $ */
+/* $FreeBSD: src/lib/libusb/libusb.h,v 1.8 2009/07/10 14:15:53 thompsa Exp $ */
 /*-
  * Copyright (c) 2009 Sylvestre Gallon. All rights reserved.
  *
@@ -27,14 +27,16 @@
 #ifndef __LIBUSB_H__
 #define	__LIBUSB_H__
 
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/endian.h>
+#include <sys/queue.h>
+
 #include <stdint.h>
 #include <time.h>
 #include <string.h>
 #include <pthread.h>
 
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/endian.h>
 
 #ifdef __cplusplus
 extern	"C" {
@@ -44,10 +46,6 @@
 
 #endif
 
-struct list_head {
-	struct list_head *prev, *next;
-};
-
 /* libusb enums */
 
 enum libusb_class_code {
@@ -183,6 +181,33 @@
 	LIBUSB_DEBUG_TRANSFER=2,
 };
 
+/* internal structures */
+
+typedef struct libusb_pollfd {
+	int	fd;
+	short	events;
+}	libusb_pollfd;
+
+struct usb_pollfd {
+	TAILQ_ENTRY(usb_pollfd) list;
+	struct libusb_pollfd pollfd;
+};
+
+struct usb_transfer {
+	TAILQ_ENTRY(usb_transfer) list;
+	int num_iso_packets;
+	struct timeval timeout;
+	int transferred;
+	uint8_t flags;
+};
+
+struct usb_ep_tr {
+	TAILQ_ENTRY(usb_ep_tr) list;
+	uint8_t addr;
+	uint8_t idx;
+	uint8_t flags;
+	void *os_priv;
+};
 /* libusb structures */
 
 typedef void (*libusb_pollfd_added_cb) (int fd, short events, void *user_data);
@@ -194,16 +219,16 @@
 
 	int	ctrl_pipe[2];
 
-	struct list_head usb_devs;
+	TAILQ_HEAD(usb_devs_list, libusb_device) usb_devs;
 	pthread_mutex_t usb_devs_lock;
 
-	struct list_head open_devs;
+	TAILQ_HEAD(open_devs_list, libusb_device_handle) open_devs;
 	pthread_mutex_t open_devs_lock;
 
-	struct list_head flying_transfers;
+	TAILQ_HEAD(flying_transfers_list, usb_transfer) flying_transfers;
 	pthread_mutex_t flying_transfers_lock;
 
-	struct list_head pollfds;
+	TAILQ_HEAD(pollfds_list, usb_pollfd) pollfds;
 	pthread_mutex_t pollfds_lock;
 
 	unsigned int pollfd_modify;
@@ -230,7 +255,7 @@
 	uint8_t	device_address;
 	uint8_t	num_configurations;
 
-	struct list_head list;
+	TAILQ_ENTRY(libusb_device) list;
 	unsigned long session_data;
 	void   *os_priv;
 }	libusb_device;
@@ -239,9 +264,10 @@
 	pthread_mutex_t lock;
 	unsigned long claimed_interfaces;
 
-	struct list_head list;
+	TAILQ_ENTRY(libusb_device_handle) list;
 	struct libusb_device *dev;
 	void   *os_priv;
+	TAILQ_HEAD(ep_list, usb_ep_tr) ep_list; 
 }	libusb_device_handle;
 
 typedef struct libusb_device_descriptor {
@@ -343,11 +369,6 @@
 	struct libusb_iso_packet_descriptor iso_packet_desc[0];
 }	libusb_transfer __aligned(sizeof(void *));
 
-typedef struct libusb_pollfd {
-	int	fd;
-	short	events;
-}	libusb_pollfd;
-
 /* Library initialisation */
 
 void	libusb_set_debug(libusb_context * ctx, int level);
@@ -360,6 +381,7 @@
 void	libusb_free_device_list(libusb_device ** list, int unref_devices);
 uint8_t	libusb_get_bus_number(libusb_device * dev);
 uint8_t	libusb_get_device_address(libusb_device * dev);
+int	libusb_clear_halt(libusb_device_handle *devh, unsigned char endpoint);
 int	libusb_get_max_packet_size(libusb_device * dev, unsigned char endpoint);
 libusb_device *libusb_ref_device(libusb_device * dev);
 void	libusb_unref_device(libusb_device * dev);

==== //depot/projects/soc2009/trasz_limits/lib/libusb/libusb10.c#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/lib/libusb/libusb10.c,v 1.1 2009/06/23 01:04:58 thompsa Exp $ */
+/* $FreeBSD: src/lib/libusb/libusb10.c,v 1.2 2009/07/10 14:15:53 thompsa Exp $ */
 /*-
  * Copyright (c) 2009 Sylvestre Gallon. All rights reserved.
  *
@@ -75,8 +75,8 @@
 
 	pthread_mutex_init(&ctx->usb_devs_lock, NULL);
 	pthread_mutex_init(&ctx->open_devs_lock, NULL);
-	USB_LIST_INIT(&ctx->usb_devs);
-	USB_LIST_INIT(&ctx->open_devs);
+	TAILQ_INIT(&ctx->usb_devs);
+	TAILQ_INIT(&ctx->open_devs);
 
 	pthread_mutex_init(&ctx->flying_transfers_lock, NULL);
 	pthread_mutex_init(&ctx->pollfds_lock, NULL);
@@ -85,8 +85,8 @@
 	pthread_mutex_init(&ctx->event_waiters_lock, NULL);
 	pthread_cond_init(&ctx->event_waiters_cond, NULL);
 
-	USB_LIST_INIT(&ctx->flying_transfers);
-	USB_LIST_INIT(&ctx->pollfds);
+	TAILQ_INIT(&ctx->flying_transfers);
+	TAILQ_INIT(&ctx->pollfds);
 
 	ret = pipe(ctx->ctrl_pipe);
 	if (ret < 0) {
@@ -123,7 +123,7 @@
 {
 	GET_CONTEXT(ctx);
 
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_exit enter");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_exit enter");
 	usb_remove_pollfd(ctx, ctx->ctrl_pipe[0]);
 	close(ctx->ctrl_pipe[0]);
 	close(ctx->ctrl_pipe[1]);
@@ -135,7 +135,7 @@
 	pthread_mutex_unlock(&default_context_lock);
 
 	free(ctx);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_exit leave");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_exit leave");
 }
 
 /* Device handling and initialisation. */
@@ -150,7 +150,7 @@
 	int i;
 
 	GET_CONTEXT(ctx);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_list enter");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_list enter");
 
 	usb_backend = libusb20_be_alloc_default();
 	if (usb_backend == NULL)
@@ -178,6 +178,10 @@
 		ddesc = libusb20_dev_get_device_desc(pdev);
 		dev = malloc(sizeof(*dev));
 		if (dev == NULL) {
+			while (i != 0) {
+				libusb_unref_device((*list)[i - 1]);
+				i--;
+			}
 			free(*list);
 			libusb20_be_free(usb_backend);
 			return (LIBUSB_ERROR_NO_MEM);
@@ -194,7 +198,7 @@
 		dev->os_priv = pdev;
 
 		pthread_mutex_lock(&ctx->usb_devs_lock);
-		LIST_ADD(&dev->list, &ctx->usb_devs);
+		TAILQ_INSERT_HEAD(&ctx->usb_devs, dev, list);
 		pthread_mutex_unlock(&ctx->usb_devs_lock);
 
 		(*list)[i] = libusb_ref_device(dev);
@@ -203,7 +207,7 @@
 	(*list)[i] = NULL;
 
 	libusb20_be_free(usb_backend);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_list leave");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_list leave");
 	return (i);
 }
 
@@ -219,7 +223,7 @@
 
 	ctx = NULL;
 	GET_CONTEXT(ctx);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_free_device_list enter");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_free_device_list enter");
 
 	if (list == NULL)
 		return ;
@@ -229,7 +233,7 @@
 			libusb_unref_device(list[i]);
 	}
 	free(list);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_free_device_list leave");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_free_device_list leave");
 }
 
 uint8_t
@@ -239,11 +243,11 @@
 
 	ctx = NULL;
 	GET_CONTEXT(ctx);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_bus_number enter");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_bus_number enter");
 
 	if (dev == NULL)
 		return (LIBUSB_ERROR_NO_DEVICE);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_bus_number leave");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_bus_number leave");
 	return (dev->bus_number);
 }
 
@@ -254,11 +258,11 @@
 
 	ctx = NULL;
 	GET_CONTEXT(ctx);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_address enter");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_address enter");
 
 	if (dev == NULL)
 		return (LIBUSB_ERROR_NO_DEVICE);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_address leave");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_address leave");
 	return (dev->device_address);
 }
 
@@ -274,7 +278,7 @@
 
 	ctx = NULL;
 	GET_CONTEXT(ctx);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_max_packet_size enter");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_max_packet_size enter");
 
 	if (dev == NULL)
 		return (LIBUSB_ERROR_NO_DEVICE);
@@ -299,7 +303,7 @@
 
 out:
 	libusb_free_config_descriptor(pdconf);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_max_packet_size leave");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_max_packet_size leave");
 	return (ret);
 }
 
@@ -310,7 +314,7 @@
 
 	ctx = NULL;
 	GET_CONTEXT(ctx);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_ref_device enter");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_ref_device enter");
 
 	if (dev == NULL)
 		return (NULL);
@@ -319,7 +323,7 @@
 	dev->refcnt++;
 	pthread_mutex_unlock(&dev->lock);
 
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_ref_device leave");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_ref_device leave");
 	return (dev);
 }
 
@@ -330,7 +334,7 @@
 
 	ctx = NULL;
 	GET_CONTEXT(ctx);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_unref_device enter");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_unref_device enter");
 
 	if (dev == NULL)
 		return;
@@ -341,13 +345,13 @@
 
 	if (dev->refcnt == 0) {
 		pthread_mutex_lock(&dev->ctx->usb_devs_lock);
-		LIST_DEL(&dev->list);
+		TAILQ_REMOVE(&ctx->usb_devs, dev, list);
 		pthread_mutex_unlock(&dev->ctx->usb_devs_lock);
 
 		libusb20_dev_free(dev->os_priv);
 		free(dev);
 	}
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_unref_device leave");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_unref_device leave");
 }
 
 int
@@ -360,7 +364,7 @@
 	int err;
 
 	GET_CONTEXT(ctx);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open enter");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open enter");
 
 	dummy = 1;
 	if (devh == NULL)
@@ -378,6 +382,7 @@
 	memset(hdl, 0, sizeof(*hdl));
 	pthread_mutex_init(&hdl->lock, NULL);
 
+	TAILQ_INIT(&hdl->ep_list);
 	hdl->dev = libusb_ref_device(dev);
 	hdl->claimed_interfaces = 0;
 	hdl->os_priv = dev->os_priv;
@@ -390,7 +395,7 @@
 	}
 
 	pthread_mutex_lock(&ctx->open_devs_lock);
-	LIST_ADD(&hdl->list, &ctx->open_devs);
+	TAILQ_INSERT_HEAD(&ctx->open_devs, hdl, list);
 	pthread_mutex_unlock(&ctx->open_devs_lock);
 
 	*devh = hdl;
@@ -414,7 +419,7 @@
 	pthread_mutex_unlock(&ctx->pollfd_modify_lock);
 	libusb_unlock_events(ctx);
 
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open leave");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open leave");
 	return (0);
 }
 
@@ -429,7 +434,7 @@
 	int i, j;
 
 	GET_CONTEXT(ctx);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open_device_width_vid_pid enter");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open_device_width_vid_pid enter");
 
 	devh = NULL;
 
@@ -440,13 +445,15 @@
 		pdev = (struct libusb20_device *)devs[j]->os_priv;
 		pdesc = libusb20_dev_get_device_desc(pdev);
 		if (pdesc->idVendor == vendor_id &&
-		    pdesc->idProduct == product_id)
+		    pdesc->idProduct == product_id) {
 			if (libusb_open(devs[j], &devh) < 0)
 				devh = NULL;
+			break ;
+		}
 	}
 
 	libusb_free_device_list(devs, 1);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open_device_width_vid_pid leave");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open_device_width_vid_pid leave");
 	return (devh);
 }
 
@@ -455,6 +462,7 @@
 {
 	libusb_context *ctx;
 	struct libusb20_device *pdev;
+	struct usb_ep_tr *eptr;
 	unsigned char dummy = 1;
 	int err;
 
@@ -465,7 +473,7 @@
 	pdev = devh->os_priv;
 
 	GET_CONTEXT(ctx);
-	dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_close enter");
+	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_close enter");
 
 	pthread_mutex_lock(&ctx->pollfd_modify_lock);
 	ctx->pollfd_modify++;
@@ -475,12 +483,21 @@
 	
 	if (err <= 0) {
 		pthread_mutex_lock(&ctx->open_devs_lock);
-		LIST_DEL(&devh->list);
+		TAILQ_REMOVE(&ctx->open_devs, devh, list);
 		pthread_mutex_unlock(&ctx->open_devs_lock);
 
 		usb_remove_pollfd(ctx, libusb20_dev_get_fd(pdev));
+		libusb20_dev_close(pdev);
 		libusb_unref_device(devh->dev);
-		libusb20_dev_close(pdev);
+		TAILQ_FOREACH(eptr, &devh->ep_list, list) {

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


More information about the p4-projects mailing list