Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Sep 2003 17:22:50 -0700 (PDT)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 38729 for review
Message-ID:  <200309280022.h8S0MoFM088233@repoman.freebsd.org>

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

Change 38729 by marcel@marcel_nfs on 2003/09/27 17:22:10

	IFC @38726

Affected files ...

.. //depot/projects/ia64/UPDATING#54 integrate
.. //depot/projects/ia64/etc/Makefile#35 integrate
.. //depot/projects/ia64/etc/defaults/devfs.rules#2 integrate
.. //depot/projects/ia64/etc/rc.d/ipfilter#11 integrate
.. //depot/projects/ia64/gnu/usr.bin/groff/tmac/mdoc.local#18 integrate
.. //depot/projects/ia64/lib/Makefile#38 integrate
.. //depot/projects/ia64/lib/libc/stdlib/malloc.c#19 integrate
.. //depot/projects/ia64/lib/libdisk/libdisk.h#15 integrate
.. //depot/projects/ia64/lib/libkiconv/Makefile#1 branch
.. //depot/projects/ia64/lib/libkiconv/kiconv.3#1 branch
.. //depot/projects/ia64/lib/libkiconv/quirks.c#1 branch
.. //depot/projects/ia64/lib/libkiconv/quirks.h#1 branch
.. //depot/projects/ia64/lib/libkiconv/xlat16_iconv.c#1 branch
.. //depot/projects/ia64/lib/libkiconv/xlat16_sysctl.c#1 branch
.. //depot/projects/ia64/lib/libkvm/kvm_getprocs.3#4 integrate
.. //depot/projects/ia64/lib/libkvm/kvm_proc.c#20 integrate
.. //depot/projects/ia64/lib/libpthread/Makefile#13 integrate
.. //depot/projects/ia64/lib/libpthread/arch/alpha/include/atomic_ops.h#3 integrate
.. //depot/projects/ia64/lib/libpthread/arch/alpha/include/pthread_md.h#3 integrate
.. //depot/projects/ia64/lib/libthr/Makefile#5 integrate
.. //depot/projects/ia64/release/i386/fixit_crunch.conf#7 integrate
.. //depot/projects/ia64/release/ia64/boot_crunch.conf#5 integrate
.. //depot/projects/ia64/release/pc98/fixit-small_crunch.conf#4 integrate
.. //depot/projects/ia64/release/pc98/fixit_crunch.conf#7 integrate
.. //depot/projects/ia64/rescue/rescue/Makefile#12 integrate
.. //depot/projects/ia64/sbin/devd/devd.8#9 integrate
.. //depot/projects/ia64/sbin/ipfw/ipfw.8#27 integrate
.. //depot/projects/ia64/sbin/mount_cd9660/Makefile#3 integrate
.. //depot/projects/ia64/sbin/mount_cd9660/mount_cd9660.8#6 integrate
.. //depot/projects/ia64/sbin/mount_cd9660/mount_cd9660.c#5 integrate
.. //depot/projects/ia64/sbin/mount_msdosfs/Makefile#6 integrate
.. //depot/projects/ia64/sbin/mount_msdosfs/iso22dos#2 delete
.. //depot/projects/ia64/sbin/mount_msdosfs/iso72dos#2 delete
.. //depot/projects/ia64/sbin/mount_msdosfs/koi2dos#2 delete
.. //depot/projects/ia64/sbin/mount_msdosfs/koi8u2dos#2 delete
.. //depot/projects/ia64/sbin/mount_msdosfs/mount_msdosfs.8#7 integrate
.. //depot/projects/ia64/sbin/mount_msdosfs/mount_msdosfs.c#5 integrate
.. //depot/projects/ia64/sbin/mount_ntfs/Makefile#3 integrate
.. //depot/projects/ia64/sbin/mount_ntfs/mount_ntfs.8#6 integrate
.. //depot/projects/ia64/sbin/mount_ntfs/mount_ntfs.c#4 integrate
.. //depot/projects/ia64/sbin/rcorder/rcorder.c#4 integrate
.. //depot/projects/ia64/sbin/route/route.8#4 integrate
.. //depot/projects/ia64/share/man/man4/amr.4#5 integrate
.. //depot/projects/ia64/share/man/man4/iir.4#5 integrate
.. //depot/projects/ia64/share/man/man9/Makefile#32 integrate
.. //depot/projects/ia64/share/man/man9/disk.9#1 branch
.. //depot/projects/ia64/share/man/man9/style.9#23 integrate
.. //depot/projects/ia64/share/mk/bsd.libnames.mk#19 integrate
.. //depot/projects/ia64/share/mk/sys.mk#11 integrate
.. //depot/projects/ia64/sys/alpha/alpha/promcons.c#9 integrate
.. //depot/projects/ia64/sys/alpha/tlsb/zs_tlsb.c#9 integrate
.. //depot/projects/ia64/sys/amd64/amd64/pmap.c#26 integrate
.. //depot/projects/ia64/sys/amd64/include/pmap.h#6 integrate
.. //depot/projects/ia64/sys/conf/NOTES#71 integrate
.. //depot/projects/ia64/sys/conf/files#103 integrate
.. //depot/projects/ia64/sys/conf/options#68 integrate
.. //depot/projects/ia64/sys/dev/acpica/Osd/OsdSynch.c#9 integrate
.. //depot/projects/ia64/sys/dev/acpica/acpi.c#43 integrate
.. //depot/projects/ia64/sys/dev/acpica/acpi_acad.c#9 integrate
.. //depot/projects/ia64/sys/dev/acpica/acpi_cmbat.c#15 integrate
.. //depot/projects/ia64/sys/dev/acpica/acpi_ec.c#19 integrate
.. //depot/projects/ia64/sys/dev/acpica/acpi_resource.c#12 integrate
.. //depot/projects/ia64/sys/dev/acpica/acpi_thermal.c#12 integrate
.. //depot/projects/ia64/sys/dev/adlink/adlink.c#6 integrate
.. //depot/projects/ia64/sys/dev/asr/asr.c#20 integrate
.. //depot/projects/ia64/sys/dev/ata/ata-all.c#43 integrate
.. //depot/projects/ia64/sys/dev/digi/digi.c#16 integrate
.. //depot/projects/ia64/sys/dev/fb/fb.c#12 integrate
.. //depot/projects/ia64/sys/dev/fb/fbreg.h#9 integrate
.. //depot/projects/ia64/sys/dev/gfb/gfb_pci.c#9 integrate
.. //depot/projects/ia64/sys/dev/iir/iir.c#9 integrate
.. //depot/projects/ia64/sys/dev/iir/iir.h#4 integrate
.. //depot/projects/ia64/sys/dev/iir/iir_ctrl.c#10 integrate
.. //depot/projects/ia64/sys/dev/iir/iir_pci.c#11 integrate
.. //depot/projects/ia64/sys/dev/isp/isp_freebsd.c#18 integrate
.. //depot/projects/ia64/sys/dev/kbd/kbd.c#9 integrate
.. //depot/projects/ia64/sys/dev/kbd/kbdreg.h#2 integrate
.. //depot/projects/ia64/sys/dev/md/md.c#34 integrate
.. //depot/projects/ia64/sys/dev/null/null.c#14 integrate
.. //depot/projects/ia64/sys/dev/ofw/ofw_console.c#11 integrate
.. //depot/projects/ia64/sys/dev/ofw/openfirmio.c#7 integrate
.. //depot/projects/ia64/sys/dev/sab/sab.c#15 integrate
.. //depot/projects/ia64/sys/dev/sio/sio.c#54 integrate
.. //depot/projects/ia64/sys/dev/syscons/syscons.c#23 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_tty.c#3 integrate
.. //depot/projects/ia64/sys/dev/zs/zs.c#13 integrate
.. //depot/projects/ia64/sys/fs/fdescfs/fdesc_vnops.c#15 integrate
.. //depot/projects/ia64/sys/fs/msdosfs/direntry.h#3 integrate
.. //depot/projects/ia64/sys/fs/msdosfs/msdosfs_conv.c#5 integrate
.. //depot/projects/ia64/sys/fs/msdosfs/msdosfs_iconv.c#1 branch
.. //depot/projects/ia64/sys/fs/msdosfs/msdosfs_lookup.c#4 integrate
.. //depot/projects/ia64/sys/fs/msdosfs/msdosfs_vfsops.c#21 integrate
.. //depot/projects/ia64/sys/fs/msdosfs/msdosfs_vnops.c#22 integrate
.. //depot/projects/ia64/sys/fs/msdosfs/msdosfsmount.h#6 integrate
.. //depot/projects/ia64/sys/fs/ntfs/ntfs.h#3 integrate
.. //depot/projects/ia64/sys/fs/ntfs/ntfs_iconv.c#1 branch
.. //depot/projects/ia64/sys/fs/ntfs/ntfs_subr.c#13 integrate
.. //depot/projects/ia64/sys/fs/ntfs/ntfs_subr.h#3 integrate
.. //depot/projects/ia64/sys/fs/ntfs/ntfs_vfsops.c#16 integrate
.. //depot/projects/ia64/sys/fs/ntfs/ntfs_vnops.c#13 integrate
.. //depot/projects/ia64/sys/fs/ntfs/ntfsmount.h#2 integrate
.. //depot/projects/ia64/sys/fs/smbfs/smbfs_vfsops.c#18 integrate
.. //depot/projects/ia64/sys/fs/smbfs/smbfs_vnops.c#19 integrate
.. //depot/projects/ia64/sys/geom/geom_ctl.c#15 integrate
.. //depot/projects/ia64/sys/geom/geom_io.c#30 integrate
.. //depot/projects/ia64/sys/i386/bios/smapi.c#4 integrate
.. //depot/projects/ia64/sys/i386/i386/elan-mmcr.c#13 integrate
.. //depot/projects/ia64/sys/i386/i386/pmap.c#66 integrate
.. //depot/projects/ia64/sys/i386/isa/cy.c#10 integrate
.. //depot/projects/ia64/sys/i386/isa/pcvt/pcvt_drv.c#10 integrate
.. //depot/projects/ia64/sys/ia64/ia64/ssc.c#8 integrate
.. //depot/projects/ia64/sys/isa/vga_isa.c#8 integrate
.. //depot/projects/ia64/sys/isofs/cd9660/cd9660_iconv.c#1 branch
.. //depot/projects/ia64/sys/isofs/cd9660/cd9660_lookup.c#8 integrate
.. //depot/projects/ia64/sys/isofs/cd9660/cd9660_mount.h#2 integrate
.. //depot/projects/ia64/sys/isofs/cd9660/cd9660_rrip.c#6 integrate
.. //depot/projects/ia64/sys/isofs/cd9660/cd9660_util.c#4 integrate
.. //depot/projects/ia64/sys/isofs/cd9660/cd9660_vfsops.c#21 integrate
.. //depot/projects/ia64/sys/isofs/cd9660/cd9660_vnops.c#17 integrate
.. //depot/projects/ia64/sys/isofs/cd9660/iso.h#5 integrate
.. //depot/projects/ia64/sys/kern/kern_conf.c#23 integrate
.. //depot/projects/ia64/sys/kern/kern_exec.c#54 integrate
.. //depot/projects/ia64/sys/kern/kern_sig.c#66 integrate
.. //depot/projects/ia64/sys/kern/subr_devstat.c#10 integrate
.. //depot/projects/ia64/sys/kern/subr_xxx.c#9 delete
.. //depot/projects/ia64/sys/kern/sys_generic.c#27 integrate
.. //depot/projects/ia64/sys/kern/tty_cons.c#16 integrate
.. //depot/projects/ia64/sys/kern/tty_pty.c#15 integrate
.. //depot/projects/ia64/sys/kern/tty_tty.c#10 integrate
.. //depot/projects/ia64/sys/kern/vfs_default.c#27 integrate
.. //depot/projects/ia64/sys/kern/vfs_mount.c#21 integrate
.. //depot/projects/ia64/sys/libkern/iconv.c#7 integrate
.. //depot/projects/ia64/sys/libkern/iconv_converter_if.m#2 integrate
.. //depot/projects/ia64/sys/libkern/iconv_xlat.c#5 integrate
.. //depot/projects/ia64/sys/libkern/iconv_xlat16.c#1 branch
.. //depot/projects/ia64/sys/modules/Makefile#64 integrate
.. //depot/projects/ia64/sys/modules/cd9660/Makefile#3 integrate
.. //depot/projects/ia64/sys/modules/cd9660_iconv/Makefile#1 branch
.. //depot/projects/ia64/sys/modules/libiconv/Makefile#3 integrate
.. //depot/projects/ia64/sys/modules/msdosfs/Makefile#4 integrate
.. //depot/projects/ia64/sys/modules/msdosfs_iconv/Makefile#1 branch
.. //depot/projects/ia64/sys/modules/ntfs/Makefile#3 integrate
.. //depot/projects/ia64/sys/modules/ntfs_iconv/Makefile#1 branch
.. //depot/projects/ia64/sys/net/if_tun.c#18 integrate
.. //depot/projects/ia64/sys/net/if_tunvar.h#2 integrate
.. //depot/projects/ia64/sys/net80211/ieee80211_ioctl.c#6 integrate
.. //depot/projects/ia64/sys/net80211/ieee80211_ioctl.h#3 integrate
.. //depot/projects/ia64/sys/net80211/ieee80211_node.c#8 integrate
.. //depot/projects/ia64/sys/net80211/ieee80211_node.h#6 integrate
.. //depot/projects/ia64/sys/net80211/ieee80211_proto.c#4 integrate
.. //depot/projects/ia64/sys/net80211/ieee80211_var.h#6 integrate
.. //depot/projects/ia64/sys/netncp/ncp_mod.c#7 integrate
.. //depot/projects/ia64/sys/netsmb/smb_dev.c#13 integrate
.. //depot/projects/ia64/sys/opencrypto/cryptodev.c#13 integrate
.. //depot/projects/ia64/sys/pc98/pc98/pc98gdc.c#7 integrate
.. //depot/projects/ia64/sys/pc98/pc98/sio.c#27 integrate
.. //depot/projects/ia64/sys/powerpc/include/cpu.h#11 integrate
.. //depot/projects/ia64/sys/powerpc/powerpc/clock.c#10 integrate
.. //depot/projects/ia64/sys/powerpc/powerpc/cpu.c#2 integrate
.. //depot/projects/ia64/sys/sys/conf.h#23 integrate
.. //depot/projects/ia64/sys/sys/cons.h#5 integrate
.. //depot/projects/ia64/sys/sys/iconv.h#5 integrate
.. //depot/projects/ia64/sys/sys/param.h#44 integrate
.. //depot/projects/ia64/sys/sys/signalvar.h#15 integrate
.. //depot/projects/ia64/sys/sys/systm.h#29 integrate
.. //depot/projects/ia64/sys/vm/uma_dbg.c#11 integrate
.. //depot/projects/ia64/sys/vm/vm_map.c#65 integrate
.. //depot/projects/ia64/sys/vm/vm_map.h#27 integrate
.. //depot/projects/ia64/sys/vm/vm_mmap.c#25 integrate
.. //depot/projects/ia64/usr.bin/killall/killall.c#10 integrate
.. //depot/projects/ia64/usr.sbin/sysinstall/config.c#16 integrate

