PERFORCE change 34033 for review

Marcel Moolenaar marcel at FreeBSD.org
Thu Jul 3 13:39:05 PDT 2003


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

Change 34033 by marcel at marcel_nfs on 2003/07/03 13:38:24

	IFC @34032

Affected files ...

.. //depot/projects/ia64/contrib/groff/tmac/doc-common#11 integrate
.. //depot/projects/ia64/contrib/groff/tmac/doc.tmac#6 integrate
.. //depot/projects/ia64/contrib/groff/tmac/groff_mdoc.man#8 integrate
.. //depot/projects/ia64/etc/motd#3 integrate
.. //depot/projects/ia64/lib/libc/gen/exec.3#6 integrate
.. //depot/projects/ia64/lib/libpthread/thread/thr_kern.c#23 integrate
.. //depot/projects/ia64/lib/libpthread/thread/thr_select.c#3 integrate
.. //depot/projects/ia64/lib/libthr/thread/thr_mutex.c#12 integrate
.. //depot/projects/ia64/share/man/man5/group.5#4 integrate
.. //depot/projects/ia64/share/man/man5/linprocfs.5#5 integrate
.. //depot/projects/ia64/share/man/man9/bus_dma.9#5 integrate
.. //depot/projects/ia64/share/mk/bsd.dep.mk#12 integrate
.. //depot/projects/ia64/sys/alpha/alpha/mp_machdep.c#11 integrate
.. //depot/projects/ia64/sys/alpha/alpha/pmap.c#34 integrate
.. //depot/projects/ia64/sys/amd64/amd64/pmap.c#9 integrate
.. //depot/projects/ia64/sys/dev/firewire/fwohci_pci.c#19 integrate
.. //depot/projects/ia64/sys/dev/fxp/if_fxp.c#37 integrate
.. //depot/projects/ia64/sys/dev/lge/if_lge.c#13 integrate
.. //depot/projects/ia64/sys/dev/nge/if_nge.c#21 integrate
.. //depot/projects/ia64/sys/dev/pccbb/pccbb.c#30 integrate
.. //depot/projects/ia64/sys/dev/txp/if_txp.c#12 integrate
.. //depot/projects/ia64/sys/dev/wi/if_wi.c#43 integrate
.. //depot/projects/ia64/sys/fs/msdosfs/msdosfs_vnops.c#20 integrate
.. //depot/projects/ia64/sys/i386/i386/pmap.c#47 integrate
.. //depot/projects/ia64/sys/i386/isa/pcvt/pcvt_drv.c#9 integrate
.. //depot/projects/ia64/sys/ia64/ia64/pmap.c#70 integrate
.. //depot/projects/ia64/sys/kern/kern_sig.c#56 integrate
.. //depot/projects/ia64/sys/kern/kern_thr.c#9 integrate
.. //depot/projects/ia64/sys/kern/kern_thread.c#56 integrate
.. //depot/projects/ia64/sys/powerpc/powerpc/pmap.c#26 integrate
.. //depot/projects/ia64/sys/sparc64/sparc64/pmap.c#40 integrate
.. //depot/projects/ia64/sys/sys/param.h#37 integrate
.. //depot/projects/ia64/sys/sys/signalvar.h#14 integrate
.. //depot/projects/ia64/sys/vm/pmap.h#19 integrate
.. //depot/projects/ia64/sys/vm/vm_map.c#59 integrate

Differences ...

==== //depot/projects/ia64/contrib/groff/tmac/doc-common#11 (text+ko) ====

@@ -101,7 +101,7 @@
 .nr Ft 8n\" ?
 .nr Fx 1
 .nr Ic 10n
-.nr In 12n\" ?
+.nr In 12n
 .nr It 8n\" ?
 .nr Lb 11n
 .nr Li 16n
@@ -587,6 +587,25 @@
 ..
 .
 .
