PERFORCE change 180544 for review

Edward Tomasz Napierala trasz at FreeBSD.org
Tue Jul 6 17:35:01 UTC 2010


http://p4web.freebsd.org/@@180544?ac=10

Change 180544 by trasz at trasz_victim on 2010/07/06 17:34:45

	IFC.

Affected files ...

.. //depot/projects/soc2009/trasz_limits/ObsoleteFiles.inc#20 integrate
.. //depot/projects/soc2009/trasz_limits/bin/sh/expand.c#9 integrate
.. //depot/projects/soc2009/trasz_limits/bin/sh/jobs.c#6 integrate
.. //depot/projects/soc2009/trasz_limits/bin/sh/jobs.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/bin/sh/parser.c#12 integrate
.. //depot/projects/soc2009/trasz_limits/bin/sh/sh.1#12 integrate
.. //depot/projects/soc2009/trasz_limits/gnu/usr.bin/gdb/libgdb/fbsd-threads.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/include/arpa/inet.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libc/gmon/gmon.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libc/net/sctp_recvmsg.3#5 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libc/net/sctp_send.3#5 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libc/net/sctp_sys_calls.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/acl_from_text.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libfetch/http.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libthread_db/Symbol.map#2 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libthread_db/libpthread_db.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libthread_db/libthr_db.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libthread_db/thread_db.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libthread_db/thread_db.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/lib/libthread_db/thread_db_int.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sbin/bsdlabel/bsdlabel.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sbin/camcontrol/camcontrol.8#7 integrate
.. //depot/projects/soc2009/trasz_limits/sbin/fsck_ffs/suj.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sbin/geom/class/multipath/geom_multipath.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sbin/mca/mca.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sbin/reboot/boot_i386.8#2 integrate
.. //depot/projects/soc2009/trasz_limits/share/man/man4/Makefile#20 integrate
.. //depot/projects/soc2009/trasz_limits/share/man/man4/ata.4#5 integrate
.. //depot/projects/soc2009/trasz_limits/share/man/man4/bwi.4#2 integrate
.. //depot/projects/soc2009/trasz_limits/share/man/man4/siftr.4#1 branch
.. //depot/projects/soc2009/trasz_limits/share/man/man9/Makefile#14 integrate
.. //depot/projects/soc2009/trasz_limits/share/man/man9/alloc_unr.9#3 integrate
.. //depot/projects/soc2009/trasz_limits/share/man/man9/vm_page_alloc.9#3 integrate
.. //depot/projects/soc2009/trasz_limits/share/misc/committers-doc.dot#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/intr_machdep.c#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/machdep.c#17 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/ia32/ia32_signal.c#7 integrate
.. //depot/projects/soc2009/trasz_limits/sys/amd64/include/segments.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/arm/arm/machdep.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/cddl/contrib/opensolaris/uts/common/sys/fasttrap_impl.h#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/cddl/contrib/opensolaris/uts/sparc/dtrace/fasttrap_isa.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/compat/freebsd32/freebsd32_misc.c#10 integrate
.. //depot/projects/soc2009/trasz_limits/sys/compat/freebsd32/freebsd32_signal.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/conf/files#30 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ata/ata-all.c#12 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ata/ata-all.h#8 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ata/ata-card.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ata/ata-disk.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/bge/if_bge.c#15 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/e1000_82575.h#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/e1000_api.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/e1000_api.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/e1000_hw.h#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/e1000_mbx.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/e1000_mbx.h#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/e1000_regs.h#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/e1000_vf.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/e1000_vf.h#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/if_igb.c#17 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/if_igb.h#7 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ixgbe/ixgbe.c#12 integrate
.. //depot/projects/soc2009/trasz_limits/sys/dev/ixgbe/ixgbe.h#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/i386/i386/intr_machdep.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/i386/i386/machdep.c#15 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ia64/ia64/machdep.c#11 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ia64/ia64/mca.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ia64/ia64/mp_machdep.c#11 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ia64/include/asm.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ia64/include/mca.h#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ia64/include/profile.h#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/kern_context.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/kern_exec.c#15 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/kern_sig.c#12 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/subr_sleepqueue.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/subr_trap.c#7 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/subr_unit.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/sys_process.c#10 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/tty.c#11 integrate
.. //depot/projects/soc2009/trasz_limits/sys/kern/vfs_bio.c#11 integrate
.. //depot/projects/soc2009/trasz_limits/sys/mips/include/pte.h#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/mips/mips/pm_machdep.c#7 integrate
.. //depot/projects/soc2009/trasz_limits/sys/mips/mips/tlb.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/mips/rmi/board.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/mips/rmi/board.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/modules/Makefile#20 integrate
.. //depot/projects/soc2009/trasz_limits/sys/modules/em/Makefile#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/modules/igb/Makefile#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/modules/siftr/Makefile#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_crypto.h#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_crypto_ccmp.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_crypto_tkip.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/netgraph/ng_ipfw.c#7 integrate
.. //depot/projects/soc2009/trasz_limits/sys/netgraph/ng_pipe.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/netgraph/ng_source.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/netgraph/ng_source.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/netinet/sctp_pcb.c#11 integrate
.. //depot/projects/soc2009/trasz_limits/sys/netinet/sctputil.c#13 integrate
.. //depot/projects/soc2009/trasz_limits/sys/netinet/siftr.c#1 branch
.. //depot/projects/soc2009/trasz_limits/sys/pc98/pc98/machdep.c#11 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/aim/clock.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/aim/machdep.c#9 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/booke/clock.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/booke/machdep.c#8 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/include/asm.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/include/intr.h#3 delete
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/mpc85xx/atpic.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/mpc85xx/opic.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/powermac/cuda.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/powermac/hrowpic.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/powermac/openpic_macio.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/powermac/pmu.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/powerpc/intr_machdep.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/powerpc/openpic.c#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/powerpc/psim/openpic_iobus.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sparc64/include/smp.h#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sparc64/sparc64/machdep.c#10 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sun4v/sun4v/machdep.c#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sys/proc.h#22 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sys/ptrace.h#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sys/signalvar.h#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sys/syscallsubr.h#8 integrate
.. //depot/projects/soc2009/trasz_limits/sys/sys/systm.h#10 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ufs/ffs/ffs_alloc.c#6 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ufs/ffs/ffs_inode.c#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ufs/ffs/ffs_softdep.c#8 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ufs/ffs/ffs_vnops.c#8 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ufs/ffs/softdep.h#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ufs/ufs/inode.h#3 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ufs/ufs/ufs_inode.c#2 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ufs/ufs/ufs_lookup.c#7 integrate
.. //depot/projects/soc2009/trasz_limits/sys/ufs/ufs/ufs_vnops.c#9 integrate
.. //depot/projects/soc2009/trasz_limits/sys/vm/vm_contig.c#9 integrate
.. //depot/projects/soc2009/trasz_limits/sys/vm/vm_fault.c#8 integrate
.. //depot/projects/soc2009/trasz_limits/sys/vm/vm_map.c#16 integrate
.. //depot/projects/soc2009/trasz_limits/sys/vm/vm_object.c#10 integrate
.. //depot/projects/soc2009/trasz_limits/sys/vm/vm_page.c#13 integrate
.. //depot/projects/soc2009/trasz_limits/sys/vm/vm_page.h#8 integrate
.. //depot/projects/soc2009/trasz_limits/sys/vm/vm_pageout.c#10 integrate
.. //depot/projects/soc2009/trasz_limits/sys/vm/vm_pager.h#5 integrate
.. //depot/projects/soc2009/trasz_limits/sys/x86/isa/atrtc.c#4 integrate
.. //depot/projects/soc2009/trasz_limits/sys/x86/isa/clock.c#5 integrate
.. //depot/projects/soc2009/trasz_limits/tools/regression/bin/sh/expansion/arith2.0#3 integrate
.. //depot/projects/soc2009/trasz_limits/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c#3 integrate

