Date: Tue, 6 Jul 2010 17:34:59 GMT From: Edward Tomasz Napierala <trasz@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 180544 for review Message-ID: <201007061734.o66HYxO3042787@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@180544?ac=10 Change 180544 by trasz@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) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201007061734.o66HYxO3042787>