+.\" NS doc-check-depth macro
+.\" NS   check paired macros
+.
+.de doc-check-depth
+.  if \n[doc-list-depth] \{\
+.    tm mdoc warning: A .Bl directive has no matching .El (#\n[.c])
+.    nr doc-list-depth 0
+.  \}
+.  if \n[doc-display-depth] \{\
+.    tm mdoc warning: A .Bd directive has no matching .Ed (#\n[.c])
+.    nr doc-display-depth 0
+.  \}
+.  if \n[doc-fontmode-depth] \{\
+.    tm mdoc warning: A .Bf directive has no matching .Ef (#\n[.c])
+.    nr doc-fontmode-depth 0
+.  \}
+..
+.
+.
 .\" NS doc-end-macro macro
 .\" NS   finish output
 .
@@ -603,8 +622,7 @@
 .    pl +3v
 .  fl
 .
-.  if \n[doc-list-depth] \
-.    tm mdoc warning: list open at EOF!  A .Bl directive has no matching .El
+.  doc-check-depth
 .
 .  if \n[cR] \{\
 .    sp
@@ -834,6 +852,8 @@
 .
 .    in +\n[doc-subheader-indent]u
 .    ns
+.
+.    doc-check-depth
 .  \}
 ..
 .
@@ -898,6 +918,8 @@
 .      ne 2
 .    br
 .    ns
+.
+.    doc-check-depth
 .  \}
 ..
 .

==== //depot/projects/ia64/contrib/groff/tmac/doc.tmac#6 (text+ko) ====

@@ -683,7 +683,7 @@
 .    nr doc-curr-size \n[.ps]
 .
 .    ie \n[doc-in-synopsis-section] \{\
-.      if "\*[doc-macro-name]"Cd" \{\
+.      ie "\*[doc-macro-name]"Cd" \{\
 .        br
 .        if !\n[doc-indent-synopsis] \
 .          nr doc-indent-synopsis \n[doc-display-indent]u
@@ -694,6 +694,10 @@
 .        doc-print-recursive
 .        if !\n[doc-indent-synopsis-active] \
 .          in -\n[doc-indent-synopsis]u
+.      \}
+.      el \{\
+.        nop \*[doc-Nm-font]\c
+.        doc-print-recursive
 .    \}\}
 .    el \{\
 .      nop \*[doc-Nm-font]\c
@@ -820,22 +824,64 @@
 .
 .
 .\" NS In user macro
-.\" NS   #include statement - not callable
+.\" NS   #include statement in SYNOPSIS
+.\" NS   <header.h> if not in SYNOPSIS
 .\" NS
 .\" NS   this function causes a break; it uses the `Fd' font
 .\" NS
+.\" NS modifies:
+.\" NS   doc-arg-ptr
+.\" NS   doc-curr-font
+.\" NS   doc-curr-size
+.\" NS   doc-indent-synopsis
+.\" NS   doc-macro-name
+.\" NS
 .\" NS width register `In' set in doc-common
 .
 .de In
-.  ie ((\n[.$] == 1) & (\n[doc-arg-limit] == 0)) \{\
-.    doc-do-func-decl
-.    nop \*[doc-Fd-font]#include <\$1>
-.    br
-.    ft \n[doc-curr-font]
-.    ps \n[doc-curr-size]u
+.  if !\n[doc-arg-limit] \{\
+.    ie \n[.$] \{\
+.      ds doc-macro-name In
+.      doc-parse-args \$@
+.    \}
+.    el \
+.      tm Usage: .In include_file ... (#\n[.c])
 .  \}
+.
+.  if !\n[doc-arg-limit] \
+.    return
+.
+.  nr doc-arg-ptr +1
+.  doc-print-prefixes
+.  ie ((\n[doc-arg-limit] >= \n[doc-arg-ptr]) & (\n[doc-type\n[doc-arg-ptr]] == 2)) \{\
+.    nr doc-curr-font \n[.f]
+.    nr doc-curr-size \n[.ps]
+.
+.    ie \n[doc-in-synopsis-section] \{\
+.      ie "\*[doc-macro-name]"In" \{\
+.        doc-do-func-decl
+.        nop \*[doc-Fd-font]#include <\*[doc-arg\n[doc-arg-ptr]]>
+.        ft \n[doc-curr-font]
+.        ps \n[doc-curr-size]u
+.        br
+.        nr doc-arg-ptr +1
+.        ie (\n[doc-arg-limit] >= \n[doc-arg-ptr]) \
+.          doc-print-recursive
+.        el \
+.          doc-reset-args
+.      \}
+.      el \{\
+.        ds doc-arg\n[doc-arg-ptr] "<\*[doc-Pa-font]\*[doc-arg\n[doc-arg-ptr]]
+.        as doc-arg\n[doc-arg-ptr] \f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]>
+.        doc-print-recursive
+.    \}\}
+.    el \{\
+.      ds doc-arg\n[doc-arg-ptr] "<\*[doc-Pa-font]\*[doc-arg\n[doc-arg-ptr]]
+.      as doc-arg\n[doc-arg-ptr] \f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]>
+.      doc-print-recursive
+.  \}\}
 .  el \{\
-.    tm Usage: .In include_file -- In is not callable (#\n[.c])
+.    tm Usage: .In include_file ... (#\n[.c])
 .    doc-reset-args
 .  \}
 ..
@@ -4676,13 +4722,16 @@
 .    ds doc-arg\n[doc-arg-ptr] "\*[doc-func-arg]
 .
 .  if (\n[doc-func-arg-count] > 1) \{\
-.    nop \f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]\|,\)\c
+.    nop \f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]\|\c
+.    if !"\*[doc-arg\n[doc-arg-ptr]]"/*" \
+.      if !"\*[doc-arg\n[doc-arg-ptr]]"*/" \
+.        nop ,\)\c
 .    nop \)\*[doc-space\n[doc-arg-ptr]]\*[doc-Fa-font]\c
 .    nop \)\*[doc-arg\n[doc-arg-ptr]]\f[]\s[0]\c
 .  \}
 .
 .  if (\n[doc-func-arg-count] == 1) \{\
-.    nop \|\*[doc-Fa-font]\*[doc-arg\n[doc-arg-ptr]]\c
+.    nop \)\*[doc-Fa-font]\*[doc-arg\n[doc-arg-ptr]]\c
 .    nop \f[]\s[0]\c
 .  \}
 .  nr doc-func-arg-count +1