Differences ...

==== //depot/projects/soc2009/trasz_limits/ObsoleteFiles.inc#20 (text+ko) ====

@@ -1,5 +1,5 @@
 #
-# $FreeBSD: src/ObsoleteFiles.inc,v 1.236 2010/05/14 20:40:37 delphij Exp $
+# $FreeBSD: src/ObsoleteFiles.inc,v 1.237 2010/07/02 02:20:25 marcel Exp $
 #
 # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and
 # directories (OLD_DIRS) which should get removed at an update. Recently
@@ -14,6 +14,10 @@
 # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last.
 #
 
+# 20100701: [powerpc] removed <machine/intr.h>
+.if ${TARGET_ARCH} == "powerpc"
+OLD_FILES+=usr/include/machine/intr.h
+.endif
 # 20100514: library version bump for versioned symbols for liblzma
 OLD_LIBS+=usr/lib/liblzma.so.0
 .if ${TARGET_ARCH} == "amd64"

==== //depot/projects/soc2009/trasz_limits/bin/sh/expand.c#9 (text+ko) ====

@@ -38,7 +38,7 @@
 #endif
 #endif /* not lint */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/expand.c,v 1.64 2010/05/11 23:19:28 jilles Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/expand.c,v 1.65 2010/06/29 22:37:45 jilles Exp $");
 
 #include <sys/types.h>
 #include <sys/time.h>
