PERFORCE change 48246 for review
Peter Wemm
peter at FreeBSD.org
Fri Mar 5 16:00:47 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=48246
Change 48246 by peter at peter_daintree on 2004/03/05 15:59:59
IFC @48245
Affected files ...
.. //depot/projects/hammer/Makefile.inc1#40 integrate
.. //depot/projects/hammer/UPDATING.64BTT#2 integrate
.. //depot/projects/hammer/bin/dd/Makefile#4 integrate
.. //depot/projects/hammer/bin/dd/args.c#4 integrate
.. //depot/projects/hammer/bin/dd/dd.1#3 integrate
.. //depot/projects/hammer/bin/dd/dd.c#4 integrate
.. //depot/projects/hammer/bin/dd/dd.h#3 integrate
.. //depot/projects/hammer/bin/dd/gen.c#1 branch
.. //depot/projects/hammer/bin/dd/ref.ascii#1 branch
.. //depot/projects/hammer/bin/dd/ref.ebcdic#1 branch
.. //depot/projects/hammer/bin/dd/ref.ibm#1 branch
.. //depot/projects/hammer/bin/dd/ref.lcase#1 branch
.. //depot/projects/hammer/bin/dd/ref.oldascii#1 branch
.. //depot/projects/hammer/bin/dd/ref.oldebcdic#1 branch
.. //depot/projects/hammer/bin/dd/ref.oldibm#1 branch
.. //depot/projects/hammer/bin/dd/ref.pareven#1 branch
.. //depot/projects/hammer/bin/dd/ref.parnone#1 branch
.. //depot/projects/hammer/bin/dd/ref.parodd#1 branch
.. //depot/projects/hammer/bin/dd/ref.parset#1 branch
.. //depot/projects/hammer/bin/dd/ref.swab#1 branch
.. //depot/projects/hammer/bin/dd/ref.ucase#1 branch
.. //depot/projects/hammer/etc/rc.d/Makefile#18 integrate
.. //depot/projects/hammer/gnu/usr.bin/binutils/Makefile.inc0#8 integrate
.. //depot/projects/hammer/gnu/usr.bin/binutils/gasp/Makefile#6 integrate
.. //depot/projects/hammer/gnu/usr.bin/binutils/gdb/Makefile#9 integrate
.. //depot/projects/hammer/share/man/man9/DEVICE_IDENTIFY.9#2 integrate
.. //depot/projects/hammer/share/mk/bsd.cpu.mk#12 integrate
.. //depot/projects/hammer/sys/compat/ndis/kern_ndis.c#7 integrate
.. //depot/projects/hammer/sys/dev/aac/aac.c#19 integrate
.. //depot/projects/hammer/sys/dev/acpica/acpi_cpu.c#14 integrate
.. //depot/projects/hammer/sys/dev/acpica/acpi_thermal.c#12 integrate
.. //depot/projects/hammer/sys/dev/adlink/adlink.c#6 integrate
.. //depot/projects/hammer/sys/dev/md/md.c#23 integrate
.. //depot/projects/hammer/sys/dev/pccbb/pccbb.c#22 integrate
.. //depot/projects/hammer/sys/dev/random/harvest.c#5 integrate
.. //depot/projects/hammer/sys/dev/utopia/utopia.c#4 integrate
.. //depot/projects/hammer/sys/geom/bde/g_bde_work.c#10 integrate
.. //depot/projects/hammer/sys/kern/kern_exec.c#19 integrate
.. //depot/projects/hammer/sys/kern/kern_exit.c#19 integrate
.. //depot/projects/hammer/sys/kern/kern_fork.c#26 integrate
.. //depot/projects/hammer/sys/kern/kern_intr.c#22 integrate
.. //depot/projects/hammer/sys/kern/kern_sig.c#35 integrate
.. //depot/projects/hammer/sys/kern/kern_sysctl.c#11 integrate
.. //depot/projects/hammer/sys/kern/sched_4bsd.c#15 integrate
.. //depot/projects/hammer/sys/kern/subr_trap.c#18 integrate
.. //depot/projects/hammer/sys/nfs4client/nfs4_vfsops.c#5 integrate
.. //depot/projects/hammer/sys/opencrypto/crypto.c#8 integrate
.. //depot/projects/hammer/sys/vm/vm_extern.h#9 integrate
.. //depot/projects/hammer/sys/vm/vm_glue.c#23 integrate
.. //depot/projects/hammer/sys/vm/vm_mmap.c#18 integrate
Differences ...
==== //depot/projects/hammer/Makefile.inc1#40 (text+ko) ====
@@ -1,5 +1,5 @@
#
-# $FreeBSD: src/Makefile.inc1,v 1.409 2004/03/04 18:41:35 gad Exp $
+# $FreeBSD: src/Makefile.inc1,v 1.410 2004/03/05 18:16:28 gad Exp $
#
# Make command line options:
# -DNO_DYNAMICROOT do not link /bin and /sbin dynamically
@@ -373,8 +373,8 @@
@echo "* Note: This installation changes the type used for time_t."
.endif
@echo "* "
- @echo "* This host (${THISHOST}) presently has a time_t of type ${CUR_TIMET},"
- @echo "* and this installation will switch time_t to be type ${SRC_TIMET}."
+ @echo "* This host (${THISHOST}) has time_t defined as ${CUR_TIMET},"
+ @echo "* and this installation would change that to type ${SRC_TIMET}."
.if ${NEWSPARC_TIMETYPE} != ${SRC_TIMET}
@echo "* "
@echo "* If that is *NOT* what you wanted, then you need to change the"
==== //depot/projects/hammer/UPDATING.64BTT#2 (text+ko) ====
@@ -28,7 +28,7 @@
# POSSIBILITY OF SUCH DAMAGE.
#
# -------+---------+---------+---------+---------+---------+---------+---------+
-# $FreeBSD: src/UPDATING.64BTT,v 1.2 2004/03/03 19:48:52 gad Exp $
+# $FreeBSD: src/UPDATING.64BTT,v 1.3 2004/03/05 23:10:49 gad Exp $
# -------+---------+---------+---------+---------+---------+---------+---------+
If you are in too much of a hurry to read this file, then this is not the
@@ -120,7 +120,7 @@
ifconfig -a #- NFS 8a. See note below.
shutdown now #- NFS 8b. NOT 'shutdown -r now'
cd /usr/src #- NFS 8c.
- ./installworld_oldk #- NFS 8d. See note below.
+ sh installworld_oldk #- NFS 8d. See note below.
# - - End of this section for NFS-mounts - - #
reboot #- 9. MUST go into single-user mode
@@ -150,7 +150,7 @@
mount_nfs host:objdir /usr/obj #- NFS 15c.
# - - End of this section for NFS-mounts - - #
cd /usr/src #- 16.
- ./installworld_newk #- 17. Might want to add -S
+ sh installworld_newk #- 17. Might want to add -S
mergemaster #- 18.
rm -f /var/db/dhclient.leases #- 19. If this host uses DHCP
reboot #- 20.
@@ -213,7 +213,7 @@
This will drop you into single-user mode, without rebooting. It
will ask if you want to use /bin/sh for your shell. You do.
-Notes on step NFS 8d: installworld_oldk
+Notes on step NFS 8d: sh installworld_oldk
Note that this script only installs *part* of the new world. You will
still have to reboot into single-user mode and do the full installworld.
@@ -247,7 +247,7 @@
If you use the 'mount' command for NFS mounts, it will turn around and
directly execute /sbin/mount_nfs, and that is not desirable in this case.
-Notes on step 17: ./installworld_newk
+Notes on step 17: sh installworld_newk
This script will do some setup work, and then ask you if want it to run
'make installworld'. Most people should just answer "y" (yes) to that
==== //depot/projects/hammer/bin/dd/Makefile#4 (text+ko) ====
@@ -1,5 +1,5 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $FreeBSD: src/bin/dd/Makefile,v 1.12 2003/06/13 07:04:01 markm Exp $
+# $FreeBSD: src/bin/dd/Makefile,v 1.14 2004/03/05 19:35:51 phk Exp $
PROG= dd
SRCS= args.c conv.c conv_tab.c dd.c misc.c position.c
@@ -7,3 +7,19 @@
MAINTAINER= green at FreeBSD.org
.include <bsd.prog.mk>
+
+#
+# Test the character conversion functions. We have to be explicit about
+# which LC_LANG we use because the definition of upper and lower case
+# depends on it.
+test: ${PROG}
+ cc ${.CURDIR}/gen.c
+.for conv in ascii ebcdic ibm oldascii oldebcdic oldibm \
+ pareven parnone parodd parset \
+ swab lcase ucase
+ @echo testing conv=${conv}
+ @./a.out | \
+ /usr/bin/env -i LC_CTYPE=ASCII ./dd conv=${conv} 2>/dev/null | \
+ /usr/bin/env -i LC_CTYPE=ASCII hexdump -C | \
+ diff -IFreeBSD - ${.CURDIR}/ref.${conv}
+.endfor
==== //depot/projects/hammer/bin/dd/args.c#4 (text+ko) ====
@@ -41,7 +41,7 @@
#endif
#endif /* not lint */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/dd/args.c,v 1.36 2003/03/15 13:34:48 ru Exp $");
+__FBSDID("$FreeBSD: src/bin/dd/args.c,v 1.37 2004/03/05 19:35:51 phk Exp $");
#include <sys/types.h>
@@ -299,6 +299,10 @@
{ "oldebcdic", C_EBCDIC, C_ASCII, a2e_32V },
{ "oldibm", C_EBCDIC, C_ASCII, a2ibm_32V },
{ "osync", C_OSYNC, C_BS, NULL },
+ { "pareven", C_PAREVEN, C_PARODD|C_PARSET|C_PARNONE, NULL},
+ { "parnone", C_PARNONE, C_PARODD|C_PARSET|C_PAREVEN, NULL},
+ { "parodd", C_PARODD, C_PAREVEN|C_PARSET|C_PARNONE, NULL},
+ { "parset", C_PARSET, C_PARODD|C_PAREVEN|C_PARNONE, NULL},
{ "sparse", C_SPARSE, 0, NULL },
{ "swab", C_SWAB, 0, NULL },
{ "sync", C_SYNC, 0, NULL },
==== //depot/projects/hammer/bin/dd/dd.1#3 (text+ko) ====
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)dd.1 8.2 (Berkeley) 1/13/94
-.\" $FreeBSD: src/bin/dd/dd.1,v 1.21 2002/11/26 17:55:40 ru Exp $
+.\" $FreeBSD: src/bin/dd/dd.1,v 1.22 2004/03/05 19:35:51 phk Exp $
.\"
.Dd January 13, 1994
.Dt DD 1
@@ -231,6 +231,13 @@
systems.
.It Cm lcase
Transform uppercase characters into lowercase characters.
+.It Cm pareven , parnone , parodd , parset
+Output data with the specified parity.
+The parity bit on input is stripped unless
+.Tn EBCDIC
+to
+.Tn ASCII
+conversions is also specified.
.It Cm noerror
Do not stop processing on an input error.
When an input error occurs, a diagnostic message followed by the current
@@ -355,6 +362,19 @@
in the same format as the standard completion message and
.Nm
will exit.
+.Sh EXAMPLES
+Check that a disk drive contains no bad blocks:
+.Dl dd if=/dev/ad0 of=/dev/null bs=1m
+.Pp
+Do a refresh of a disk drive, in order to prevent presently
+recoverable read errors from progressing into unrecoverable read errors:
+.Dl dd if=/dev/ad0 of=/dev/ad0 bs=1m
+.Pp
+Remove parity bit from a file
+.Dl dd if=file conv=parnone of=file.txt
+.Pp
+Check for (even) parity errors on a file:
+.Dl dd if=file conv=pareven | cmp -x - file
.Sh DIAGNOSTICS
.Ex -std
.Sh SEE ALSO
==== //depot/projects/hammer/bin/dd/dd.c#4 (text+ko) ====
@@ -47,7 +47,7 @@
#endif /* not lint */
#endif
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/dd/dd.c,v 1.40 2003/05/01 16:58:54 obrien Exp $");
+__FBSDID("$FreeBSD: src/bin/dd/dd.c,v 1.41 2004/03/05 19:35:51 phk Exp $");
#include <sys/param.h>
#include <sys/stat.h>
@@ -104,6 +104,16 @@
exit(0);
}
+static int
+parity(u_char c)
+{
+ int i;
+
+ i = c ^ (c >> 1) ^ (c >> 2) ^ (c >> 3) ^
+ (c >> 4) ^ (c >> 5) ^ (c >> 6) ^ (c >> 7);
+ return (i & 1);
+}
+
static void
setup(void)
{
@@ -176,29 +186,52 @@
if (ftruncate(out.fd, out.offset * out.dbsz) == -1)
err(1, "truncating %s", out.name);
- /*
- * If converting case at the same time as another conversion, build a
- * table that does both at once. If just converting case, use the
- * built-in tables.
- */
- if (ddflags & (C_LCASE | C_UCASE)) {
- if (ddflags & (C_ASCII | C_EBCDIC)) {
- if (ddflags & C_LCASE) {
- for (cnt = 0; cnt <= 0377; ++cnt)
- casetab[cnt] = tolower(ctab[cnt]);
- } else {
- for (cnt = 0; cnt <= 0377; ++cnt)
- casetab[cnt] = toupper(ctab[cnt]);
- }
+ if (ddflags & (C_LCASE | C_UCASE | C_ASCII | C_EBCDIC | C_PARITY)) {
+ if (ctab != NULL) {
+ for (cnt = 0; cnt <= 0377; ++cnt)
+ casetab[cnt] = ctab[cnt];
} else {
- if (ddflags & C_LCASE) {
- for (cnt = 0; cnt <= 0377; ++cnt)
- casetab[cnt] = tolower((int)cnt);
- } else {
- for (cnt = 0; cnt <= 0377; ++cnt)
- casetab[cnt] = toupper((int)cnt);
- }
+ for (cnt = 0; cnt <= 0377; ++cnt)
+ casetab[cnt] = cnt;
+ }
+ if ((ddflags & C_PARITY) && !(ddflags & C_ASCII)) {
+ /*
+ * If the input is not EBCDIC, and we do parity
+ * processing, strip input parity.
+ */
+ for (cnt = 200; cnt <= 0377; ++cnt)
+ casetab[cnt] = casetab[cnt & 0x7f];
+ }
+ if (ddflags & C_LCASE) {
+ for (cnt = 0; cnt <= 0377; ++cnt)
+ casetab[cnt] = tolower(casetab[cnt]);
+ } else if (ddflags & C_UCASE) {
+ for (cnt = 0; cnt <= 0377; ++cnt)
+ casetab[cnt] = toupper(casetab[cnt]);
+ }
+ if ((ddflags & C_PARITY)) {
+ /*
+ * This should strictly speaking be a no-op, but I
+ * wonder what funny LANG settings could get us.
+ */
+ for (cnt = 0; cnt <= 0377; ++cnt)
+ casetab[cnt] = casetab[cnt] & 0x7f;
+ }
+ if ((ddflags & C_PARSET)) {
+ for (cnt = 0; cnt <= 0377; ++cnt)
+ casetab[cnt] = casetab[cnt] | 0x80;
+ }
+ if ((ddflags & C_PAREVEN)) {
+ for (cnt = 0; cnt <= 0377; ++cnt)
+ if (parity(casetab[cnt]))
+ casetab[cnt] = casetab[cnt] | 0x80;
+ }
+ if ((ddflags & C_PARODD)) {
+ for (cnt = 0; cnt <= 0377; ++cnt)
+ if (!parity(casetab[cnt]))
+ casetab[cnt] = casetab[cnt] | 0x80;
}
+
ctab = casetab;
}
==== //depot/projects/hammer/bin/dd/dd.h#3 (text+ko) ====
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)dd.h 8.3 (Berkeley) 4/2/94
- * $FreeBSD: src/bin/dd/dd.h,v 1.18 2003/02/27 18:04:54 markm Exp $
+ * $FreeBSD: src/bin/dd/dd.h,v 1.19 2004/03/05 19:35:51 phk Exp $
*/
/* Input/output stream state. */
@@ -95,3 +95,9 @@
#define C_UNBLOCK 0x80000
#define C_OSYNC 0x100000
#define C_SPARSE 0x200000
+#define C_PAREVEN 0x400000
+#define C_PARODD 0x800000
+#define C_PARSET 0x1000000
+#define C_PARNONE 0x2000000
+
+#define C_PARITY (C_PAREVEN|C_PARODD|C_PARSET|C_PARNONE)
==== //depot/projects/hammer/etc/rc.d/Makefile#18 (text+ko) ====
@@ -1,5 +1,5 @@
# $NetBSD: Makefile,v 1.16 2001/01/14 15:37:22 minoura Exp $
-# $FreeBSD: src/etc/rc.d/Makefile,v 1.33 2004/03/05 05:48:58 bde Exp $
+# $FreeBSD: src/etc/rc.d/Makefile,v 1.34 2004/03/05 16:13:22 bde Exp $
FILES= DAEMON LOGIN NETWORKING SERVERS \
abi accounting addswap adjkerntz amd \
@@ -41,6 +41,4 @@
FILESDIR= /etc/rc.d
FILESMODE= ${BINMODE}
-NOPROG= noprog
-
.include <bsd.prog.mk>
==== //depot/projects/hammer/gnu/usr.bin/binutils/Makefile.inc0#8 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/gnu/usr.bin/binutils/Makefile.inc0,v 1.34 2004/03/04 20:36:18 ache Exp $
+# $FreeBSD: src/gnu/usr.bin/binutils/Makefile.inc0,v 1.35 2004/03/05 16:12:31 ache Exp $
#
# This is included explicitly at the top of each sub-Makefile. We can't
# use the normal "Makefile.inc" mechanism, because we need some of these
@@ -24,8 +24,6 @@
.endif
CFLAGS+= -I${.CURDIR}
CFLAGS+= -I${.CURDIR}/${RELTOP}/libbfd/${TARGET_ARCH}
-# to pick right getopt.h
-CFLAGS+= -I${DESTDIR}/usr/include
CFLAGS+= -I${SRCDIR}/include
.if exists(${.CURDIR}/${TARGET_ARCH})
==== //depot/projects/hammer/gnu/usr.bin/binutils/gasp/Makefile#6 (text+ko) ====
@@ -1,7 +1,4 @@
-# $FreeBSD: src/gnu/usr.bin/binutils/gasp/Makefile,v 1.16 2004/03/05 01:47:02 ache Exp $
-
-# must be before -I${DESTDIR}/usr/include
-CFLAGS+= -I${DESTDIR}/usr/include/gnu
+# $FreeBSD: src/gnu/usr.bin/binutils/gasp/Makefile,v 1.17 2004/03/05 16:12:31 ache Exp $
.include "../Makefile.inc0"
@@ -13,6 +10,7 @@
CFLAGS+= -DBFD_ASSEMBLER
CFLAGS+= -I${.CURDIR}/../as/${TARGET_ARCH}-freebsd -I${.CURDIR}/../as
CFLAGS+= -I${.CURDIR}
+CFLAGS+= -I${DESTDIR}/usr/include/gnu
CFLAGS+= -I${SRCDIR} -I${SRCDIR}/gas -I${SRCDIR}/gas/config
DPADD= ${RELTOP}/libiberty/libiberty.a
LDADD= ${DPADD}
==== //depot/projects/hammer/gnu/usr.bin/binutils/gdb/Makefile#9 (text+ko) ====
@@ -1,8 +1,5 @@
# ex:ts=8
-# $FreeBSD: src/gnu/usr.bin/binutils/gdb/Makefile,v 1.77 2004/03/05 01:47:03 ache Exp $
-
-# must be before -I${DESTDIR}/usr/include
-CFLAGS+= -I${DESTDIR}/usr/include/gnu
+# $FreeBSD: src/gnu/usr.bin/binutils/gdb/Makefile,v 1.78 2004/03/05 16:12:31 ache Exp $
.include "../Makefile.inc0"
@@ -61,6 +58,7 @@
CFLAGS+= -I${.CURDIR}/${TARGET_ARCH}
CFLAGS+= -I${SRCDIR}/binutils -I${SRCDIR}/bfd
CFLAGS+= -I${GDBDIR}/gdb -I${GDBDIR}/gdb/config
+CFLAGS+= -I${DESTDIR}/usr/include/gnu
CFLAGS+= -I$(.CURDIR)
YFLAGS=
==== //depot/projects/hammer/share/man/man9/DEVICE_IDENTIFY.9#2 (text+ko) ====
@@ -26,7 +26,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/share/man/man9/DEVICE_IDENTIFY.9,v 1.7 2002/03/16 18:07:07 schweikh Exp $
+.\" $FreeBSD: src/share/man/man9/DEVICE_IDENTIFY.9,v 1.9 2004/03/05 22:21:18 imp Exp $
.\"
.Dd March 10, 2001
.Dt DEVICE_IDENTIFY 9
@@ -54,6 +54,13 @@
for each resource (refer to
.Xr bus_set_resource 9
for more information).
+.Pp
+Since the device tree and the device driver tree are disjoint, the
+.Nm
+routine needs to take this into account.
+If you load and unload your device driver that has the identify
+routine, the child node has the potential for adding the same node
+multiple times.
.Sh EXAMPLES
The following pseudo-code shows an example of a function that
probes for a piece of hardware and registers it and its resource
@@ -74,10 +81,6 @@
}
}
.Ed
-.Sh RETURN VALUES
-Zero is returned on success,
-otherwise an appropriate error is returned (see
-.Xr errno 2 ) .
.Sh SEE ALSO
.Xr BUS_ADD_CHILD 9 ,
.Xr bus_set_resource 9 ,
==== //depot/projects/hammer/share/mk/bsd.cpu.mk#12 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/share/mk/bsd.cpu.mk,v 1.32 2004/01/31 02:17:11 bde Exp $
+# $FreeBSD: src/share/mk/bsd.cpu.mk,v 1.33 2004/03/05 15:59:33 bde Exp $
# Set default CPU compile flags and baseline CPUTYPE for each arch. The
# compile flags must support the minimum CPU type for each architecture but
@@ -11,7 +11,7 @@
. elif ${MACHINE_ARCH} == "alpha"
_CPUCFLAGS = -mcpu=ev4 -mtune=ev5
MACHINE_CPU = ev4
-.elif ${MACHINE_ARCH} == "amd64"
+. elif ${MACHINE_ARCH} == "amd64"
MACHINE_CPU = amd64 sse2 sse
. elif ${MACHINE_ARCH} == "ia64"
_CPUCFLAGS =
@@ -88,13 +88,13 @@
# unordered list to make it easy for client makefiles to test for the
# presence of a CPU feature.
-.if ${MACHINE_ARCH} == "i386"
-. if ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \
+. if ${MACHINE_ARCH} == "i386"
+. if ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \
${CPUTYPE} == "athlon-4"
MACHINE_CPU = athlon-xp k7 3dnow sse mmx k6 k5 i586 i486 i386
-. elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird"
+. elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird"
MACHINE_CPU = athlon k7 3dnow mmx k6 k5 i586 i486 i386
-. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2"
+. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2"
MACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386
. elif ${CPUTYPE} == "k6"
MACHINE_CPU = mmx k6 k5 i586 i486 i386
==== //depot/projects/hammer/sys/compat/ndis/kern_ndis.c#7 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/ndis/kern_ndis.c,v 1.39 2004/02/14 20:57:32 wpaul Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/ndis/kern_ndis.c,v 1.40 2004/03/05 22:42:16 jhb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -244,7 +244,6 @@
}
wakeup(die);
- mtx_lock(&Giant);
kthread_exit(0);
}
==== //depot/projects/hammer/sys/dev/aac/aac.c#19 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.89 2004/02/25 05:41:44 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.90 2004/03/05 22:42:16 jhb Exp $");
/*
* Driver for the Adaptec 'FSA' family of PCI/SCSI RAID adapters.
@@ -814,7 +814,6 @@
AAC_LOCK_RELEASE(&sc->aac_io_lock);
wakeup(sc->aac_dev);
- mtx_lock(&Giant);
kthread_exit(0);
}
==== //depot/projects/hammer/sys/dev/acpica/acpi_cpu.c#14 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.30 2004/03/04 05:17:52 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.31 2004/03/05 18:08:23 njl Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -709,7 +709,8 @@
SYSCTL_ADD_PROC(&acpi_cpu_sysctl_ctx,
SYSCTL_CHILDREN(acpi_cpu_sysctl_tree),
OID_AUTO, "cx_history", CTLTYPE_STRING | CTLFLAG_RD,
- NULL, 0, acpi_cpu_history_sysctl, "A", "");
+ NULL, 0, acpi_cpu_history_sysctl, "A",
+ "count of full sleeps for Cx state / short sleeps");
#ifdef notyet
/* Signal platform that we can handle _CST notification. */
==== //depot/projects/hammer/sys/dev/acpica/acpi_thermal.c#12 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_thermal.c,v 1.39 2004/03/03 18:34:42 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_thermal.c,v 1.40 2004/03/05 18:06:31 njl Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -449,7 +449,7 @@
}
/* Handle user override of active mode */
- if (sc->tz_requested > newactive)
+ if (sc->tz_requested != TZ_ACTIVE_NONE && sc->tz_requested < newactive)
newactive = sc->tz_requested;
/* update temperature-related flags */
==== //depot/projects/hammer/sys/dev/adlink/adlink.c#6 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/adlink/adlink.c,v 1.7 2004/02/21 21:10:40 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/adlink/adlink.c,v 1.8 2004/03/05 22:41:22 jhb Exp $");
#ifdef _KERNEL
#include <sys/param.h>
@@ -221,6 +221,7 @@
sc = arg;
idx = 0;
+ mtx_lock(&Giant);
for (;;) {
while (sc->stat[idx] == 0)
msleep(sc, NULL, PRIBIO, "loran", 1);
@@ -234,6 +235,7 @@
idx++;
idx %= NRING;
}
+ mtx_unlock(&Giant);
kthread_exit(0);
}
==== //depot/projects/hammer/sys/dev/md/md.c#23 (text+ko) ====
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $FreeBSD: src/sys/dev/md/md.c,v 1.113 2004/03/02 20:13:23 phk Exp $
+ * $FreeBSD: src/sys/dev/md/md.c,v 1.114 2004/03/05 22:42:16 jhb Exp $
*
*/
@@ -638,8 +638,8 @@
mtx_unlock(&sc->queue_mtx);
sc->procp = NULL;
wakeup(&sc->procp);
- if (!hasgiant)
- mtx_lock(&Giant);
+ if (hasgiant)
+ mtx_unlock(&Giant);
kthread_exit(0);
}
msleep(sc, &sc->queue_mtx, PRIBIO | PDROP, "mdwait", 0);
==== //depot/projects/hammer/sys/dev/pccbb/pccbb.c#22 (text+ko) ====
@@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/pccbb/pccbb.c,v 1.101 2004/01/04 22:10:00 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/pccbb/pccbb.c,v 1.102 2004/03/05 22:42:17 jhb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1053,7 +1053,6 @@
mtx_unlock(&sc->mtx);
}
sc->flags &= ~CBB_KTHREAD_RUNNING;
- mtx_lock(&Giant); /* kthread_exit drops */
kthread_exit(0);
}
==== //depot/projects/hammer/sys/dev/random/harvest.c#5 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/random/harvest.c,v 1.21 2003/11/17 23:02:21 markm Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/random/harvest.c,v 1.22 2004/03/05 22:42:17 jhb Exp $");
#include <sys/param.h>
#include <sys/kthread.h>
@@ -128,7 +128,6 @@
random_set_wakeup_exit(void *control)
{
wakeup(control);
- mtx_lock(&Giant);
kthread_exit(0);
/* NOTREACHED */
}
==== //depot/projects/hammer/sys/dev/utopia/utopia.c#4 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/utopia/utopia.c,v 1.4 2003/07/30 08:35:58 harti Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/utopia/utopia.c,v 1.5 2004/03/05 22:42:17 jhb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1512,7 +1512,6 @@
}
wakeup_one(&utopia_list);
UTP_RUNLOCK_LIST();
- mtx_lock(&Giant);
kthread_exit(0);
}
==== //depot/projects/hammer/sys/geom/bde/g_bde_work.c#10 (text+ko) ====
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/geom/bde/g_bde_work.c,v 1.23 2004/02/08 10:19:18 phk Exp $
+ * $FreeBSD: src/sys/geom/bde/g_bde_work.c,v 1.24 2004/03/05 22:42:17 jhb Exp $
*
* This source file contains the state-engine which makes things happen in the
* right order.
@@ -663,7 +663,6 @@
mtx_unlock(&sc->worklist_mutex);
sc->dead = 2;
wakeup(sc);
- mtx_lock(&Giant);
kthread_exit(0);
}
==== //depot/projects/hammer/sys/kern/kern_exec.c#19 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_exec.c,v 1.236 2004/02/18 00:54:17 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_exec.c,v 1.237 2004/03/05 22:38:26 jhb Exp $");
#include "opt_ktrace.h"
#include "opt_mac.h"
@@ -253,12 +253,14 @@
* that might allow a local user to illicitly obtain elevated
* privileges.
*/
+ mtx_lock(&Giant);
PROC_LOCK(p);
KASSERT((p->p_flag & P_INEXEC) == 0,
("%s(): process already has P_INEXEC flag", __func__));
if (p->p_flag & P_SA || p->p_numthreads > 1) {
if (thread_single(SINGLE_EXIT)) {
PROC_UNLOCK(p);
+ mtx_unlock(&Giant);
return (ERESTART); /* Try again later. */
}
/*
@@ -269,6 +271,7 @@
td->td_mailbox = NULL;
thread_single_end();
}
+ mtx_unlock(&Giant);
p->p_flag |= P_INEXEC;
PROC_UNLOCK(p);
==== //depot/projects/hammer/sys/kern/kern_exit.c#19 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_exit.c,v 1.223 2004/02/27 18:39:09 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_exit.c,v 1.224 2004/03/05 22:39:53 jhb Exp $");
#include "opt_compat.h"
#include "opt_ktrace.h"
@@ -97,7 +97,6 @@
sys_exit(struct thread *td, struct sys_exit_args *uap)
{
- mtx_lock(&Giant);
exit1(td, W_EXITCODE(uap->rval, 0));
/* NOTREACHED */
}
@@ -121,7 +120,12 @@
#endif
struct plimit *plim;
- GIANT_REQUIRED;
+ /*
+ * Drop Giant if caller has it. Eventually we should warn about
+ * being called with Giant held.
+ */
+ while (mtx_owned(&Giant))
+ mtx_unlock(&Giant);
p = td->td_proc;
if (p == initproc) {
@@ -133,6 +137,7 @@
/*
* MUST abort all other threads before proceeding past here.
*/
+ mtx_lock(&Giant);
PROC_LOCK(p);
if (p->p_flag & P_SA || p->p_numthreads > 1) {
/*
@@ -167,6 +172,7 @@
p->p_flag &= ~P_SA;
thread_single_end(); /* Don't need this any more. */
}
+ mtx_unlock(&Giant);
/*
* With this state set:
* Any thread entering the kernel from userspace will thread_exit()
@@ -197,17 +203,23 @@
}
#ifdef PGINPROF
+ mtx_lock(&Giant);
vmsizmon();
+ mtx_unlock(&Giant);
#endif
- STOPEVENT(p, S_EXIT, rv);
+ PROC_LOCK(p);
+ _STOPEVENT(p, S_EXIT, rv);
wakeup(&p->p_stype); /* Wakeup anyone in procfs' PIOCWAIT */
+ PROC_UNLOCK(p);
/*
* Check if any loadable modules need anything done at process exit.
* e.g. SYSV IPC stuff
* XXX what if one of these generates an error?
*/
+ mtx_lock(&Giant);
EVENTHANDLER_INVOKE(process_exit, p);
+ mtx_unlock(&Giant);
MALLOC(p->p_ru, struct rusage *, sizeof(struct rusage),
M_ZOMBIE, M_WAITOK);
@@ -238,6 +250,7 @@
* Reset any sigio structures pointing to us as a result of
* F_SETOWN with our pid.
*/
+ mtx_lock(&Giant); /* XXX: not sure if needed */
funsetownlst(&p->p_sigiolst);
/*
@@ -245,6 +258,7 @@
* This may block!
*/
fdfree(td);
+ mtx_unlock(&Giant);
/*
* Remove ourself from our leader's peer list and wake our leader.
@@ -259,6 +273,7 @@
}
mtx_unlock(&ppeers_lock);
+ mtx_lock(&Giant);
/* The next two chunks should probably be moved to vmspace_exit. */
vm = p->p_vmspace;
/*
@@ -345,6 +360,7 @@
fixjobc(p, p->p_pgrp, 0);
sx_xunlock(&proctree_lock);
(void)acct_process(td);
+ mtx_unlock(&Giant);
#ifdef KTRACE
/*
* release trace file
@@ -368,7 +384,9 @@
*/
if ((vtmp = p->p_textvp) != NULL) {
p->p_textvp = NULL;
+ mtx_lock(&Giant);
vrele(vtmp);
+ mtx_unlock(&Giant);
}
/*
@@ -424,6 +442,7 @@
* Save exit status and final rusage info, adding in child rusage
* info and self times.
*/
+ mtx_lock(&Giant);
PROC_LOCK(p);
p->p_xstat = rv;
*p->p_ru = p->p_stats->p_ru;
@@ -436,6 +455,7 @@
* Notify interested parties of our demise.
*/
KNOTE(&p->p_klist, NOTE_EXIT);
+ mtx_unlock(&Giant);
/*
* Just delete all entries in the p_klist. At this point we won't
* report any more events, and there are nasty race conditions that
@@ -580,7 +600,6 @@
}
if (uap->options &~ (WUNTRACED|WNOHANG|WCONTINUED|WLINUXCLONE))
return (EINVAL);
- mtx_lock(&Giant);
loop:
nfound = 0;
sx_xlock(&proctree_lock);
@@ -649,7 +668,6 @@
wakeup(t);
PROC_UNLOCK(t);
sx_xunlock(&proctree_lock);
- mtx_unlock(&Giant);
return (0);
}
@@ -669,6 +687,7 @@
* all other writes to this proc are visible now, so
* no more locking is needed for p.
*/
+ mtx_lock(&Giant);
PROC_LOCK(p);
p->p_xstat = 0; /* XXX: why? */
PROC_UNLOCK(p);
@@ -677,6 +696,7 @@
PROC_UNLOCK(q);
FREE(p->p_ru, M_ZOMBIE);
p->p_ru = NULL;
+ mtx_unlock(&Giant);
/*
* Decrement the count of procs running with this uid.
@@ -696,6 +716,7 @@
/*
* do any thread-system specific cleanups
*/
+ mtx_lock(&Giant);
thread_wait(p);
/*
@@ -704,6 +725,7 @@
* release while still running in process context.
*/
vm_waitproc(p);
+ mtx_unlock(&Giant);
#ifdef MAC
mac_destroy_proc(p);
#endif
@@ -713,7 +735,6 @@
sx_xlock(&allproc_lock);
nprocs--;
sx_xunlock(&allproc_lock);
- mtx_unlock(&Giant);
return (0);
}
mtx_lock_spin(&sched_lock);
@@ -740,7 +761,6 @@
PROC_UNLOCK(p);
error = 0;
}
- mtx_unlock(&Giant);
return (error);
}
mtx_unlock_spin(&sched_lock);
@@ -757,30 +777,25 @@
} else
error = 0;
- mtx_unlock(&Giant);
return (error);
}
PROC_UNLOCK(p);
}
if (nfound == 0) {
sx_xunlock(&proctree_lock);
- mtx_unlock(&Giant);
return (ECHILD);
}
if (uap->options & WNOHANG) {
sx_xunlock(&proctree_lock);
td->td_retval[0] = 0;
- mtx_unlock(&Giant);
return (0);
}
PROC_LOCK(q);
sx_xunlock(&proctree_lock);
error = msleep(q, &q->p_mtx, PWAIT | PCATCH, "wait", 0);
PROC_UNLOCK(q);
- if (error) {
- mtx_unlock(&Giant);
- return (error);
- }
+ if (error)
+ return (error);
goto loop;
}
==== //depot/projects/hammer/sys/kern/kern_fork.c#26 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_fork.c,v 1.216 2004/03/04 09:56:29 bde Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_fork.c,v 1.217 2004/03/05 22:37:32 jhb Exp $");
#include "opt_ktrace.h"
#include "opt_mac.h"
@@ -217,14 +217,15 @@
return (EINVAL);
p1 = td->td_proc;
- mtx_lock(&Giant);
/*
* Here we don't create a new process, but we divorce
* certain parts of a process from itself.
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list