@@ -4755,7 +4804,7 @@
 .
 .    br
 .    if !\n[doc-indent-synopsis] \
-.      nr doc-indent-synopsis (8u * \n[doc-fixed-width]u)
+.      nr doc-indent-synopsis (4u * \n[doc-fixed-width]u)
 .    if !\n[doc-indent-synopsis-active] \
 .      in +\n[doc-indent-synopsis]u
 .    ti -\n[doc-indent-synopsis]u
@@ -4833,7 +4882,10 @@
 .  if (\n[doc-arg-limit] >= \n[doc-arg-ptr]) \{\
 .    if (\n[doc-type\n[doc-arg-ptr]] == 2) \{\
 .      nr doc-reg-ddfa (\n[doc-arg-ptr] - 1)
-.      nop \|\f[\n[doc-curr-font]]\s[\n[doc-curr-size]u],\)\c
+.      nop \f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]\|\c
+.      if !"\*[doc-arg\n[doc-arg-ptr]]"/*" \
+.        if !"\*[doc-arg\n[doc-arg-ptr]]"*/" \
+.          nop ,\)\c
 .      nop \)\*[doc-space\n[doc-reg-ddfa]]\f[]\s[0]\|\c
 .      doc-do-func-args
 .  \}\}
@@ -4917,7 +4969,7 @@
 .
 .    br
 .    if !\n[doc-indent-synopsis] \
-.      nr doc-indent-synopsis (8u * \n[doc-fixed-width]u)
+.      nr doc-indent-synopsis (4u * \n[doc-fixed-width]u)
 .  \}
 .
 .  \" start function box
@@ -6133,19 +6185,19 @@
 .
 .ds doc-str-Rv-std-prefix "The
 .ds doc-str-Rv-std-suffix "function returns the value\~0 if successful;
-.as doc-str-Rv-std-suffix " otherwise the value\~-1 is returned and
+.as doc-str-Rv-std-suffix " otherwise the value\~\-1 is returned and
 .as doc-str-Rv-std-suffix " the global variable \*[doc-Va-font]errno\f[]
 .as doc-str-Rv-std-suffix " is set to indicate the error.
 .
 .ds doc-str-Rv-stds-prefix "The
 .ds doc-str-Rv-stds-and    "and
 .ds doc-str-Rv-stds-suffix "functions return the value\~0 if successful;
-.as doc-str-Rv-stds-suffix " otherwise the value\~-1 is returned and
+.as doc-str-Rv-stds-suffix " otherwise the value\~\-1 is returned and
 .as doc-str-Rv-stds-suffix " the global variable \*[doc-Va-font]errno\f[]
 .as doc-str-Rv-stds-suffix " is set to indicate the error.
 .
 .ds doc-str-Rv-std0 "Upon successful completion, the value\~0 is returned;
-.as doc-str-Rv-std0 " otherwise the value\~-1 is returned and
+.as doc-str-Rv-std0 " otherwise the value\~\-1 is returned and
 .as doc-str-Rv-std0 " the global variable \*[doc-Va-font]errno\f[]
 .as doc-str-Rv-std0 " is set to indicate the error.
 .

==== //depot/projects/ia64/contrib/groff/tmac/groff_mdoc.man#8 (text+ko) ====

@@ -1398,15 +1398,25 @@
 .Pp
 The
 .Ql .In
-.Li ( #include
-statement)
-macro is the short form of the above example.
+macro, while in the
+.Sx SYNOPSIS
+section, represents the
+.Li #include
+statement, and is the short form of the above example.
 It specifies the C\~header file as being included in a C\~program.
-It also causes a line break, and is neither callable nor parsed.
+It also causes a line break.
+.Pp
+While not in the
+.Sx SYNOPSIS
+section, it represents the header file enclosed in angle brackets.
 .Pp
 .Dl Usage: .In Ao header file Ac
 .Pp
 .Bl -tag -width ".Li .In\ stdio.h" -compact -offset 15n
+.nr in-synopsis-section 1
+.It Li ".In stdio.h"
+.In stdio.h
+.nr in-synopsis-section 0
 .It Li ".In stdio.h"
 .In stdio.h
 .El

==== //depot/projects/ia64/etc/motd#3 (text+ko) ====