@@ -818,7 +818,7 @@
 {
 
 	if (*name == '!')
-		return backgndpid != -1;
+		return backgndpidset();
 	else if (*name == '@' || *name == '*') {
 		if (*shellparam.p == NULL)
 			return 0;
@@ -891,7 +891,7 @@
 		num = shellparam.nparam;
 		goto numvar;
 	case '!':
-		num = backgndpid;
+		num = backgndpidval();
 numvar:
 		expdest = cvtnum(num, expdest);
 		break;

==== //depot/projects/soc2009/trasz_limits/bin/sh/jobs.c#6 (text+ko) ====

@@ -36,7 +36,7 @@
 #endif
 #endif /* not lint */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/jobs.c,v 1.77 2010/06/06 22:27:32 jilles Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/jobs.c,v 1.78 2010/06/29 22:37:45 jilles Exp $");
 
 #include <fcntl.h>
 #include <signal.h>
@@ -75,6 +75,7 @@
 STATIC struct job *jobtab;	/* array of jobs */
 STATIC int njobs;		/* size of array */
 MKINIT pid_t backgndpid = -1;	/* pid of last background process */
+MKINIT struct job *bgjob = NULL; /* last background process */
 #if JOBS
 STATIC struct job *jobmru;	/* most recently used job list */
 STATIC pid_t initialpgrp;	/* pgrp of shell on invocation */
@@ -183,6 +184,7 @@
 
 SHELLPROC {
 	backgndpid = -1;
+	bgjob = NULL;
 #if JOBS
 	jobctl = 0;
 #endif
@@ -413,7 +415,11 @@
 			continue;
 		showjob(jp, 0, mode);
 		jp->changed = 0;
-		if (jp->state == JOBDONE) {
+		/* Hack: discard jobs for which $! has not been referenced
+		 * in interactive mode when they terminate.
+		 */
+		if (jp->state == JOBDONE && !jp->remembered &&
+				(iflag || jp != bgjob)) {
 			freejob(jp);
 		}
 	}
@@ -431,6 +437,8 @@
 	int i;
 
 	INTOFF;
+	if (bgjob == jp)
+		bgjob = NULL;
 	for (i = jp->nprocs, ps = jp->ps ; --i >= 0 ; ps++) {
 		if (ps->cmd != nullstr)
 			ckfree(ps->cmd);
@@ -477,12 +485,27 @@
 #endif
 				else
 					retval = WTERMSIG(status) + 128;
-				if (! iflag)
+				if (! iflag || ! job->changed)
 					freejob(job);
+				else {
+					job->remembered = 0;
+					if (job == bgjob)
+						bgjob = NULL;
+				}
 				in_waitcmd--;
 				return retval;
 			}
 		} else {
+			for (jp = jobtab ; jp < jobtab + njobs; jp++)
+				if (jp->used && jp->state == JOBDONE) {
+					if (! iflag || ! jp->changed)
+						freejob(jp);
+					else {
+						jp->remembered = 0;
+						if (jp == bgjob)
+							bgjob = NULL;
+					}
+				}
 			for (jp = jobtab ; ; jp++) {
 				if (jp >= jobtab + njobs) {	/* no running procs */
 					in_waitcmd--;
@@ -623,6 +646,8 @@
 						jp[i].next = &jp[jp[i].next -
 						    jobtab];
 #endif
+				if (bgjob != NULL)
+					bgjob = &jp[bgjob - jobtab];
 				/* Relocate `ps' pointers */
 				for (i = 0; i < njobs; i++)
 					if (jp[i].ps == &jobtab[i].ps0)
@@ -644,6 +669,7 @@
 	jp->changed = 0;
 	jp->nprocs = 0;
 	jp->foreground = 0;
+	jp->remembered = 0;
 #if JOBS
 	jp->jobctl = jobctl;
 	jp->next = NULL;
@@ -821,8 +847,13 @@
 			pgrp = jp->ps[0].pid;
 		setpgid(pid, pgrp);
 	}
-	if (mode == FORK_BG)
+	if (mode == FORK_BG) {
+		if (bgjob != NULL && bgjob->state == JOBDONE &&
+		    !bgjob->remembered && !iflag)
+			freejob(bgjob);
 		backgndpid = pid;		/* set $! */
+		bgjob = jp;
+	}
 	if (jp) {
 		struct procstat *ps = &jp->ps[jp->nprocs++];
 		ps->pid = pid;
@@ -975,10 +1006,15 @@
 				if (jp->state != state) {
 					TRACE(("Job %d: changing state from %d to %d\n", jp - jobtab + 1, jp->state, state));
 					jp->state = state;
+					if (jp != job) {
+						if (done && !jp->remembered &&
+						    !iflag && jp != bgjob)
+							freejob(jp);
 #if JOBS
-					if (done)
-						deljob(jp);
+						else if (done)
+							deljob(jp);
 #endif
+					}
 				}
 			}
 		}
@@ -1074,6 +1110,21 @@
 }
 
 
+int
+backgndpidset(void)
+{
+	return backgndpid != -1;
+}
+
+
+pid_t
+backgndpidval(void)
+{
+	if (bgjob != NULL)
+		bgjob->remembered = 1;
+	return backgndpid;
+}
+
 /*
  * Return a string identifying a command (to be printed by the
  * jobs command.

==== //depot/projects/soc2009/trasz_limits/bin/sh/jobs.h#2 (text+ko) ====

@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)jobs.h	8.2 (Berkeley) 5/4/95
- * $FreeBSD: src/bin/sh/jobs.h,v 1.19 2006/10/07 16:51:16 stefanf Exp $
+ * $FreeBSD: src/bin/sh/jobs.h,v 1.20 2010/06/29 22:37:45 jilles Exp $
  */
 
 /* Mode argument to forkshell.  Don't change FORK_FG or FORK_BG. */
@@ -68,6 +68,7 @@
 	char used;		/* true if this entry is in used */
 	char changed;		/* true if status has changed */
 	char foreground;	/* true if running in the foreground */
+	char remembered;	/* true if $! referenced */
 #if JOBS
 	char jobctl;		/* job running under job control */
 	struct job *next;	/* job used after this one */
@@ -81,7 +82,6 @@
 	SHOWJOBS_PGIDS		/* PID of the group leader only */
 };
 
-extern pid_t backgndpid;	/* pid of last background process */
 extern int job_warning;		/* user was warned about stopped jobs */
 extern int in_waitcmd;		/* are we in waitcmd()? */
 extern int in_dowait;		/* are we in dowait()? */
@@ -98,6 +98,8 @@
 pid_t forkshell(struct job *, union node *, int);
 int waitforjob(struct job *, int *);
 int stoppedjobs(void);
+int backgndpidset(void);
+pid_t backgndpidval(void);
 char *commandtext(union node *);
 
 #if ! JOBS

==== //depot/projects/soc2009/trasz_limits/bin/sh/parser.c#12 (text+ko) ====

@@ -36,7 +36,7 @@
 #endif
 #endif /* not lint */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/parser.c,v 1.81 2010/06/19 10:33:04 jilles Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/parser.c,v 1.82 2010/07/02 22:17:13 jilles Exp $");
 
 #include <stdlib.h>
 #include <unistd.h>
@@ -1734,7 +1734,8 @@
 {
 	static char ps[PROMPTLEN];
 	char *fmt;
-	int i, j, trim;
+	const char *pwd;
+	int i, trim;
 	static char internal_error[] = "<internal prompt error>";
 
 	/*
@@ -1785,17 +1786,15 @@
 				 */
 			case 'W':
 			case 'w':
-				ps[i] = '\0';
-				getcwd(&ps[i], PROMPTLEN - i);
-				if (*fmt == 'W' && ps[i + 1] != '\0') {
-					/* Final path component only. */
-					trim = 1;
-					for (j = i; ps[j] != '\0'; j++)
-					  if (ps[j] == '/')
-						trim = j + 1;
-					memmove(&ps[i], &ps[trim],
-					    j - trim + 1);
-				}
+				pwd = lookupvar("PWD");
+				if (pwd == NULL)
+					pwd = "?";
+				if (*fmt == 'W' &&
+				    *pwd == '/' && pwd[1] != '\0')
+					strlcpy(&ps[i], strrchr(pwd, '/') + 1,
+					    PROMPTLEN - i);
+				else
+					strlcpy(&ps[i], pwd, PROMPTLEN - i);
 				/* Skip to end of path. */
 				while (ps[i + 1] != '\0')
 					i++;

==== //depot/projects/soc2009/trasz_limits/bin/sh/sh.1#12 (text+ko) ====

@@ -30,9 +30,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"	from: @(#)sh.1	8.6 (Berkeley) 5/4/95
-.\" $FreeBSD: src/bin/sh/sh.1,v 1.141 2010/05/24 15:12:12 jilles Exp $
+.\" $FreeBSD: src/bin/sh/sh.1,v 1.142 2010/06/29 22:37:45 jilles Exp $
 .\"
-.Dd May 24, 2010
+.Dd June 29, 2010
 .Dt SH 1
 .Os
 .Sh NAME
@@ -1106,6 +1106,10 @@
 For a
 pipeline, the process ID is that of the last command in the
 pipeline.
+If this parameter is referenced, the shell will remember
+the process ID and its exit status until the
+.Ic wait
+built-in command reports completion of the process.
 .It Li $0
 (zero) Expands to the name of the shell or shell script.
 .El

==== //depot/projects/soc2009/trasz_limits/gnu/usr.bin/gdb/libgdb/fbsd-threads.c#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c,v 1.18 2008/09/14 16:52:42 marcel Exp $ */
+/* $FreeBSD: src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c,v 1.19 2010/07/04 12:09:30 kib Exp $ */
 /* FreeBSD libthread_db assisted debugging support.
    Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
 
@@ -1299,6 +1299,7 @@
   td_thrhandle_t th;
   td_thrinfo_t ti;
   td_err_e err;
+  const char *code;
 
   if (!fbsd_thread_active || !IS_THREAD(inferior_ptid))
     return;
@@ -1315,6 +1316,42 @@
   fbsd_print_sigset(&ti.ti_sigmask);
   printf_filtered("signal pending:\n");
   fbsd_print_sigset(&ti.ti_pending);
+  if (ti.ti_siginfo.si_signo != 0) {
+   printf_filtered("si_signo %d si_errno %d", ti.ti_siginfo.si_signo,
+     ti.ti_siginfo.si_errno);
+   if (ti.ti_siginfo.si_errno != 0)
+    printf_filtered(" (%s)", strerror(ti.ti_siginfo.si_errno));
+   printf_filtered("\n");
+   switch (ti.ti_siginfo.si_code) {
+   case SI_NOINFO:
+	code = "NOINFO";
+	break;
+    case SI_USER:
+	code = "USER";
+	break;
+    case SI_QUEUE:
+	code = "QUEUE";
+	break;
+    case SI_TIMER:
+	code = "TIMER";
+	break;
+    case SI_ASYNCIO:
+	code = "ASYNCIO";
+	break;
+    case SI_MESGQ:
+	code = "MESGQ";
+	break;
+    case SI_KERNEL:
+	code = "KERNEL";
+	break;
+    default:
+	code = "UNKNOWN";
+	break;
+    }
+    printf_filtered("si_code %s si_pid %d si_uid %d si_status %x si_addr %p\n",
+      code, ti.ti_siginfo.si_pid, ti.ti_siginfo.si_uid, ti.ti_siginfo.si_status,
+      ti.ti_siginfo.si_addr);
+  }
 }
 
 static int

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

@@ -52,13 +52,13 @@
 /*%
  *	@(#)inet.h	8.1 (Berkeley) 6/2/93
  *	$Id: inet.h,v 1.2.18.1 2005/04/27 05:00:50 sra Exp $
- * $FreeBSD: src/include/arpa/inet.h,v 1.32 2010/02/16 19:46:46 imp Exp $
+ * $FreeBSD: src/include/arpa/inet.h,v 1.33 2010/07/06 03:48:46 maxim Exp $
  */
 
 #ifndef _ARPA_INET_H_
 #define	_ARPA_INET_H_
 
-/* External definitions for functions in inet(3), addr2ascii(3) */
+/* External definitions for functions in inet(3). */
 
 #include <sys/cdefs.h>
 #include <sys/_types.h>

==== //depot/projects/soc2009/trasz_limits/lib/libc/gmon/gmon.c#3 (text+ko) ====

@@ -31,7 +31,7 @@
 static char sccsid[] = "@(#)gmon.c	8.1 (Berkeley) 6/4/93";
 #endif
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/gmon/gmon.c,v 1.23 2009/12/05 19:31:38 ed Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/gmon/gmon.c,v 1.25 2010/07/01 00:48:00 marcel Exp $");
 
 #include "namespace.h"
 #include <sys/param.h>
@@ -41,6 +41,7 @@
 
 #include <err.h>
 #include <fcntl.h>
+#include <inttypes.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -58,8 +59,8 @@
 struct gmonparam _gmonparam = { GMON_PROF_OFF };
 
 static int	s_scale;
-/* see profil(2) where this is describe (incorrectly) */
-#define		SCALE_1_TO_1	0x10000L
+/* See profil(2) where this is described (incorrectly). */
+#define	SCALE_SHIFT	16
 
 #define ERR(s) _write(2, s, sizeof(s))
 
@@ -110,24 +111,8 @@
 	p->tos[0].link = 0;
 
 	o = p->highpc - p->lowpc;
-	if (p->kcountsize < o) {
-#ifndef hp300
-		s_scale = ((float)p->kcountsize / o ) * SCALE_1_TO_1;
-#else /* avoid floating point */
-		int quot = o / p->kcountsize;
-
-		if (quot >= 0x10000)
-			s_scale = 1;
-		else if (quot >= 0x100)
-			s_scale = 0x10000 / quot;
-		else if (o >= 0x800000)
-			s_scale = 0x1000000 / (o / (p->kcountsize >> 8));
-		else
-			s_scale = 0x1000000 / ((o << 8) / p->kcountsize);
-#endif
-	} else
-		s_scale = SCALE_1_TO_1;
-
+	s_scale = (p->kcountsize < o) ?
+	    ((uintmax_t)p->kcountsize << SCALE_SHIFT) / o : (1 << SCALE_SHIFT);
 	moncontrol(1);
 }
 

==== //depot/projects/soc2009/trasz_limits/lib/libc/net/sctp_recvmsg.3#5 (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/libc/net/sctp_recvmsg.3,v 1.8 2010/06/11 18:43:55 brucec Exp $
+.\" $FreeBSD: src/lib/libc/net/sctp_recvmsg.3,v 1.9 2010/07/04 08:09:33 brucec Exp $
 .\"
 .Dd August 13, 2007
 .Dt SCTP_RECVMSG 3
@@ -146,14 +146,14 @@
 argument is defined as follows.
 .Bd -literal
 struct sctp_sndrcvinfo {
-	u_int16_t sinfo_stream;  /* Stream arriving on */
-	u_int16_t sinfo_ssn;     /* Stream Sequence Number */
-	u_int16_t sinfo_flags;   /* Flags on the incoming message */
-	u_int32_t sinfo_ppid;    /* The ppid field */
-	u_int32_t sinfo_context; /* context field */
-	u_int32_t sinfo_timetolive; /* not used by sctp_recvmsg */
-	u_int32_t sinfo_tsn;        /* The transport sequence number */
-	u_int32_t sinfo_cumtsn;     /* The cumulative acknowledgment point  */
+	uint16_t sinfo_stream;  /* Stream arriving on */
+	uint16_t sinfo_ssn;     /* Stream Sequence Number */
+	uint16_t sinfo_flags;   /* Flags on the incoming message */
+	uint32_t sinfo_ppid;    /* The ppid field */
+	uint32_t sinfo_context; /* context field */
+	uint32_t sinfo_timetolive; /* not used by sctp_recvmsg */
+	uint32_t sinfo_tsn;        /* The transport sequence number */
+	uint32_t sinfo_cumtsn;     /* The cumulative acknowledgment point  */
 	sctp_assoc_t sinfo_assoc_id; /* The association id of the peer */
 };
 .Ed

==== //depot/projects/soc2009/trasz_limits/lib/libc/net/sctp_send.3#5 (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/libc/net/sctp_send.3,v 1.7 2010/01/31 21:45:14 brucec Exp $
+.\" $FreeBSD: src/lib/libc/net/sctp_send.3,v 1.8 2010/07/04 08:09:33 brucec Exp $
 .\"
 .Dd December 15, 2006
 .Dt SCTP_SEND 3
@@ -94,14 +94,14 @@
 and has the following format:
 .Bd -literal
 struct sctp_sndrcvinfo {
-	u_int16_t sinfo_stream;  /* Stream sending to */
-	u_int16_t sinfo_ssn;     /* valid for recv only */
-	u_int16_t sinfo_flags;   /* flags to control sending */
-	u_int32_t sinfo_ppid;    /* ppid field */
-	u_int32_t sinfo_context; /* context field */
-	u_int32_t sinfo_timetolive; /* timetolive for PR-SCTP */
-	u_int32_t sinfo_tsn;        /* valid for recv only */
-	u_int32_t sinfo_cumtsn;     /* valid for recv only */
+	uint16_t sinfo_stream;  /* Stream sending to */
+	uint16_t sinfo_ssn;     /* valid for recv only */
+	uint16_t sinfo_flags;   /* flags to control sending */
+	uint32_t sinfo_ppid;    /* ppid field */
+	uint32_t sinfo_context; /* context field */
+	uint32_t sinfo_timetolive; /* timetolive for PR-SCTP */
+	uint32_t sinfo_tsn;        /* valid for recv only */
+	uint32_t sinfo_cumtsn;     /* valid for recv only */
 	sctp_assoc_t sinfo_assoc_id; /* The association id */
 };
 .Ed

==== //depot/projects/soc2009/trasz_limits/lib/libc/net/sctp_sys_calls.c#3 (text+ko) ====

@@ -29,7 +29,7 @@
  * SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/net/sctp_sys_calls.c,v 1.15 2010/01/31 21:47:39 brucec Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/net/sctp_sys_calls.c,v 1.17 2010/07/05 03:55:49 brucec Exp $");
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
@@ -49,9 +49,9 @@
 
 #ifndef IN6_IS_ADDR_V4MAPPED
 #define IN6_IS_ADDR_V4MAPPED(a)		      \
-	((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) &&	\
-	 (*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) &&	\
-	 (*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff)))
+	((*(const uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) &&	\
+	 (*(const uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) &&	\
+	 (*(const uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff)))
 #endif
 
 
@@ -304,7 +304,7 @@
 			goto out_error;
 		}
 
-
+		sa = (struct sockaddr *)((caddr_t)sa + sz);
 	}
 	sa = addrs;
 	/*
@@ -533,11 +533,11 @@
     size_t len,
     const struct sockaddr *to,
     socklen_t tolen,
-    u_int32_t ppid,
-    u_int32_t flags,
-    u_int16_t stream_no,
-    u_int32_t timetolive,
-    u_int32_t context)
+    uint32_t ppid,
+    uint32_t flags,
+    uint16_t stream_no,
+    uint32_t timetolive,
+    uint32_t context)
 {
 #ifdef SYS_sctp_generic_sendmsg
 	struct sctp_sndrcvinfo sinfo;
@@ -814,11 +814,11 @@
     size_t len,
     struct sockaddr *addrs,
     int addrcnt,
-    u_int32_t ppid,
-    u_int32_t flags,
-    u_int16_t stream_no,
-    u_int32_t timetolive,
-    u_int32_t context)
+    uint32_t ppid,
+    uint32_t flags,
+    uint16_t stream_no,
+    uint32_t timetolive,
+    uint32_t context)
 {
 	struct sctp_sndrcvinfo sinfo;
 

==== //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/acl_from_text.c#4 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/posix1e/acl_from_text.c,v 1.13 2009/11/16 09:28:22 brueffer Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/posix1e/acl_from_text.c,v 1.14 2010/07/05 19:01:10 trasz Exp $");
 
 #include <sys/types.h>
 #include "namespace.h"
@@ -271,9 +271,6 @@
  * XXX NOT THREAD SAFE, RELIES ON GETPWNAM, GETGRNAM
  * XXX USES *PW* AND *GR* WHICH ARE STATEFUL AND THEREFORE THIS ROUTINE
  * MAY HAVE SIDE-EFFECTS
- *
- * XXX currently doesn't deal correctly with a numeric uid being passed
- * instead of a username.  What is correct behavior here?  Check chown.
  */
 static int
 _posix1e_acl_name_to_id(acl_tag_t tag, char *name, uid_t *id)