Differences ...

==== //depot/projects/ia64/UPDATING#54 (text+ko) ====

@@ -17,6 +17,10 @@
 	developers choose to disable these features on build machines
 	to maximize performance.
 
+20030926:
+	kiconv(3) has been added. mount_msdosfs(8), mount_ntfs(8) and
+	mount_cd9660(8) need to be in sync with kernel.
+
 20030925:
 	Configuring a system to use IPFILTER now requires that PFIL_HOOKS
 	also be explicitly configured.  Previously this dependency was
@@ -1375,4 +1379,4 @@
 Contact Warner Losh if you have any questions about your use of
 this document.
 
-$FreeBSD: src/UPDATING,v 1.268 2003/09/25 16:12:12 sam Exp $
+$FreeBSD: src/UPDATING,v 1.269 2003/09/27 14:12:39 fjoe Exp $

==== //depot/projects/ia64/etc/Makefile#35 (text+ko) ====

@@ -1,5 +1,5 @@
 #	from: @(#)Makefile	5.11 (Berkeley) 5/21/91
-# $FreeBSD: src/etc/Makefile,v 1.318 2003/09/18 16:35:43 markm Exp $
+# $FreeBSD: src/etc/Makefile,v 1.319 2003/09/27 17:33:03 markm Exp $
 
 .if !defined(NO_SENDMAIL)
 SUBDIR=	sendmail