@@ -17,7 +17,7 @@
 `uname -a', along with any relevant error messages, and email it
 as a question to the questions at FreeBSD.org mailing list.  If you are
 unfamiliar with FreeBSD's directory layout, please refer to the hier(7)
-man page.  If you are not familiar with man pages, type `man man'.
+manual page.  If you are not familiar with manual pages, type `man man'.
 
 You may also use sysinstall(8) to re-enter the installation and
 configuration utility.  Edit /etc/motd to change this login announcement.

==== //depot/projects/ia64/lib/libc/gen/exec.3#6 (text+ko) ====

@@ -30,7 +30,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)exec.3	8.3 (Berkeley) 1/24/94
-.\" $FreeBSD: src/lib/libc/gen/exec.3,v 1.21 2003/06/29 17:33:34 gordon Exp $
+.\" $FreeBSD: src/lib/libc/gen/exec.3,v 1.22 2003/07/03 18:14:39 ru Exp $
 .\"
 .Dd January 24, 1994
 .Dt EXEC 3
@@ -50,11 +50,17 @@
 .In unistd.h
 .Vt extern char **environ ;
 .Ft int
-.Fn execl "const char *path" "const char *arg" "... /*" "(char *)0*/"
+.Fn execl "const char *path" "const char *arg" ... /* "(char *)0" */
 .Ft int
-.Fn execlp "const char *file" "const char *arg" "... /*" "(char *)0*/"
+.Fn execlp "const char *file" "const char *arg" ... /* "(char *)0" */
 .Ft int
-.Fn execle "const char *path" "const char *arg" "... /*" "(char *)0" "char *const envp[]*/"
+.Fo execle
+.Fa "const char *path" "const char *arg" ...
+.Fa /*
+.Bk -words
+.Fa "(char *)0" "char *const envp[]" */
+.Ek
+.Fc
 .Ft int
 .Fn exect "const char *path" "char *const argv[]" "char *const envp[]"
 .Ft int

==== //depot/projects/ia64/lib/libpthread/thread/thr_kern.c#23 (text+ko) ====

@@ -33,7 +33,7 @@
  *
  */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libpthread/thread/thr_kern.c,v 1.74 2003/06/30 06:16:50 davidxu Exp $");
+__FBSDID("$FreeBSD: src/lib/libpthread/thread/thr_kern.c,v 1.75 2003/07/03 10:12:21 davidxu Exp $");
 
 #include <sys/types.h>
 #include <sys/kse.h>
@@ -673,7 +673,8 @@
 	/*
 	 * This thread is being resumed; check for cancellations.
 	 */
-	if ((psf.psf_valid || curthread->check_pending)) {
+	if ((psf.psf_valid ||
+	    (curthread->check_pending && !THR_IN_CRITICAL(curthread)))) {
 		resume_once = 0;
 		THR_GETCONTEXT(&uc);
 		if (resume_once == 0) {

==== //depot/projects/ia64/lib/libpthread/thread/thr_select.c#3 (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/libpthread/thread/thr_select.c,v 1.24 2003/04/18 05:04:16 deischen Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_select.c,v 1.25 2003/07/03 13:36:29 davidxu Exp $
  */
 #include <unistd.h>
 #include <errno.h>
@@ -50,11 +50,16 @@
 	struct timeval *timeout)
 {
 	struct pthread *curthread = _get_curthread();
+	struct timespec ts;
 	int ret;
 
-	_thr_enter_cancellation_point(curthread);
-	ret = __sys_select(numfds, readfds, writefds, exceptfds, timeout);
-	_thr_leave_cancellation_point(curthread);
-
+	if (numfds == 0 && timeout != NULL) {
+		TIMEVAL_TO_TIMESPEC(timeout, &ts);
+		return nanosleep(&ts, NULL);
+	} else {
+		_thr_enter_cancellation_point(curthread);
+		ret = __sys_select(numfds, readfds, writefds, exceptfds, timeout);
+		_thr_leave_cancellation_point(curthread);
+	}
 	return ret;
 }

==== //depot/projects/ia64/lib/libthr/thread/thr_mutex.c#12 (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/libthr/thread/thr_mutex.c,v 1.15 2003/07/02 02:05:23 mtm Exp $
+ * $FreeBSD: src/lib/libthr/thread/thr_mutex.c,v 1.16 2003/07/03 13:28:53 mtm Exp $
  */
 #include <stdlib.h>
 #include <errno.h>
@@ -301,11 +301,16 @@
 	return (ret);
 }
 
+/*
+ * Libc internal.
+ */
 int
 _pthread_mutex_trylock(pthread_mutex_t *mutex)
 {
 	int	ret = 0;
 
+	_thread_sigblock();
+
 	if (mutex == NULL)
 		ret = EINVAL;
 
@@ -317,6 +322,9 @@
 	    (ret = mutex_init(mutex, 1)) == 0)
 		ret = mutex_lock_common(mutex, 1);
 
+	if (ret != 0)
+		_thread_sigunblock();
+
 	return (ret);
 }
 

==== //depot/projects/ia64/share/man/man5/group.5#4 (text+ko) ====

@@ -30,7 +30,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     From: @(#)group.5	8.3 (Berkeley) 4/19/94
-.\" $FreeBSD: src/share/man/man5/group.5,v 1.25 2003/02/20 17:32:26 ceri Exp $
+.\" $FreeBSD: src/share/man/man5/group.5,v 1.26 2003/07/03 06:03:12 jkoshy Exp $
 .\"
 .Dd September 29, 1994
 .Dt GROUP 5
@@ -146,6 +146,7 @@
 .Xr initgroups 3 ,
 .Xr nsswitch.conf 5 ,
 .Xr passwd 5 ,
+.Xr pw 8 ,
 .Xr yp 8
 .Sh BUGS
 The

==== //depot/projects/ia64/share/man/man5/linprocfs.5#5 (text+ko) ====

@@ -1,4 +1,4 @@
-.\" $FreeBSD: src/share/man/man5/linprocfs.5,v 1.11 2002/12/12 17:25:57 ru Exp $
+.\" $FreeBSD: src/share/man/man5/linprocfs.5,v 1.12 2003/07/03 06:07:26 jkoshy Exp $
 .\" Written by Garrett Wollman
 .\" This file is in the public domain.
 .\"
@@ -22,14 +22,12 @@
 .Nm
 provides a two-level view of process space.
 At the highest level, processes themselves are named, according to
-their process ids in decimal, with no leading zeros.  There is also a
-special node called
+their process ids in decimal, with no leading zeros.
+There is also a special node called
 .Pa self
 which always refers to the process making the lookup request.
 .Pp
-Each node is a directory which contains the following entries:
-.Pp
-Each directory contains several files:
+Each node is a directory containing several files:
 .Bl -tag -width status
 .It Pa exe
 A reference to the vnode from which the process text was read.
@@ -51,21 +49,21 @@
 .Sh FILES
 .Bl -tag -width /compat/linux/proc/self/XXXXXXX -compact
 .It Pa /compat/linux/proc
-normal mount point for the
+The normal mount point for the
 .Nm .
 .It Pa /compat/linux/proc/cpuinfo
 CPU vendor and model information in human-readable form.
 .It Pa /compat/linux/proc/meminfo
 System memory information in human-readable form.
 .It Pa /compat/linux/proc/pid
-directory containing process information for process
+A directory containing process information for process
 .Pa pid .
 .It Pa /compat/linux/proc/self
-directory containing process information for the current process
+A directory containing process information for the current process.
 .It Pa /compat/linux/proc/self/exe
-executable image
+The executable image for the current process.
 .It Pa /compat/linux/proc/self/mem
-the complete virtual address space of the process
+The complete virtual address space of the current process.
 .El
 .Sh SEE ALSO
 .Xr mount 2 ,

==== //depot/projects/ia64/share/man/man9/bus_dma.9#5 (text+ko) ====

@@ -57,7 +57,7 @@
 .\" 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/bus_dma.9,v 1.4 2003/06/30 20:20:51 jmg Exp $
+.\" $FreeBSD: src/share/man/man9/bus_dma.9,v 1.6 2003/07/03 09:07:03 scottl Exp $
 .\" $NetBSD: bus_dma.9,v 1.25 2002/10/14 13:43:16 wiz Exp $
 .\"
 .Dd May 28, 2003
@@ -83,7 +83,8 @@
 .Fn bus_dma_tag_create "bus_dma_tag_t parent" "bus_size_t alignment" \
 "bus_size_t boundary" "bus_addr_t lowaddr" "bus_addr_t highaddr" \
 "bus_dma_filter_t *filtfunc" "void *filtfuncarg" "bus_size_t maxsize" \
-"int nsegments" "bus_size_t maxsegsz" "int flags" "bus_dma_tag_t *dmat"
+"int nsegments" "bus_size_t maxsegsz" "int flags" "bus_dma_lock_t *lockfunc" \
+"void *lockfuncarg" "bus_dma_tag_t *dmat"
 .Ft int
 .Fn bus_dma_tag_destroy "bus_dma_tag_t dmat"
 .Ft int
@@ -260,12 +261,45 @@
 Perform any synchronization required after a combination of DMA read
 and write operations.
 .El
+.It Vt bus_dma_lock_t
+Client specified lock/mutex manipulation method.  This will be called from
+within busdma whenever a client lock needs to be manipulated.
+This method is of the format:
+.Bl -tag -width compact
+.It Ft void
+.Fn "lockfunc" "void *lockfunc_arg" "bus_dma_lock_op_t op"
+.El
+.sp
+Two
+.Vt lockfunc
+implementations are provided for convenience.
+.Fn busdma_lock_mutex
+performs standard mutex operations on the sleep mutex provided via the
+.Fa lockfuncarg .
+passed into
+.Fn bus_dma_tag_create .
+.Fn dflt_lock
+will generate a system panic if it is called.  It is substituted into
+the tag when
+.Fa lockfunc
+is passed as NULL to
+.Fn bus_dma_tag_create .
+.It Vt bus_dma_lock_op_t
+Operations to be performed by the client-specified
+.Fn lockfunc .
+.Bl -tag -width BUS_DMA_UNLOCK
+.It Dv BUS_DMA_LOCK
+Aquires and/or locks the client locking primitive.
+.It Dv BUS_DMA_UNLOCK
+Releases and/or unlocks the client locking primitive.
+.El
 .El
+.sp
 .Sh FUNCTIONS
 .Bl -tag -width compact
 .It Fn bus_dma_tag_create "parent" "alignment" "boundary" "lowaddr" \
 "highaddr" "*filtfunc" "*filtfuncarg" "maxsize" "nsegments" "maxsegsz" \
-"flags" "*dmat"
+"flags" "lockfunc" "lockfuncarg" "*dmat"
 Allocates a device specific DMA tag, and initializes it according to
 the arguments provided:
 .Bl -tag -width *filtfuncarg -compact
@@ -354,6 +388,14 @@
 .Er ENOMEM
 is returned.
 .El
+.It Fa lockfunc
+Optional lock manipulation function (may be NULL) to be called when busdma
+needs to manipulate a lock on behalf of the client.  If NULL is specified,
+.Fn dflt_lock
+is used.
+.It Fa lockfuncarg
+Optional argument to be passed to the function specified by
+.Fa lockfunc .
 .It Fa dmat
 Pointer to a bus_dma_tag_t where the resulting DMA tag will 
 be stored.

==== //depot/projects/ia64/share/mk/bsd.dep.mk#12 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/share/mk/bsd.dep.mk,v 1.40 2003/07/02 16:43:07 ru Exp $
+# $FreeBSD: src/share/mk/bsd.dep.mk,v 1.41 2003/07/03 11:43:57 bde Exp $
 #
 # The include file <bsd.dep.mk> handles Makefile dependencies.
 #
@@ -166,14 +166,12 @@
 .endif
 
 .if !target(checkdpadd) && (defined(DPADD) || defined(LDADD))
+_LDADD_FROM_DPADD=	${DPADD:C;^/usr/lib/lib(.*)\.a$;-l\1;}
+_LDADD_CANONICALIZED=	${LDADD:S/$//}
 checkdpadd:
-	@ldadd=`echo \`for lib in ${DPADD} ; do \
-		echo $$lib | sed 's;^/usr/lib/lib\(.*\)\.a;-l\1;' ; \
-	done \`` ; \
-	ldadd1=`echo ${LDADD}` ; \
-	if [ "$$ldadd" != "$$ldadd1" ] ; then \
-		echo ${.CURDIR} ; \
-		echo "DPADD -> $$ldadd" ; \
-		echo "LDADD -> $$ldadd1" ; \
-	fi
+.if ${_LDADD_FROM_DPADD} != ${_LDADD_CANONICALIZED}
+	@echo ${.CURDIR}
+	@echo "DPADD -> ${_LDADD_FROM_DPADD}"
+	@echo "LDADD -> ${_LDADD_CANONICALIZED}"
+.endif
 .endif