==== //depot/projects/soc2009/trasz_limits/lib/libfetch/http.c#3 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libfetch/http.c,v 1.87 2010/01/19 10:19:55 des Exp $");
+__FBSDID("$FreeBSD: src/lib/libfetch/http.c,v 1.88 2010/07/01 17:44:33 des Exp $");
 
 /*
  * The following copyright applies to the base64 code:
@@ -1786,12 +1786,14 @@
 			case hdr_www_authenticate:
 				if (conn->err != HTTP_NEED_AUTH)
 					break;
-				http_parse_authenticate(p, &server_challenges);
+				if (http_parse_authenticate(p, &server_challenges))
+					++n;
 				break;
 			case hdr_proxy_authenticate:
 				if (conn->err != HTTP_NEED_PROXY_AUTH)
 					break;
-				http_parse_authenticate(p, &proxy_challenges);
+				if (http_parse_authenticate(p, &proxy_challenges) == 0);
+					++n;
 				break;
 			case hdr_end:
 				/* fall through */

==== //depot/projects/soc2009/trasz_limits/lib/libthread_db/Symbol.map#2 (text) ====

@@ -1,5 +1,5 @@
 /*
- * $FreeBSD: src/lib/libthread_db/Symbol.map,v 1.2 2007/04/29 14:05:22 deischen Exp $
+ * $FreeBSD: src/lib/libthread_db/Symbol.map,v 1.3 2010/07/04 12:08:04 kib Exp $
  */
 
 FBSD_1.0 {
@@ -19,7 +19,6 @@
 	td_thr_dbsuspend;
 	td_thr_event_enable;
 	td_thr_event_getmsg;
-	td_thr_get_info;
 	td_thr_getfpregs;
 	td_thr_getgregs;
 #if defined(i386)
@@ -33,3 +32,7 @@
 	td_thr_tls_get_addr;
 	td_thr_validate;
 };