@@ -11,7 +11,7 @@
 	hosts hosts.allow hosts.equiv hosts.lpd \
 	inetd.conf login.access login.conf \
 	mac.conf motd netconfig network.subr networks newsyslog.conf \
-	phones printcap profile protocols \
+	phones profile protocols \
 	rc rc.firewall rc.firewall6 rc.sendmail rc.shutdown \
 	rc.subr remote rpc services \
 	shells sysctl.conf syslog.conf usbd.conf \
@@ -79,6 +79,11 @@
 .if !defined(NO_I4B)
 	cd ${.CURDIR}/isdn; ${MAKE} install
 .endif
+.if !defined(NO_LPR)
+	cd ${.CURDIR}; \
+	    ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \
+		printcap ${DESTDIR}/etc
+.endif
 .if !defined(NO_SENDMAIL)
 	cd ${.CURDIR}/sendmail; ${MAKE} distribution
 .endif

==== //depot/projects/ia64/etc/defaults/devfs.rules#2 (text+ko) ====

@@ -13,7 +13,7 @@
 # references must include a dollar sign '$' in-front of the
 # name to be expanded properly.
 #
-# $FreeBSD: src/etc/defaults/devfs.rules,v 1.1 2003/08/20 06:15:18 mtm Exp $
+# $FreeBSD: src/etc/defaults/devfs.rules,v 1.2 2003/09/26 10:32:21 phk Exp $
 #
 
 # Very basic and secure ruleset: Hide everything.