==== //depot/projects/ia64/sys/alpha/alpha/mp_machdep.c#11 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.43 2003/07/02 16:09:00 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.44 2003/07/03 14:33:17 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -379,7 +379,7 @@
 			}
 			continue;
 		}
-		if (resource_disabled("cpu", i))
+		if (resource_disabled("cpu", i)) {
 			printf("CPU %d disabled by loader.\n", i);
 			continue;
 		}

==== //depot/projects/ia64/sys/alpha/alpha/pmap.c#34 (text+ko) ====

@@ -148,7 +148,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.128 2003/06/29 21:20:02 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.129 2003/07/03 20:18:00 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -2070,7 +2070,6 @@
 	return (void *) ALPHA_PHYS_TO_K0SEG(pa - (i * PAGE_SIZE));
 }
 
-#define MAX_INIT_PT (96)
 /*
  * pmap_object_init_pt preloads the ptes for a given object
  * into the specified pmap.  This eliminates the blast of soft
@@ -2079,112 +2078,12 @@
 void
 pmap_object_init_pt(pmap_t pmap, vm_offset_t addr,
 		    vm_object_t object, vm_pindex_t pindex,
-		    vm_size_t size, int limit)
+		    vm_size_t size)
 {
-	vm_offset_t tmpidx;
-	int psize;
-	vm_page_t p, mpte;
-	int objpgs;
 
-	if (pmap == NULL || object == NULL)
-		return;
-	VM_OBJECT_LOCK(object);
-	psize = alpha_btop(size);
-
-	if ((object->type != OBJT_VNODE) ||
-		((limit & MAP_PREFAULT_PARTIAL) && (psize > MAX_INIT_PT) &&
-			(object->resident_page_count > MAX_INIT_PT))) {
-		goto unlock_return;
-	}
-
-	if (psize + pindex > object->size) {
-		if (object->size < pindex)
-			goto unlock_return;
-		psize = object->size - pindex;
-	}
-
-	mpte = NULL;
-	/*
-	 * if we are processing a major portion of the object, then scan the
-	 * entire thing.
-	 */
-	if (psize > (object->resident_page_count >> 2)) {
-		objpgs = psize;
-
-		for (p = TAILQ_FIRST(&object->memq);
-		    ((objpgs > 0) && (p != NULL));
-		    p = TAILQ_NEXT(p, listq)) {
-
-			tmpidx = p->pindex;
-			if (tmpidx < pindex) {
-				continue;
-			}
-			tmpidx -= pindex;
-			if (tmpidx >= psize) {
-				continue;
-			}
-			/*
-			 * don't allow an madvise to blow away our really
-			 * free pages allocating pv entries.
-			 */
-			if ((limit & MAP_PREFAULT_MADVISE) &&
-			    cnt.v_free_count < cnt.v_free_reserved) {
-				break;
-			}
-			vm_page_lock_queues();
-			if (((p->valid & VM_PAGE_BITS_ALL) == VM_PAGE_BITS_ALL) &&
-				(p->busy == 0) &&
-			    (p->flags & (PG_BUSY | PG_FICTITIOUS)) == 0) {
-				if ((p->queue - p->pc) == PQ_CACHE)
-					vm_page_deactivate(p);
-				vm_page_busy(p);
-				vm_page_unlock_queues();
-				VM_OBJECT_UNLOCK(object);
-				mpte = pmap_enter_quick(pmap, 
-					addr + alpha_ptob(tmpidx), p, mpte);
-				VM_OBJECT_LOCK(object);
-				vm_page_lock_queues();
-				vm_page_wakeup(p);
-			}
-			vm_page_unlock_queues();
-			objpgs -= 1;
-		}
-	} else {
-		/*
-		 * else lookup the pages one-by-one.
-		 */
-		for (tmpidx = 0; tmpidx < psize; tmpidx += 1) {
-			/*
-			 * don't allow an madvise to blow away our really
-			 * free pages allocating pv entries.
-			 */
-			if ((limit & MAP_PREFAULT_MADVISE) &&
-			    cnt.v_free_count < cnt.v_free_reserved) {
-				break;
-			}
-			p = vm_page_lookup(object, tmpidx + pindex);
-			if (p == NULL)
-				continue;
-			vm_page_lock_queues();
-			if ((p->valid & VM_PAGE_BITS_ALL) == VM_PAGE_BITS_ALL &&
-				(p->busy == 0) &&
-			    (p->flags & (PG_BUSY | PG_FICTITIOUS)) == 0) {
-				if ((p->queue - p->pc) == PQ_CACHE)
-					vm_page_deactivate(p);
-				vm_page_busy(p);
-				vm_page_unlock_queues();
-				VM_OBJECT_UNLOCK(object);
-				mpte = pmap_enter_quick(pmap, 
-					addr + alpha_ptob(tmpidx), p, mpte);
-				VM_OBJECT_LOCK(object);
-				vm_page_lock_queues();
-				vm_page_wakeup(p);
-			}
-			vm_page_unlock_queues();
-		}
-	}
-unlock_return:
-	VM_OBJECT_UNLOCK(object);
+	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	KASSERT(object->type == OBJT_DEVICE,
+	    ("pmap_object_init_pt: non-device object"));
 }
 
 /*

==== //depot/projects/ia64/sys/amd64/amd64/pmap.c#9 (text+ko) ====

@@ -39,7 +39,7 @@
  * SUCH DAMAGE.
  *
  *	from:	@(#)pmap.c	7.7 (Berkeley)	5/12/91
- * $FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.418 2003/06/29 21:20:03 alc Exp $
+ * $FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.419 2003/07/03 20:18:01 alc Exp $
  */
 /*-
  * Copyright (c) 2003 Networks Associates Technology, Inc.
@@ -2057,31 +2057,22 @@
 	return ((void *)crashdumpmap);
 }
 
-#define MAX_INIT_PT (96)
 /*
- * pmap_object_init_pt preloads the ptes for a given object
- * into the specified pmap.  This eliminates the blast of soft
- * faults on process startup and immediately after an mmap.
+ * This code maps large physical mmap regions into the
+ * processor address space.  Note that some shortcuts
+ * are taken, but the code works.
  */
 void
 pmap_object_init_pt(pmap_t pmap, vm_offset_t addr,
 		    vm_object_t object, vm_pindex_t pindex,
-		    vm_size_t size, int limit)
+		    vm_size_t size)
 {
-	vm_pindex_t tmpidx;
-	int psize;
-	vm_page_t p, mpte;
+	vm_page_t p;
 
-	if (pmap == NULL || object == NULL)
-		return;
-	VM_OBJECT_LOCK(object);
-	/*
-	 * This code maps large physical mmap regions into the
-	 * processor address space.  Note that some shortcuts
-	 * are taken, but the code works.
-	 */
-	if ((object->type == OBJT_DEVICE) &&
-	    ((addr & (NBPDR - 1)) == 0) && ((size & (NBPDR - 1)) == 0)) {
+	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	KASSERT(object->type == OBJT_DEVICE,
+	    ("pmap_object_init_pt: non-device object"));
+	if (((addr & (NBPDR - 1)) == 0) && ((size & (NBPDR - 1)) == 0)) {
 		int i;
 		vm_page_t m[1];
 		int npdes;
@@ -2089,7 +2080,7 @@
 
 		pde = pmap_pde(pmap, addr);
 		if (pde != 0 && (*pde & PG_V) != 0)
-			goto unlock_return;
+			return;
 retry:
 		p = vm_page_lookup(object, pindex);
 		if (p != NULL) {
@@ -2099,14 +2090,14 @@
 		} else {
 			p = vm_page_alloc(object, pindex, VM_ALLOC_NORMAL);
 			if (p == NULL)
-				goto unlock_return;
+				return;
 			m[0] = p;
 
 			if (vm_pager_get_pages(object, m, 1, 0) != VM_PAGER_OK) {
 				vm_page_lock_queues();
 				vm_page_free(p);
 				vm_page_unlock_queues();
-				goto unlock_return;
+				return;
 			}
 
 			p = vm_page_lookup(object, pindex);
@@ -2116,9 +2107,8 @@
 		vm_page_unlock_queues();
 
 		ptepa = VM_PAGE_TO_PHYS(p);
-		if (ptepa & (NBPDR - 1)) {
-			goto unlock_return;
-		}
+		if (ptepa & (NBPDR - 1))
+			return;
 
 		p->valid = VM_PAGE_BITS_ALL;
 
@@ -2130,65 +2120,7 @@
 			pde++;
 		}
 		pmap_invalidate_all(kernel_pmap);
-		goto unlock_return;
-	}
-
-	psize = amd64_btop(size);
-
-	if ((object->type != OBJT_VNODE) ||
-	    ((limit & MAP_PREFAULT_PARTIAL) && (psize > MAX_INIT_PT) &&
-	     (object->resident_page_count > MAX_INIT_PT))) {
-		goto unlock_return;
 	}
-
-	if (psize + pindex > object->size) {
-		if (object->size < pindex)
-			goto unlock_return;
-		psize = object->size - pindex;
-	}
-
-	mpte = NULL;
-
-	if ((p = TAILQ_FIRST(&object->memq)) != NULL) {
-		if (p->pindex < pindex) {
-			p = vm_page_splay(pindex, object->root);
-			if ((object->root = p)->pindex < pindex)
-				p = TAILQ_NEXT(p, listq);
-		}
-	}
-	/*
-	 * Assert: the variable p is either (1) the page with the
-	 * least pindex greater than or equal to the parameter pindex
-	 * or (2) NULL.
-	 */
-	for (;
-	     p != NULL && (tmpidx = p->pindex - pindex) < psize;
-	     p = TAILQ_NEXT(p, listq)) {
-		/*
-		 * don't allow an madvise to blow away our really
-		 * free pages allocating pv entries.
-		 */
-		if ((limit & MAP_PREFAULT_MADVISE) &&
-		    cnt.v_free_count < cnt.v_free_reserved) {
-			break;
-		}
-		vm_page_lock_queues();
-		if ((p->valid & VM_PAGE_BITS_ALL) == VM_PAGE_BITS_ALL &&
-		    (p->busy == 0) &&
-		    (p->flags & (PG_BUSY | PG_FICTITIOUS)) == 0) {
-			if ((p->queue - p->pc) == PQ_CACHE)
-				vm_page_deactivate(p);
-			vm_page_busy(p);
-			vm_page_unlock_queues();
-			mpte = pmap_enter_quick(pmap, 
-				addr + amd64_ptob(tmpidx), p, mpte);
-			vm_page_lock_queues();
-			vm_page_wakeup(p);
-		}
-		vm_page_unlock_queues();
-	}
-unlock_return:
-	VM_OBJECT_UNLOCK(object);
 }
 
 /*

==== //depot/projects/ia64/sys/dev/firewire/fwohci_pci.c#19 (text+ko) ====

@@ -31,7 +31,7 @@
  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  * 
- * $FreeBSD: src/sys/dev/firewire/fwohci_pci.c,v 1.27 2003/07/01 15:51:56 scottl Exp $
+ * $FreeBSD: src/sys/dev/firewire/fwohci_pci.c,v 1.28 2003/07/03 14:00:56 imp Exp $
  */
 
 #define BOUNCE_BUFFER_TEST	0
@@ -403,9 +403,11 @@
 {
 	fwohci_softc_t *sc = device_get_softc(dev);
 
+#ifndef BURN_BRIDGES
 	device_printf(dev, "fwohci_pci_resume: power_state = 0x%08x\n",
 					pci_get_powerstate(dev));
 	pci_set_powerstate(dev, PCI_POWERSTATE_D0);
+#endif
 	fwohci_pci_init(dev);
 	fwohci_resume(sc, dev);
 	return 0;

==== //depot/projects/ia64/sys/dev/fxp/if_fxp.c#37 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.185 2003/07/01 15:51:56 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.186 2003/07/03 14:00:56 imp Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -193,7 +193,9 @@
 static void 		fxp_init(void *xsc);
 static void 		fxp_init_body(struct fxp_softc *sc);
 static void 		fxp_tick(void *xsc);
+#ifndef BURN_BRIDGES
 static void		fxp_powerstate_d0(device_t dev);
+#endif
 static void 		fxp_start(struct ifnet *ifp);
 static void 		fxp_start_body(struct ifnet *ifp);
 static void		fxp_stop(struct fxp_softc *sc);
@@ -335,6 +337,7 @@

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


More information about the p4-projects mailing list