+
+FBSD_1.2 {
+	td_thr_get_info;
+};

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

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libthread_db/libpthread_db.c,v 1.20 2008/09/14 16:52:42 marcel Exp $");
+__FBSDID("$FreeBSD: src/lib/libthread_db/libpthread_db.c,v 1.21 2010/07/04 12:08:04 kib Exp $");
 
 #include <stddef.h>
 #include <stdlib.h>
@@ -570,7 +570,7 @@
 }
 
 static td_err_e
-pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info)
+pt_thr_old_get_info(const td_thrhandle_t *th, td_old_thrinfo_t *info)
 {
 	const td_thragent_t *ta = th->th_ta;
 	struct ptrace_lwpinfo linfo;
@@ -659,6 +659,16 @@
 	return (0);
 }
 
+static td_err_e
+pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info)
+{
+	td_err_e e;
+
+	e = pt_thr_old_get_info(th, (td_old_thrinfo_t *)info);
+	bzero(&info->ti_siginfo, sizeof(info->ti_siginfo));
+	return (e);
+}
+
 #ifdef __i386__
 static td_err_e
 pt_thr_getxmmregs(const td_thrhandle_t *th, char *fxsave)
@@ -1114,6 +1124,7 @@
 	.to_thr_dbsuspend	= pt_thr_dbsuspend,
 	.to_thr_event_enable	= pt_thr_event_enable,
 	.to_thr_event_getmsg	= pt_thr_event_getmsg,