@@ -28,6 +28,7 @@
 [devfsrules_unhide_basic=2]
 add path null unhide
 add path zero unhide
+add path crypto unhide
 add path random unhide
 add path urandom unhide
 

==== //depot/projects/ia64/etc/rc.d/ipfilter#11 (text+ko) ====

@@ -1,7 +1,7 @@
 #!/bin/sh
 #
 # $NetBSD: ipfilter,v 1.10 2001/02/28 17:03:50 lukem Exp $
-# $FreeBSD: src/etc/rc.d/ipfilter,v 1.11 2003/07/30 18:53:59 mtm Exp $
+# $FreeBSD: src/etc/rc.d/ipfilter,v 1.12 2003/09/27 13:50:47 mux Exp $
 #
 
 # PROVIDE: ipfilter
@@ -40,7 +40,7 @@
 case ${OSTYPE} in
 FreeBSD)
 	# load ipfilter kernel module if needed
-	if ! sysctl net.inet.ipf.fr_pass > /dev/null 2>&1; then
+	if ! kldstat -v | grep "IP Filter" > /dev/null 2>&1; then
 		if kldload ipl; then
 			info 'IP-filter module loaded.'
 		else
@@ -79,12 +79,15 @@
 	echo "Enabling ipfilter."
 	case ${OSTYPE} in
 	FreeBSD)
-		${ipfilter_program:-/sbin/ipf} -EFa
+		if [ `sysctl -n net.inet.ipf.fr_running` -eq 0 ]; then
+			${ipfilter_program:-/sbin/ipf} -E
+		fi 
+		${ipfilter_program:-/sbin/ipf} -Fa
 		if [ -r "${ipfilter_rules}" ]; then
 			${ipfilter_program:-/sbin/ipf} \
 			    -f "${ipfilter_rules}" ${ipfilter_flags}
 		fi
-		${ipfilter_program:-/sbin/ipf} -6 -EFa
+		${ipfilter_program:-/sbin/ipf} -6 -Fa
 		if [ -r "${ipv6_ipfilter_rules}" ]; then
 			${ipfilter_program:-/sbin/ipf} -6 \
 			    -f "${ipv6_ipfilter_rules}" ${ipfilter_flags}
@@ -104,17 +107,21 @@
 
 ipfilter_stop()
 {
-	case ${OSTYPE} in
-	FreeBSD)
-		echo "Saving firewall state tables"
-		${ipfs_program:-/sbin/ipfs} -W ${ipfs_flags}
-		;;
-	NetBSD)
-		;;
-	esac
-	# XXX - The following command is not effective for 'lkm's
-	echo "Disabling ipfilter."
-	/sbin/ipf -D
+	# XXX - The ipf -D command is not effective for 'lkm's
+	if [ `sysctl -n net.inet.ipf.fr_running` -eq 1 ]; then
+		case ${OSTYPE} in
+		FreeBSD)
+			echo "Saving firewall state tables"
+			${ipfs_program:-/sbin/ipfs} -W ${ipfs_flags}
+			echo "Disabling ipfilter."
+			${ipfilter_program:-/sbin/ipf} -D
+			;;
+		NetBSD)
+			echo "Disabling ipfilter."
+			/sbin/ipf -D
+			;;
+		esac
+	fi
 }
 
 ipfilter_reload()
@@ -157,7 +164,7 @@
 	case ${OSTYPE} in
 	FreeBSD)
 		# Don't resync if ipfilter is not loaded
-		[ sysctl net.inet.ipf.fr_pass > /dev/null 2>&1 ] && return
+		[ kldstat -v | grep "IP Filter" > /dev/null 2>&1 ] && return
 		;;
 	esac
 	${ipfilter_program:-/sbin/ipf} -y ${ipfilter_flags}

==== //depot/projects/ia64/gnu/usr.bin/groff/tmac/mdoc.local#18 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/gnu/usr.bin/groff/tmac/mdoc.local,v 1.30 2003/09/20 21:32:26 ru Exp $
+.\" $FreeBSD: src/gnu/usr.bin/groff/tmac/mdoc.local,v 1.31 2003/09/26 20:26:20 fjoe Exp $
 .\"
 .\"     %beginstrip%
 .