+	.to_thr_old_get_info	= pt_thr_old_get_info,
 	.to_thr_get_info	= pt_thr_get_info,
 	.to_thr_getfpregs	= pt_thr_getfpregs,
 	.to_thr_getgregs	= pt_thr_getgregs,

==== //depot/projects/soc2009/trasz_limits/lib/libthread_db/libthr_db.c#3 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libthread_db/libthr_db.c,v 1.17 2009/06/09 12:32:10 des Exp $");
+__FBSDID("$FreeBSD: src/lib/libthread_db/libthr_db.c,v 1.18 2010/07/04 12:08:04 kib Exp $");
 
 #include <proc_service.h>
 #include <stddef.h>
@@ -453,7 +453,7 @@
 }
 
 static td_err_e
-pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info)
+pt_thr_get_info_common(const td_thrhandle_t *th, td_thrinfo_t *info, int old)
 {
 	const td_thragent_t *ta = th->th_ta;
 	struct ptrace_lwpinfo linfo;
@@ -489,6 +489,13 @@
 	if (ret == PS_OK) {
 		info->ti_sigmask = linfo.pl_sigmask;
 		info->ti_pending = linfo.pl_siglist;
+		if (!old) {
+			if ((linfo.pl_flags & PL_FLAG_SI) != 0)
+				info->ti_siginfo = linfo.pl_siginfo;
+			else
+				bzero(&info->ti_siginfo,
+				    sizeof(info->ti_siginfo));
+		}
 	} else
 		return (ret);
 	if (state == ta->thread_state_running)
@@ -501,6 +508,20 @@
 	return (0);
 }
 
+static td_err_e
+pt_thr_old_get_info(const td_thrhandle_t *th, td_old_thrinfo_t *info)
+{
+
+	return (pt_thr_get_info_common(th, (td_thrinfo_t *)info, 1));
+}
+
+static td_err_e
+pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info)
+{
+
+	return (pt_thr_get_info_common(th, info, 0));
+}
+
 #ifdef __i386__
 static td_err_e
 pt_thr_getxmmregs(const td_thrhandle_t *th, char *fxsave)
@@ -761,6 +782,7 @@
 	.to_thr_dbsuspend	= pt_thr_dbsuspend,
 	.to_thr_event_enable	= pt_thr_event_enable,
 	.to_thr_event_getmsg	= pt_thr_event_getmsg,
+	.to_thr_old_get_info	= pt_thr_old_get_info,
 	.to_thr_get_info	= pt_thr_get_info,
 	.to_thr_getfpregs	= pt_thr_getfpregs,
 	.to_thr_getgregs	= pt_thr_getgregs,

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

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libthread_db/thread_db.c,v 1.9 2008/09/14 16:52:42 marcel Exp $");
+__FBSDID("$FreeBSD: src/lib/libthread_db/thread_db.c,v 1.10 2010/07/04 12:08:04 kib Exp $");
 
 #include <proc_service.h>
 #include <stddef.h>