@@ -43,6 +43,7 @@
 .ds doc-str-Lb-libfetch    File Transfer Library (libfetch, \-lfetch)
 .ds doc-str-Lb-libgeom     Userland API Library for kernel GEOM subsystem (libgeom, \-lgeom)
 .ds doc-str-Lb-libipx      IPX Address Conversion Support Library (libipx, \-lipx)
+.ds doc-str-Lb-libkiconv   Kernel side iconv library (libkiconv, \-lkiconv)
 .ds doc-str-Lb-libmd       Message Digest (MD4, MD5, etc.) Support Library (libmd, \-lmd)
 .ds doc-str-Lb-libnetgraph Netgraph User Library (libnetgraph, \-lnetgraph)
 .ds doc-str-Lb-libpam      PAM Library (libpam, \-lpam)

==== //depot/projects/ia64/lib/Makefile#38 (text+ko) ====

@@ -1,5 +1,5 @@
 #	@(#)Makefile	8.1 (Berkeley) 6/4/93
-# $FreeBSD: src/lib/Makefile,v 1.171 2003/08/29 10:35:00 phk Exp $
+# $FreeBSD: src/lib/Makefile,v 1.172 2003/09/26 20:26:20 fjoe Exp $
 
 # To satisfy shared library or ELF linkage when only the libraries being
 # built are visible:
@@ -26,7 +26,7 @@
 	${_compat} libalias ${_libatm} ${_libbind} libbz2 libc ${_libc_r} \
 	libcalendar libcam libcompat libdevinfo libdevstat ${_libdisk} \
 	libedit libexpat libfetch libform libftpio libgeom ${_libio} libipsec \
-	libipx libisc libmenu ${_libmilter} ${_libmp} ${_libncp} \
+	libipx libisc libkiconv libmenu ${_libmilter} ${_libmp} ${_libncp} \
 	libnetgraph libopie libpam libpanel libpcap ${_libpthread} \
 	${_libsm} ${_libsmb} ${_libsmdb} ${_libsmutil} \
 	libstand libtelnet ${_libthr} libufs libugidfw ${_libusbhid} \

==== //depot/projects/ia64/lib/libc/stdlib/malloc.c#19 (text+ko) ====

@@ -9,17 +9,17 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/stdlib/malloc.c,v 1.77 2003/07/29 11:16:14 phk Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/stdlib/malloc.c,v 1.79 2003/09/27 18:58:26 phk Exp $");
 
 /*
- * Defining EXTRA_SANITY will enable extra checks which are related
+ * Defining MALLOC_EXTRA_SANITY will enable extra checks which are related
  * to internal conditions and consistency in malloc.c. This has a
  * noticeable runtime performance hit, and generally will not do you
  * any good unless you fiddle with the internals of malloc or want
  * to catch random pointer corruption as early as possible.
  */
-#ifndef MALLOC_EXTRA_SANITY
-#undef MALLOC_EXTRA_SANITY
+#ifndef MALLOC_MALLOC_EXTRA_SANITY
+#undef MALLOC_MALLOC_EXTRA_SANITY
 #endif
 
 /*
@@ -76,8 +76,8 @@
 #   include "libc_private.h"
 #   include "spinlock.h"
     static spinlock_t thread_lock	= _SPINLOCK_INITIALIZER;
-#   define THREAD_LOCK()		if (__isthreaded) _SPINLOCK(&thread_lock);
-#   define THREAD_UNLOCK()		if (__isthreaded) _SPINUNLOCK(&thread_lock);
+#   define _MALLOC_LOCK()		if (__isthreaded) _SPINLOCK(&thread_lock);
+#   define _MALLOC_UNLOCK()		if (__isthreaded) _SPINUNLOCK(&thread_lock);
 #endif /* __FreeBSD__ */
 
 #if defined(__sparc__) && defined(sun)
@@ -184,12 +184,12 @@
 #define pageround(foo) (((foo) + (malloc_pagemask))&(~(malloc_pagemask)))
 #define ptr2index(foo) (((u_long)(foo) >> malloc_pageshift)-malloc_origo)
 
-#ifndef THREAD_LOCK
-#define THREAD_LOCK()
+#ifndef _MALLOC_LOCK
+#define _MALLOC_LOCK()
 #endif
 
-#ifndef THREAD_UNLOCK
-#define THREAD_UNLOCK()
+#ifndef _MALLOC_UNLOCK
+#define _MALLOC_UNLOCK()
 #endif
 
 #ifndef MMAP_FD
@@ -331,22 +331,22 @@
     result = (caddr_t)pageround((u_long)sbrk(0));
     tail = result + (pages << malloc_pageshift);
     if (tail < result)
-	return 0;
+	return (NULL);
 
     if (brk(tail)) {
-#ifdef EXTRA_SANITY
-	wrterror("(ES): map_pages fails\n");
-#endif /* EXTRA_SANITY */
-	return 0;
+#ifdef MALLOC_EXTRA_SANITY
+	wrterror("(ES): map_pages fails.\n");
+#endif /* MALLOC_EXTRA_SANITY */
+	return (NULL);
     }
 
     last_index = ptr2index(tail) - 1;
     malloc_brk = tail;
 
     if ((last_index+1) >= malloc_ninfo && !extend_pgdir(last_index))
-	return 0;;
+	return (NULL);
 
-    return result;
+    return (result);
 }
 
 /*
@@ -383,8 +383,8 @@
 
     /* Get new pages */
     new = (struct pginfo**) MMAP(i * malloc_pagesize);