@@ -176,6 +176,14 @@
 }
 
 td_err_e
+td_thr_old_get_info(const td_thrhandle_t *th, td_old_thrinfo_t *info)
+{
+	const td_thragent_t *ta = th->th_ta;
+	return (ta->ta_ops->to_thr_old_get_info(th, info));
+}
+__sym_compat(td_thr_get_info, td_thr_old_get_info, FBSD_1.0);
+
+td_err_e
 td_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info)
 {
 	const td_thragent_t *ta = th->th_ta;

==== //depot/projects/soc2009/trasz_limits/lib/libthread_db/thread_db.h#3 (text+ko) ====

@@ -24,7 +24,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/libthread_db/thread_db.h,v 1.10 2009/06/09 12:32:10 des Exp $
+ * $FreeBSD: src/lib/libthread_db/thread_db.h,v 1.11 2010/07/04 12:08:04 kib Exp $
  */
 
 #ifndef _THREAD_DB_H_
@@ -191,6 +191,7 @@
 	psaddr_t	ti_startfunc;
 	psaddr_t	ti_stkbase;
 	size_t		ti_stksize;
+	siginfo_t	ti_siginfo;
 } td_thrinfo_t;
 
 /*

==== //depot/projects/soc2009/trasz_limits/lib/libthread_db/thread_db_int.h#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/libthread_db/thread_db_int.h,v 1.6 2008/09/14 16:52:42 marcel Exp $
+ * $FreeBSD: src/lib/libthread_db/thread_db_int.h,v 1.7 2010/07/04 12:08:04 kib Exp $
  */
 
 #ifndef _THREAD_DB_INT_H_
@@ -32,6 +32,25 @@
 #include <sys/types.h>
 #include <sys/queue.h>
 
+typedef struct {
+	const td_thragent_t *ti_ta_p;
+	thread_t	ti_tid;
+	psaddr_t	ti_thread;
+	td_thr_state_e	ti_state;
+	td_thr_type_e	ti_type;
+	td_thr_events_t	ti_events;
+	int		ti_pri;
+	lwpid_t		ti_lid;

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


More information about the p4-projects mailing list