-    if (new == (struct pginfo **)-1)
-	return 0;
+    if (new == MAP_FAILED)
+	return (0);
 
     /* Copy the old stuff */
     memcpy(new, page_dir,
@@ -399,7 +399,7 @@
 
     /* Now free the old stuff */
     munmap(old, oldlen);
-    return 1;
+    return (1);
 }
 
 /*
@@ -421,9 +421,9 @@
 	    malloc_pageshift++;
 #endif
 
-#ifdef EXTRA_SANITY
+#ifdef MALLOC_EXTRA_SANITY
     malloc_junk = 1;
-#endif /* EXTRA_SANITY */
+#endif /* MALLOC_EXTRA_SANITY */
 
     for (i = 0; i < 3; i++) {
 	if (i == 0) {
@@ -439,7 +439,7 @@
 	} else {
 	    p = _malloc_options;
 	}
-	for (; p && *p; p++) {
+	for (; p != NULL && *p != '\0'; p++) {
 	    switch (*p) {
 		case '>': malloc_cache   <<= 1; break;
 		case '<': malloc_cache   >>= 1; break;
@@ -464,7 +464,7 @@
 		default:
 		    j = malloc_abort;
 		    malloc_abort = 0;
-		    wrtwarning("unknown char in MALLOC_OPTIONS\n");
+		    wrtwarning("unknown char in MALLOC_OPTIONS.\n");
 		    malloc_abort = j;
 		    break;
 	    }
@@ -498,7 +498,7 @@
     page_dir = (struct pginfo **) MMAP(malloc_pagesize);
 
     if (page_dir == (struct pginfo **) -1)
-	wrterror("mmap(2) failed, check limits\n");
+	wrterror("mmap(2) failed, check limits.\n");
 
     /*
      * We need a maximum of malloc_pageshift buckets, steal these from the
@@ -509,6 +509,9 @@
 
     malloc_ninfo = malloc_pagesize / sizeof *page_dir;
 
+    /* Been here, done that */
+    malloc_started++;
+
     /* Recalculate the cache size in bytes, and make sure it's nonzero */
 
     if (!malloc_cache)
@@ -521,9 +524,6 @@
      * We can sbrk(2) further back when we keep this on a low address.
      */
     px = (struct pgfree *) imalloc (sizeof *px);
-
-    /* Been here, done that */
-    malloc_started++;
 }
 
 /*
@@ -532,41 +532,41 @@
 static void *
 malloc_pages(size_t size)
 {
-    void *p, *delay_free = 0;
+    void *p, *delay_free = NULL;
     size_t i;
     struct pgfree *pf;
     u_long index;
 
     size = pageround(size);
 
-    p = 0;
+    p = NULL;
 
     /* Look for free pages before asking for more */
     for(pf = free_list.next; pf; pf = pf->next) {
 
-#ifdef EXTRA_SANITY
+#ifdef MALLOC_EXTRA_SANITY
 	if (pf->size & malloc_pagemask)
-	    wrterror("(ES): junk length entry on free_list\n");
+	    wrterror("(ES): junk length entry on free_list.\n");
 	if (!pf->size)
-	    wrterror("(ES): zero length entry on free_list\n");
+	    wrterror("(ES): zero length entry on free_list.\n");
 	if (pf->page == pf->end)
-	    wrterror("(ES): zero entry on free_list\n");
+	    wrterror("(ES): zero entry on free_list.\n");
 	if (pf->page > pf->end) 
-	    wrterror("(ES): sick entry on free_list\n");
+	    wrterror("(ES): sick entry on free_list.\n");
 	if ((void*)pf->page >= (void*)sbrk(0))
-	    wrterror("(ES): entry on free_list past brk\n");
+	    wrterror("(ES): entry on free_list past brk.\n");
 	if (page_dir[ptr2index(pf->page)] != MALLOC_FREE) 
-	    wrterror("(ES): non-free first page on free-list\n");
+	    wrterror("(ES): non-free first page on free-list.\n");
 	if (page_dir[ptr2index(pf->end)-1] != MALLOC_FREE)
-	    wrterror("(ES): non-free last page on free-list\n");
-#endif /* EXTRA_SANITY */
+	    wrterror("(ES): non-free last page on free-list.\n");
+#endif /* MALLOC_EXTRA_SANITY */
 
 	if (pf->size < size)
 	    continue;
 
 	if (pf->size == size) {
 	    p = pf->page;
-	    if (pf->next)
+	    if (pf->next != NULL)
 		    pf->next->prev = pf->prev;
 	    pf->prev->next = pf->next;
 	    delay_free = pf;
@@ -579,18 +579,18 @@
 	break;
     }
 
-#ifdef EXTRA_SANITY
-    if (p && page_dir[ptr2index(p)] != MALLOC_FREE)
-	wrterror("(ES): allocated non-free page on free-list\n");
-#endif /* EXTRA_SANITY */
+#ifdef MALLOC_EXTRA_SANITY
+    if (p != NULL && page_dir[ptr2index(p)] != MALLOC_FREE)
+	wrterror("(ES): allocated non-free page on free-list.\n");
+#endif /* MALLOC_EXTRA_SANITY */
 
     size >>= malloc_pageshift;
 
     /* Map new pages */
-    if (!p)
+    if (p == NULL)
 	p = map_pages(size);
 
-    if (p) {
+    if (p != NULL) {
 
 	index = ptr2index(p);
 	page_dir[index] = MALLOC_FIRST;
@@ -602,13 +602,13 @@
     }
 
     if (delay_free) {
-	if (!px)
+	if (px == NULL)
 	    px = delay_free;
 	else
 	    ifree(delay_free);
     }
 
-    return p;
+    return (p);
 }
 
 /*
@@ -624,8 +624,8 @@
 
     /* Allocate a new bucket */
     pp = malloc_pages(malloc_pagesize);
-    if (!pp)
-	return 0;
+    if (pp == NULL)
+	return (0);
 
     /* Find length of admin structure */
     l = offsetof(struct pginfo, bits[0]);
@@ -637,9 +637,9 @@
 	bp = (struct  pginfo *)pp;
     } else {
 	bp = (struct  pginfo *)imalloc(l);
-	if (!bp) {
+	if (bp == NULL) {
 	    ifree(pp);
-	    return 0;
+	    return (0);
 	}
     }
 
@@ -678,7 +678,7 @@
 
     /* MALLOC_UNLOCK */
 
-    return 1;
+    return (1);
 }
 
 /*
@@ -704,8 +704,8 @@
 	j++;
 
     /* If it's empty, make a page more of that size chunks */
-    if (!page_dir[j] && !malloc_make_chunks(j))
-	return 0;
+    if (page_dir[j] == NULL && !malloc_make_chunks(j))
+	return (NULL);
 
     bp = page_dir[j];
 
@@ -725,7 +725,7 @@
     /* If there are no more free, remove from free-list */
     if (!--bp->free) {
 	page_dir[j] = bp->next;
-	bp->next = 0;
+	bp->next = NULL;
     }
 
     /* Adjust to the real offset of that chunk */
@@ -735,7 +735,7 @@
     if (malloc_junk)
 	memset((u_char*)bp->page + k, SOME_JUNK, bp->size);
 
-    return (u_char *)bp->page + k;
+    return ((u_char *)bp->page + k);
 }
 
 /*
@@ -746,22 +746,28 @@
 {
     void *result;
 
+    if (!malloc_started)
+	malloc_init();
+
     if (suicide)
 	abort();
 
     if ((size + malloc_pagesize) < size)	/* Check for overflow */
-	result = 0;
+	result = NULL;
     else if ((size + malloc_pagesize) >= (uintptr_t)page_dir)
-	result = 0;
+	result = NULL;
     else if (size <= malloc_maxsize)
-	result =  malloc_bytes(size);
+	result = malloc_bytes(size);
     else
-	result =  malloc_pages(size);
+	result = malloc_pages(size);
+
+    if (malloc_abort && result == NULL)
+	wrterror("allocation failed.\n");
 
-    if (malloc_zero && result)
+    if (malloc_zero && result != NULL)
 	memset(result, 0, size);
 
-    return result;
+    return (result);
 }
 
 /*
@@ -778,16 +784,21 @@
     if (suicide)
 	abort();
 
+    if (!malloc_started) {
+	wrtwarning("malloc() has never been called.\n");
+	return (NULL);
+    }
+	
     index = ptr2index(ptr);
 
     if (index < malloc_pageshift) {
-	wrtwarning("junk pointer, too low to make sense\n");
-	return 0;
+	wrtwarning("junk pointer, too low to make sense.\n");
+	return (NULL);
     }
 
     if (index > last_index) {
-	wrtwarning("junk pointer, too high to make sense\n");
-	return 0;
+	wrtwarning("junk pointer, too high to make sense.\n");
+	return (NULL);
     }
 
     mp = &page_dir[index];
@@ -796,26 +807,28 @@
 
 	/* Check the pointer */
 	if ((u_long)ptr & malloc_pagemask) {
-	    wrtwarning("modified (page-) pointer\n");
-	    return 0;
+	    wrtwarning("modified (page-) pointer.\n");
+	    return (NULL);
 	}
 
 	/* Find the size in bytes */
-	for (osize = malloc_pagesize; *++mp == MALLOC_FOLLOW;)
+	for (osize = malloc_pagesize; *(++mp) == MALLOC_FOLLOW;)
 	    osize += malloc_pagesize;
 
-        if (!malloc_realloc && 			/* unless we have to, */
+        if (!malloc_realloc && 			/* Unless we have to, */
 	  size <= osize && 			/* .. or are too small, */
 	  size > (osize - malloc_pagesize)) {	/* .. or can free a page, */
-	    return ptr;				/* don't do anything. */
+	    if (malloc_junk)
+		memset((char *)ptr + size, SOME_JUNK, osize-size);
+	    return (ptr);			/* ..don't do anything else. */
 	}
 
     } else if (*mp >= MALLOC_MAGIC) {		/* Chunk allocation */
 
 	/* Check the pointer for sane values */
 	if (((u_long)ptr & ((*mp)->size-1))) {
-	    wrtwarning("modified (chunk-) pointer\n");
-	    return 0;
+	    wrtwarning("modified (chunk-) pointer.\n");
+	    return (NULL);
 	}
 
 	/* Find the chunk index in the page */
@@ -823,27 +836,29 @@
 
 	/* Verify that it isn't a free chunk already */
         if ((*mp)->bits[i/MALLOC_BITS] & (1<<(i%MALLOC_BITS))) {
-	    wrtwarning("chunk is already free\n");
-	    return 0;
+	    wrtwarning("chunk is already free.\n");
+	    return (NULL);
 	}
 
 	osize = (*mp)->size;
 
 	if (!malloc_realloc &&		/* Unless we have to, */
-	  size < osize && 		/* ..or are too small, */
+	  size <= osize && 		/* ..or are too small, */
 	  (size > osize/2 ||	 	/* ..or could use a smaller size, */
 	  osize == malloc_minsize)) {	/* ..(if there is one) */
-	    return ptr;			/* ..Don't do anything */
+	    if (malloc_junk)
+		memset((char *)ptr + size, SOME_JUNK, osize-size);
+	    return (ptr);		/* ..don't do anything else. */
 	}
 
     } else {
-	wrtwarning("pointer to wrong page\n");
-	return 0;
+	wrtwarning("pointer to wrong page.\n");
+	return (NULL);
     }
 
     p = imalloc(size);
 
-    if (p) {
+    if (p != NULL) {
 	/* copy the lesser of the two sizes, and free the old one */
 	if (!size || !osize)
 	    ;
@@ -853,7 +868,7 @@
 	    memcpy(p, ptr, size);
 	ifree(ptr);
     } 
-    return p;
+    return (p);
 }
 
 /*
@@ -864,22 +879,22 @@
 free_pages(void *ptr, u_long index, struct pginfo const *info)
 {
     u_long i;
-    struct pgfree *pf, *pt=0;
+    struct pgfree *pf, *pt=NULL;
     u_long l;
     void *tail;
 
     if (info == MALLOC_FREE) {
-	wrtwarning("page is already free\n");
+	wrtwarning("page is already free.\n");
 	return;
     }
 
     if (info != MALLOC_FIRST) {
-	wrtwarning("pointer to wrong page\n");
+	wrtwarning("pointer to wrong page.\n");
 	return;
     }
 
     if ((u_long)ptr & malloc_pagemask) {
-	wrtwarning("modified (page-) pointer\n");
+	wrtwarning("modified (page-) pointer.\n");
 	return;
     }
 
@@ -899,26 +914,27 @@
     tail = (char *)ptr+l;
 
     /* add to free-list */
-    if (!px)
-	px = imalloc(sizeof *pt);	/* This cannot fail... */
+    if (px == NULL)
+	px = imalloc(sizeof *px);	/* This cannot fail... */
     px->page = ptr;
     px->end =  tail;
     px->size = l;
-    if (!free_list.next) {
+    if (free_list.next == NULL) {
 
 	/* Nothing on free list, put this at head */
 	px->next = free_list.next;
 	px->prev = &free_list;
 	free_list.next = px;
 	pf = px;
-	px = 0;
+	px = NULL;
 
     } else {
 
 	/* Find the right spot, leave pf pointing to the modified entry. */
 	tail = (char *)ptr+l;
 
-	for(pf = free_list.next; pf->end < ptr && pf->next; pf = pf->next)
+	for(pf = free_list.next; pf->end < ptr && pf->next != NULL;
+	    pf = pf->next)
 	    ; /* Race ahead here */
 
 	if (pf->page > tail) {
@@ -928,38 +944,38 @@
 	    pf->prev = px;
 	    px->prev->next = px;
 	    pf = px;
-	    px = 0;
+	    px = NULL;
 	} else if (pf->end == ptr ) {
 	    /* Append to the previous entry */
 	    pf->end = (char *)pf->end + l;
 	    pf->size += l;
-	    if (pf->next && pf->end == pf->next->page ) {
+	    if (pf->next != NULL && pf->end == pf->next->page ) {
 		/* And collapse the next too. */
 		pt = pf->next;
 		pf->end = pt->end;
 		pf->size += pt->size;
 		pf->next = pt->next;
-		if (pf->next)
+		if (pf->next != NULL)
 		    pf->next->prev = pf;
 	    }
 	} else if (pf->page == tail) {
 	    /* Prepend to entry */
 	    pf->size += l;
 	    pf->page = ptr;
-	} else if (!pf->next) {
+	} else if (pf->next == NULL) {
 	    /* Append at tail of chain */
-	    px->next = 0;
+	    px->next = NULL;
 	    px->prev = pf;
 	    pf->next = px;
 	    pf = px;
-	    px = 0;
+	    px = NULL;
 	} else {
-	    wrterror("freelist is destroyed\n");
+	    wrterror("freelist is destroyed.\n");
 	}
     }
     
     /* Return something to OS ? */
-    if (!pf->next &&				/* If we're the last one, */
+    if (pf->next == NULL &&			/* If we're the last one, */
       pf->size > malloc_cache &&		/* ..and the cache is full, */
       pf->end == malloc_brk &&			/* ..and none behind us, */
       malloc_brk == sbrk(0)) {			/* ..and it's OK to do... */
@@ -983,7 +999,7 @@
 
 	/* XXX: We could realloc/shrink the pagedir here I guess. */
     }
-    if (pt)
+    if (pt != NULL)
 	ifree(pt);
 }
 
@@ -1002,12 +1018,12 @@
     i = ((u_long)ptr & malloc_pagemask) >> info->shift;
 
     if (((u_long)ptr & (info->size-1))) {
-	wrtwarning("modified (chunk-) pointer\n");
+	wrtwarning("modified (chunk-) pointer.\n");
 	return;
     }
 
     if (info->bits[i/MALLOC_BITS] & (1<<(i%MALLOC_BITS))) {
-	wrtwarning("chunk is already free\n");
+	wrtwarning("chunk is already free.\n");
 	return;
     }
 
@@ -1038,10 +1054,10 @@
     /* Find & remove this page in the queue */
     while (*mp != info) {
 	mp = &((*mp)->next);
-#ifdef EXTRA_SANITY
+#ifdef MALLOC_EXTRA_SANITY
 	if (!*mp)
-		wrterror("(ES): Not on queue\n");
-#endif /* EXTRA_SANITY */
+		wrterror("(ES): Not on queue.\n");
+#endif /* MALLOC_EXTRA_SANITY */
     }
     *mp = info->next;
 
@@ -1060,11 +1076,11 @@
     u_long index;
 
     /* This is legal */
-    if (!ptr)
+    if (ptr == NULL)
 	return;
 
     if (!malloc_started) {
-	wrtwarning("malloc() has never been called\n");
+	wrtwarning("malloc() has never been called.\n");
 	return;
     }
 
@@ -1075,12 +1091,12 @@
     index = ptr2index(ptr);
 
     if (index < malloc_pageshift) {
-	wrtwarning("junk pointer, too low to make sense\n");
+	wrtwarning("junk pointer, too low to make sense.\n");
 	return;
     }
 
     if (index > last_index) {

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



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