PERFORCE change 73130 for review
Robert Watson
rwatson at FreeBSD.org
Mon Mar 14 10:58:48 PST 2005
http://perforce.freebsd.org/chv.cgi?CH=73130
Change 73130 by rwatson at rwatson_zoo on 2005/03/14 18:58:38
Integrate netperf_socket from FreeBSD CVS HEAD:
- Busdma API moves MI.
- pxeclient now always does a mountroot to get root FH.
- Coda now uses the vnode lock not c_lock.
- Centralized VFS inode hashes rather than per-fs hashes.
- UDF bug involving races on hash insertion fixed.
- Various other VFSisms, including ENOVXLOCK.
- PSEUDOFS_TRACE
- ehci, amr bug fixes.
- vgone/vop_close/vop_reclaim/vop_revoke/vop_inactive/... VOP's now
require vnode lock.
- ng_device uses subr_unit.
Affected files ...
.. //depot/projects/netperf_socket/sys/alpha/include/bus.h#3 integrate
.. //depot/projects/netperf_socket/sys/alpha/include/bus_dma.h#1 branch
.. //depot/projects/netperf_socket/sys/amd64/include/bus_dma.h#3 integrate
.. //depot/projects/netperf_socket/sys/arm/include/bus.h#5 integrate
.. //depot/projects/netperf_socket/sys/arm/include/bus_dma.h#1 branch
.. //depot/projects/netperf_socket/sys/boot/i386/libi386/pxe.c#2 integrate
.. //depot/projects/netperf_socket/sys/coda/cnode.h#5 integrate
.. //depot/projects/netperf_socket/sys/coda/coda_subr.c#4 integrate
.. //depot/projects/netperf_socket/sys/coda/coda_vnops.c#7 integrate
.. //depot/projects/netperf_socket/sys/conf/NOTES#50 integrate
.. //depot/projects/netperf_socket/sys/conf/files#62 integrate
.. //depot/projects/netperf_socket/sys/conf/options#37 integrate
.. //depot/projects/netperf_socket/sys/dev/amr/amr.c#10 integrate
.. //depot/projects/netperf_socket/sys/dev/re/if_re.c#18 integrate
.. //depot/projects/netperf_socket/sys/dev/uart/uart_cpu_sparc64.c#9 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/ehci.c#16 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/if_axe.c#14 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/usbdevs#31 integrate
.. //depot/projects/netperf_socket/sys/fs/deadfs/dead_vnops.c#6 integrate
.. //depot/projects/netperf_socket/sys/fs/devfs/devfs_vnops.c#14 integrate
.. //depot/projects/netperf_socket/sys/fs/fdescfs/fdesc_vnops.c#6 integrate
.. //depot/projects/netperf_socket/sys/fs/fifofs/fifo_vnops.c#17 integrate
.. //depot/projects/netperf_socket/sys/fs/hpfs/hpfs.h#5 integrate
.. //depot/projects/netperf_socket/sys/fs/hpfs/hpfs_hash.c#5 integrate
.. //depot/projects/netperf_socket/sys/fs/hpfs/hpfs_vfsops.c#10 integrate
.. //depot/projects/netperf_socket/sys/fs/hpfs/hpfs_vnops.c#8 integrate
.. //depot/projects/netperf_socket/sys/fs/msdosfs/denode.h#5 integrate
.. //depot/projects/netperf_socket/sys/fs/msdosfs/msdosfs_denode.c#7 integrate
.. //depot/projects/netperf_socket/sys/fs/msdosfs/msdosfs_vfsops.c#14 integrate
.. //depot/projects/netperf_socket/sys/fs/msdosfs/msdosfsmount.h#7 integrate
.. //depot/projects/netperf_socket/sys/fs/ntfs/ntfs_vnops.c#8 integrate
.. //depot/projects/netperf_socket/sys/fs/nullfs/null_subr.c#6 integrate
.. //depot/projects/netperf_socket/sys/fs/nullfs/null_vnops.c#6 integrate
.. //depot/projects/netperf_socket/sys/fs/nwfs/nwfs_io.c#7 integrate
.. //depot/projects/netperf_socket/sys/fs/nwfs/nwfs_node.c#4 integrate
.. //depot/projects/netperf_socket/sys/fs/pseudofs/pseudofs.c#6 integrate
.. //depot/projects/netperf_socket/sys/fs/pseudofs/pseudofs_fileno.c#2 integrate
.. //depot/projects/netperf_socket/sys/fs/pseudofs/pseudofs_vncache.c#7 integrate
.. //depot/projects/netperf_socket/sys/fs/pseudofs/pseudofs_vnops.c#9 integrate
.. //depot/projects/netperf_socket/sys/fs/smbfs/smbfs_io.c#7 integrate
.. //depot/projects/netperf_socket/sys/fs/smbfs/smbfs_node.c#7 integrate
.. //depot/projects/netperf_socket/sys/fs/smbfs/smbfs_vnops.c#8 integrate
.. //depot/projects/netperf_socket/sys/fs/udf/udf.h#6 integrate
.. //depot/projects/netperf_socket/sys/fs/udf/udf_vfsops.c#9 integrate
.. //depot/projects/netperf_socket/sys/fs/udf/udf_vnops.c#10 integrate
.. //depot/projects/netperf_socket/sys/fs/umapfs/umap_vnops.c#6 integrate
.. //depot/projects/netperf_socket/sys/fs/unionfs/union_vnops.c#9 integrate
.. //depot/projects/netperf_socket/sys/geom/geom_mbr.c#9 integrate
.. //depot/projects/netperf_socket/sys/gnu/ext2fs/ext2_extern.h#7 integrate
.. //depot/projects/netperf_socket/sys/gnu/ext2fs/ext2_inode.c#6 integrate
.. //depot/projects/netperf_socket/sys/gnu/ext2fs/ext2_vfsops.c#15 integrate
.. //depot/projects/netperf_socket/sys/gnu/ext2fs/ext2_vnops.c#14 integrate
.. //depot/projects/netperf_socket/sys/i386/conf/PAE#6 integrate
.. //depot/projects/netperf_socket/sys/i386/include/bus_dma.h#3 integrate
.. //depot/projects/netperf_socket/sys/ia64/include/bus.h#3 integrate
.. //depot/projects/netperf_socket/sys/ia64/include/bus_dma.h#1 branch
.. //depot/projects/netperf_socket/sys/isofs/cd9660/cd9660_node.c#7 integrate
.. //depot/projects/netperf_socket/sys/isofs/cd9660/cd9660_node.h#5 integrate
.. //depot/projects/netperf_socket/sys/isofs/cd9660/cd9660_vfsops.c#14 integrate
.. //depot/projects/netperf_socket/sys/isofs/cd9660/cd9660_vnops.c#9 integrate
.. //depot/projects/netperf_socket/sys/isofs/cd9660/iso.h#6 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_exit.c#24 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_proc.c#22 integrate
.. //depot/projects/netperf_socket/sys/kern/subr_unit.c#5 integrate
.. //depot/projects/netperf_socket/sys/kern/vfs_default.c#12 integrate
.. //depot/projects/netperf_socket/sys/kern/vfs_hash.c#1 branch
.. //depot/projects/netperf_socket/sys/kern/vfs_subr.c#32 integrate
.. //depot/projects/netperf_socket/sys/kern/vfs_syscalls.c#18 integrate
.. //depot/projects/netperf_socket/sys/kern/vfs_vnops.c#16 integrate
.. //depot/projects/netperf_socket/sys/kern/vnode_if.src#7 integrate
.. //depot/projects/netperf_socket/sys/modules/ext2fs/Makefile#2 integrate
.. //depot/projects/netperf_socket/sys/modules/pseudofs/Makefile#2 integrate
.. //depot/projects/netperf_socket/sys/modules/ufs/Makefile#2 integrate
.. //depot/projects/netperf_socket/sys/netgraph/ng_device.c#12 integrate
.. //depot/projects/netperf_socket/sys/netinet/if_ether.c#16 integrate
.. //depot/projects/netperf_socket/sys/nfs4client/nfs4_vnops.c#12 integrate
.. //depot/projects/netperf_socket/sys/nfsclient/nfs_bio.c#16 integrate
.. //depot/projects/netperf_socket/sys/nfsclient/nfs_node.c#8 integrate
.. //depot/projects/netperf_socket/sys/nfsclient/nfs_subs.c#15 integrate
.. //depot/projects/netperf_socket/sys/nfsclient/nfs_vnops.c#13 integrate
.. //depot/projects/netperf_socket/sys/powerpc/include/bus.h#3 integrate
.. //depot/projects/netperf_socket/sys/powerpc/include/bus_dma.h#1 branch
.. //depot/projects/netperf_socket/sys/sparc64/include/bus.h#4 integrate
.. //depot/projects/netperf_socket/sys/sparc64/include/bus_dma.h#1 branch
.. //depot/projects/netperf_socket/sys/sys/bus_dma.h#1 branch
.. //depot/projects/netperf_socket/sys/sys/vnode.h#18 integrate
.. //depot/projects/netperf_socket/sys/ufs/ffs/ffs_inode.c#6 integrate
.. //depot/projects/netperf_socket/sys/ufs/ffs/ffs_snapshot.c#13 integrate
.. //depot/projects/netperf_socket/sys/ufs/ffs/ffs_softdep.c#10 integrate
.. //depot/projects/netperf_socket/sys/ufs/ffs/ffs_vfsops.c#19 integrate
.. //depot/projects/netperf_socket/sys/ufs/ffs/ffs_vnops.c#14 integrate
.. //depot/projects/netperf_socket/sys/ufs/ufs/inode.h#6 integrate
.. //depot/projects/netperf_socket/sys/ufs/ufs/ufs_extern.h#8 integrate
.. //depot/projects/netperf_socket/sys/ufs/ufs/ufs_inode.c#5 integrate
.. //depot/projects/netperf_socket/sys/ufs/ufs/ufs_vfsops.c#6 integrate
.. //depot/projects/netperf_socket/sys/ufs/ufs/ufs_vnops.c#16 integrate
.. //depot/projects/netperf_socket/sys/vm/vnode_pager.c#12 integrate
Differences ...
==== //depot/projects/netperf_socket/sys/alpha/include/bus.h#3 (text+ko) ====
@@ -67,7 +67,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/sys/alpha/include/bus.h,v 1.28 2005/01/29 21:43:33 ru Exp $ */
+/* $FreeBSD: src/sys/alpha/include/bus.h,v 1.29 2005/03/14 16:46:27 scottl Exp $ */
#ifndef _ALPHA_BUS_H_
#define _ALPHA_BUS_H_
@@ -481,195 +481,6 @@
#define bus_space_copy_region_stream_4(t, h1, o1, h2, o2, c) \
bus_space_copy_region_4((t), (h1), (o1), (h2), (o2), (c))
-/*
- * Flags used in various bus DMA methods.
- */
-#define BUS_DMA_WAITOK 0x00 /* safe to sleep (pseudo-flag) */
-#define BUS_DMA_NOWAIT 0x01 /* not safe to sleep */
-#define BUS_DMA_ALLOCNOW 0x02 /* perform resource allocation now */
-#define BUS_DMA_COHERENT 0x04 /* hint: map memory in a coherent way */
-#define BUS_DMA_ZERO 0x08 /* allocate zero'ed memory */
-#define BUS_DMA_ISA 0x10 /* map memory for ISA dma */
-#define BUS_DMA_BUS2 0x20 /* placeholders for bus functions... */
-#define BUS_DMA_BUS3 0x40
-#define BUS_DMA_BUS4 0x80
-
-/* Forwards needed by prototypes below. */
-struct mbuf;
-struct uio;
-
-/*
- * Operations performed by bus_dmamap_sync().
- */
-typedef int bus_dmasync_op_t;
-#define BUS_DMASYNC_PREREAD 1
-#define BUS_DMASYNC_POSTREAD 2
-#define BUS_DMASYNC_PREWRITE 4
-#define BUS_DMASYNC_POSTWRITE 8
-
-/*
- * bus_dma_tag_t
- *
- * A machine-dependent opaque type describing the characteristics
- * of how to perform DMA mappings. This structure encapsultes
- * information concerning address and alignment restrictions, number
- * of S/G segments, amount of data per S/G segment, etc.
- */
-typedef struct bus_dma_tag *bus_dma_tag_t;
-
-/*
- * bus_dmamap_t
- *
- * DMA mapping instance information.
- */
-typedef struct bus_dmamap *bus_dmamap_t;
-
-/*
- * bus_dma_segment_t
- *
- * Describes a single contiguous DMA transaction. Values
- * are suitable for programming into DMA registers.
- */
-typedef struct bus_dma_segment {
- bus_addr_t ds_addr; /* DMA address */
- bus_size_t ds_len; /* length of transfer */
-} bus_dma_segment_t;
-
-/*
- * A function that returns 1 if the address cannot be accessed by
- * a device and 0 if it can be.
- */
-typedef int bus_dma_filter_t(void *, bus_addr_t);
-
-/*
- * A function that performs driver-specific syncronization on behalf of
- * busdma.
- */
-typedef enum {
- BUS_DMA_LOCK = 0x01,
- BUS_DMA_UNLOCK = 0x02,
-} bus_dma_lock_op_t;
-
-typedef void bus_dma_lock_t(void *, bus_dma_lock_op_t);
-
-/*
- * Allocate a device specific dma_tag encapsulating the constraints of
- * the parent tag in addition to other restrictions specified:
- *
- * alignment: alignment for segments.
- * boundary: Boundary that segments cannot cross.
- * lowaddr: Low restricted address that cannot appear in a mapping.
- * highaddr: High restricted address that cannot appear in a mapping.
- * filtfunc: An optional function to further test if an address
- * within the range of lowaddr and highaddr cannot appear
- * in a mapping.
- * filtfuncarg: An argument that will be passed to filtfunc in addition
- * to the address to test.
- * maxsize: Maximum mapping size supported by this tag.
- * nsegments: Number of discontinuities allowed in maps.
- * maxsegsz: Maximum size of a segment in the map.
- * flags: Bus DMA flags.
- * lockfunc: An optional function to handle driver-defined lock
- * operations.
- * lockfuncarg: An argument that will be passed to lockfunc in addition
- * to the lock operation.
- * dmat: A pointer to set to a valid dma tag should the return
- * value of this function indicate success.
- */
-/* XXX Should probably allow specification of alignment */
-int bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignemnt,
- 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_lock_t *lockfunc,
- void *lockfuncarg, bus_dma_tag_t *dmat);
-
-int bus_dma_tag_destroy(bus_dma_tag_t dmat);
-
-/*
- * Allocate a handle for mapping from kva/uva/physical
- * address space into bus device space.
- */
-int bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp);
-
-/*
- * Destroy a handle for mapping from kva/uva/physical
- * address space into bus device space.
- */
-int bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map);
-
-/*
- * Allocate a piece of memory that can be efficiently mapped into
- * bus device space based on the constraints lited in the dma tag.
- * A dmamap to for use with dmamap_load is also allocated.
- */
-int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp);
-
-/*
- * Free a piece of memory and it's allociated dmamap, that was allocated
- * via bus_dmamem_alloc.
- */
-void bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map);
-
-/*
- * A function that processes a successfully loaded dma map or an error
- * from a delayed load map.
- */
-typedef void bus_dmamap_callback_t(void *, bus_dma_segment_t *, int, int);
-
-/*
- * Map the buffer buf into bus space using the dmamap map.
- */
-int bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
- bus_size_t buflen, bus_dmamap_callback_t *callback,
- void *callback_arg, int flags);
-
-/*
- * Like bus_dmamap_callback but includes map size in bytes. This is
- * defined as a separate interface to maintain compatiiblity for users
- * of bus_dmamap_callback_t--at some point these interfaces should be merged.
- */
-typedef void bus_dmamap_callback2_t(void *, bus_dma_segment_t *, int, bus_size_t, int);
-/*
- * Like bus_dmamap_load but for mbufs. Note the use of the
- * bus_dmamap_callback2_t interface.
- */
-int bus_dmamap_load_mbuf(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct mbuf *mbuf,
- bus_dmamap_callback2_t *callback, void *callback_arg,
- int flags);
-int bus_dmamap_load_mbuf_sg(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct mbuf *mbuf, bus_dma_segment_t *segs,
- int *nsegs, int flags);
-/*
- * Like bus_dmamap_load but for uios. Note the use of the
- * bus_dmamap_callback2_t interface.
- */
-int bus_dmamap_load_uio(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct uio *ui,
- bus_dmamap_callback2_t *callback, void *callback_arg,
- int flags);
-
-/*
- * Perform a syncronization operation on the given map.
- */
-void _bus_dmamap_sync(bus_dma_tag_t, bus_dmamap_t, bus_dmasync_op_t);
-#define bus_dmamap_sync(dmat, dmamap, op) \
- if ((dmamap) != NULL) \
- _bus_dmamap_sync(dmat, dmamap, op)
-
-/*
- * Release the mapping held by map.
- */
-void _bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map);
-#define bus_dmamap_unload(dmat, dmamap) \
- if ((dmamap) != NULL) \
- _bus_dmamap_unload(dmat, dmamap)
-
-/*
- * Generic helper function for manipulating mutexes.
- */
-void busdma_lock_mutex(void *arg, bus_dma_lock_op_t op);
+#include <machine/bus_dma.h>
#endif /* _ALPHA_BUS_H_ */
==== //depot/projects/netperf_socket/sys/amd64/include/bus_dma.h#3 (text+ko) ====
@@ -1,13 +1,7 @@
-/* $NetBSD: bus.h,v 1.12 1997/10/01 08:25:15 fvdl Exp $ */
-
/*-
- * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
+ * Copyright (c) 2005 Scott Long
* All rights reserved.
*
- * This code is derived from software contributed to The NetBSD Foundation
- * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
- * NASA Ames Research Center.
- *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -16,252 +10,24 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
*
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (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/sys/amd64/include/bus_dma.h,v 1.29 2005/03/14 16:46:27 scottl Exp $ */
-/*-
- * Copyright (c) 1996 Charles M. Hannum. All rights reserved.
- * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Christopher G. Demetriou
- * for the NetBSD Project.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (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/sys/amd64/include/bus_dma.h,v 1.28 2005/01/21 05:56:41 peter Exp $ */
-
#ifndef _AMD64_BUS_DMA_H_
#define _AMD64_BUS_DMA_H_
-/*
- * Flags used in various bus DMA methods.
- */
-#define BUS_DMA_WAITOK 0x00 /* safe to sleep (pseudo-flag) */
-#define BUS_DMA_NOWAIT 0x01 /* not safe to sleep */
-#define BUS_DMA_ALLOCNOW 0x02 /* perform resource allocation now */
-#define BUS_DMA_COHERENT 0x04 /* hint: map memory in a coherent way */
-#define BUS_DMA_ZERO 0x08 /* allocate zero'ed memory */
-#define BUS_DMA_BUS1 0x10 /* placeholders for bus functions... */
-#define BUS_DMA_BUS2 0x20
-#define BUS_DMA_BUS3 0x40
-#define BUS_DMA_BUS4 0x80
-
-/* Forwards needed by prototypes below. */
-struct mbuf;
-struct uio;
-
-/*
- * Operations performed by bus_dmamap_sync().
- */
-typedef int bus_dmasync_op_t;
-#define BUS_DMASYNC_PREREAD 1
-#define BUS_DMASYNC_POSTREAD 2
-#define BUS_DMASYNC_PREWRITE 4
-#define BUS_DMASYNC_POSTWRITE 8
-
-/*
- * bus_dma_tag_t
- *
- * A machine-dependent opaque type describing the characteristics
- * of how to perform DMA mappings. This structure encapsultes
- * information concerning address and alignment restrictions, number
- * of S/G segments, amount of data per S/G segment, etc.
- */
-typedef struct bus_dma_tag *bus_dma_tag_t;
-
-/*
- * bus_dmamap_t
- *
- * DMA mapping instance information.
- */
-typedef struct bus_dmamap *bus_dmamap_t;
-
-/*
- * bus_dma_segment_t
- *
- * Describes a single contiguous DMA transaction. Values
- * are suitable for programming into DMA registers.
- */
-typedef struct bus_dma_segment {
- bus_addr_t ds_addr; /* DMA address */
- bus_size_t ds_len; /* length of transfer */
-} bus_dma_segment_t;
-
-/*
- * A function that returns 1 if the address cannot be accessed by
- * a device and 0 if it can be.
- */
-typedef int bus_dma_filter_t(void *, bus_addr_t);
-
-/*
- * A function that performs driver-specific synchronization on behalf of
- * busdma.
- */
-typedef enum {
- BUS_DMA_LOCK = 0x01,
- BUS_DMA_UNLOCK = 0x02,
-} bus_dma_lock_op_t;
-
-typedef void bus_dma_lock_t(void *, bus_dma_lock_op_t);
-
-/*
- * Allocate a device specific dma_tag encapsulating the constraints of
- * the parent tag in addition to other restrictions specified:
- *
- * alignment: Alignment for segments.
- * boundary: Boundary that segments cannot cross.
- * lowaddr: Low restricted address that cannot appear in a mapping.
- * highaddr: High restricted address that cannot appear in a mapping.
- * filtfunc: An optional function to further test if an address
- * within the range of lowaddr and highaddr cannot appear
- * in a mapping.
- * filtfuncarg: An argument that will be passed to filtfunc in addition
- * to the address to test.
- * maxsize: Maximum mapping size supported by this tag.
- * nsegments: Number of discontinuities allowed in maps.
- * maxsegsz: Maximum size of a segment in the map.
- * flags: Bus DMA flags.
- * lockfunc: An optional function to handle driver-defined lock
- * operations.
- * lockfuncarg: An argument that will be passed to lockfunc in addition
- * to the lock operation.
- * dmat: A pointer to set to a valid dma tag should the return
- * value of this function indicate success.
- */
-/* XXX Should probably allow specification of alignment */
-int 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_lock_t *lockfunc,
- void *lockfuncarg, bus_dma_tag_t *dmat);
-
-int bus_dma_tag_destroy(bus_dma_tag_t dmat);
-
-/*
- * Allocate a handle for mapping from kva/uva/physical
- * address space into bus device space.
- */
-int bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp);
+#include <sys/bus_dma.h>
-/*
- * Destroy a handle for mapping from kva/uva/physical
- * address space into bus device space.
- */
-int bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map);
-
-/*
- * Allocate a piece of memory that can be efficiently mapped into
- * bus device space based on the constraints listed in the dma tag.
- * A dmamap to for use with dmamap_load is also allocated.
- */
-int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
- bus_dmamap_t *mapp);
-
-/*
- * Free a piece of memory and its allocated dmamap, that was allocated
- * via bus_dmamem_alloc.
- */
-void bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map);
-
-/*
- * A function that processes a successfully loaded dma map or an error
- * from a delayed load map.
- */
-typedef void bus_dmamap_callback_t(void *, bus_dma_segment_t *, int, int);
-
-/*
- * Map the buffer buf into bus space using the dmamap map.
- */
-int bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
- bus_size_t buflen, bus_dmamap_callback_t *callback,
- void *callback_arg, int flags);
-
-/*
- * Like bus_dmamap_callback but includes map size in bytes. This is
- * defined as a separate interface to maintain compatibility for users
- * of bus_dmamap_callback_t--at some point these interfaces should be merged.
- */
-typedef void bus_dmamap_callback2_t(void *, bus_dma_segment_t *, int, bus_size_t, int);
-/*
- * Like bus_dmamap_load but for mbufs. Note the use of the
- * bus_dmamap_callback2_t interface.
- */
-int bus_dmamap_load_mbuf(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct mbuf *mbuf,
- bus_dmamap_callback2_t *callback, void *callback_arg,
- int flags);
-
-int bus_dmamap_load_mbuf_sg(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct mbuf *mbuf, bus_dma_segment_t *segs,
- int *nsegs, int flags);
-
-/*
- * Like bus_dmamap_load but for uios. Note the use of the
- * bus_dmamap_callback2_t interface.
- */
-int bus_dmamap_load_uio(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct uio *ui,
- bus_dmamap_callback2_t *callback, void *callback_arg,
- int flags);
-
-/*
- * Perform a synchronization operation on the given map.
- */
-void _bus_dmamap_sync(bus_dma_tag_t, bus_dmamap_t, bus_dmasync_op_t);
-#define bus_dmamap_sync(dmat, dmamap, op) \
- if ((dmamap) != NULL) \
- _bus_dmamap_sync(dmat, dmamap, op)
-
-/*
- * Release the mapping held by map.
- */
-void _bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map);
-#define bus_dmamap_unload(dmat, dmamap) \
- if ((dmamap) != NULL) \
- _bus_dmamap_unload(dmat, dmamap)
-
-/*
- * Generic helper function for manipulating mutexes.
- */
-void busdma_lock_mutex(void *arg, bus_dma_lock_op_t op);
#endif /* _AMD64_BUS_DMA_H_ */
==== //depot/projects/netperf_socket/sys/arm/include/bus.h#5 (text+ko) ====
@@ -67,7 +67,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/sys/arm/include/bus.h,v 1.6 2005/01/15 19:31:08 cognet Exp $
+ * $FreeBSD: src/sys/arm/include/bus.h,v 1.7 2005/03/14 16:46:27 scottl Exp $
*/
#ifndef _MACHINE_BUS_H_
@@ -592,158 +592,6 @@
#define BUS_SPACE_ALIGNED_POINTER(p, t) ALIGNED_POINTER(p, t)
-/* Bus Space DMA macros */
-
-/*
- * Flags used in various bus DMA methods.
- */
-#define BUS_DMA_WAITOK 0x000 /* safe to sleep (pseudo-flag) */
-#define BUS_DMA_NOWAIT 0x001 /* not safe to sleep */
-#define BUS_DMA_ALLOCNOW 0x002 /* perform resource allocation now */
-#define BUS_DMA_COHERENT 0x004 /* hint: map memory DMA coherent */
-#define BUS_DMA_ZERO 0x008 /* hint: sequential, unidirectional */
-#define BUS_DMA_BUS1 0x010 /* placeholders for bus functions... */
-#define BUS_DMA_BUS2 0x020
-#define BUS_DMA_BUS3 0x040
-#define BUS_DMA_BUS4 0x080
-
-/* Forwards needed by prototypes below. */
-struct mbuf;
-struct uio;
-
-/*
- * Operations performed by bus_dmamap_sync().
- */
-#define BUS_DMASYNC_PREREAD 0x01 /* pre-read synchronization */
-#define BUS_DMASYNC_POSTREAD 0x02 /* post-read synchronization */
-#define BUS_DMASYNC_PREWRITE 0x04 /* pre-write synchronization */
-#define BUS_DMASYNC_POSTWRITE 0x08 /* post-write synchronization */
-
-typedef struct bus_dma_tag *bus_dma_tag_t;
-typedef struct bus_dmamap *bus_dmamap_t;
-
-#define BUS_DMA_TAG_VALID(t) ((t) != (bus_dma_tag_t)0)
-
-/*
- * bus_dma_segment_t
- *
- * Describes a single contiguous DMA transaction. Values
- * are suitable for programming into DMA registers.
- */
-struct bus_dma_segment {
- /*
- * PUBLIC MEMBERS: these are used by machine-independent code.
- */
- bus_addr_t ds_addr; /* DMA address */
- bus_size_t ds_len; /* length of transfer */
-};
-typedef struct bus_dma_segment bus_dma_segment_t;
-
-/*
- * arm32_dma_range
- *
- * This structure describes a valid DMA range.
- */
-struct arm32_dma_range {
- bus_addr_t dr_sysbase; /* system base address */
- bus_addr_t dr_busbase; /* appears here on bus */
- bus_size_t dr_len; /* length of range */
-};
-
-/*
- * bus_dma_tag_t
- *
- * A machine-dependent opaque type describing the implementation of
- * DMA for a given bus.
- */
-
-typedef void bus_dmamap_callback_t(void *, bus_dma_segment_t *, int, int);
-typedef int bus_dmasync_op_t;
-typedef void bus_dmamap_callback2_t(void *, bus_dma_segment_t *, int, bus_size_t, int);
-
-
-#ifdef _ARM32_BUS_DMA_PRIVATE
-
-/* _dm_buftype */
-#define ARM32_BUFTYPE_INVALID 0
-#define ARM32_BUFTYPE_LINEAR 1
-#define ARM32_BUFTYPE_MBUF 2
-#define ARM32_BUFTYPE_UIO 3
-#define ARM32_BUFTYPE_RAW 4
-
-struct arm32_dma_range *bus_dma_get_range(void);
-int bus_dma_get_range_nb(void);
-#endif /* _ARM32_BUS_DMA_PRIVATE */
-
-/*
- * A function that returns 1 if the address cannot be accessed by
- * a device and 0 if it can be.
- */
-typedef int bus_dma_filter_t(void *, bus_addr_t);
-
-/*
- * A function that performs driver-specific syncronization on behalf of
- * busdma.
- */
-typedef enum {
- BUS_DMA_LOCK = 0x01,
- BUS_DMA_UNLOCK = 0x02,
-} bus_dma_lock_op_t;
-
-typedef void bus_dma_lock_t(void *, bus_dma_lock_op_t);
-
-/*
- * Allocate a device specific dma_tag encapsulating the constraints of
- * the parent tag in addition to other restrictions specified:
- *
- * alignment: alignment for segments.
- * boundary: Boundary that segments cannot cross.
- * lowaddr: Low restricted address that cannot appear in a mapping.
- * highaddr: High restricted address that cannot appear in a mapping.
- * filtfunc: An optional function to further test if an address
- * within the range of lowaddr and highaddr cannot appear
- * in a mapping.
- * filtfuncarg: An argument that will be passed to filtfunc in addition
- * to the address to test.
- * maxsize: Maximum mapping size supported by this tag.
- * nsegments: Number of discontinuities allowed in maps.
- * maxsegsz: Maximum size of a segment in the map.
- * flags: Bus DMA flags.
- * dmat: A pointer to set to a valid dma tag should the return
- * value of this function indicate success.
- */
-int 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_lock_t *lockfunc,
- void *lockfuncarg, bus_dma_tag_t *dmat);
-
-int bus_dma_tag_destroy(bus_dma_tag_t dmat);
-
-int bus_dmamap_create (bus_dma_tag_t, int, bus_dmamap_t *);
-int bus_dmamap_destroy (bus_dma_tag_t, bus_dmamap_t);
-int bus_dmamap_load (bus_dma_tag_t, bus_dmamap_t, void *,
- bus_size_t, bus_dmamap_callback_t *, void *, int);
-int bus_dmamap_load_mbuf (bus_dma_tag_t, bus_dmamap_t,
- struct mbuf *, bus_dmamap_callback2_t *, void *, int);
-int bus_dmamap_load_mbuf_sg(bus_dma_tag_t dmat, bus_dmamap_t map,
- struct mbuf *mbuf, bus_dma_segment_t *segs,
- int *nsegs, int flags);
-int bus_dmamap_load_uio (bus_dma_tag_t, bus_dmamap_t,
- struct uio *, bus_dmamap_callback2_t *, void *, int);
-void bus_dmamap_unload (bus_dma_tag_t, bus_dmamap_t);
-void bus_dmamap_sync(bus_dma_tag_t, bus_dmamap_t, bus_dmasync_op_t);
-
-int bus_dmamem_alloc (bus_dma_tag_t tag, void **vaddr, int flag,
- bus_dmamap_t *mapp);
-void bus_dmamem_free (bus_dma_tag_t tag, void *vaddr, bus_dmamap_t map);
-
-/*
- * Generic helper function for manipulating mutexes.
- */
-void busdma_lock_mutex(void *arg, bus_dma_lock_op_t op);
-
#define BUS_SPACE_MAXADDR_24BIT 0xFFFFFF
#define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFF
#define BUS_SPACE_MAXADDR 0xFFFFFFFF
@@ -778,4 +626,6 @@
bus_space_write_multi_4((t), (h), (o), (a), (c))
+#include <machine/bus_dma.h>
+
#endif /* _MACHINE_BUS_H_ */
==== //depot/projects/netperf_socket/sys/boot/i386/libi386/pxe.c#2 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/pxe.c,v 1.20 2003/08/25 23:28:31 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/pxe.c,v 1.21 2005/03/12 21:26:53 kan Exp $");
#include <stand.h>
#include <string.h>
@@ -413,6 +413,22 @@
/* structure truncated here */
};
extern struct nfs_iodesc nfs_root_node;
+extern int rpc_port;
+
+static void
+pxe_rpcmountcall()
+{
+ struct iodesc *d;
+ int error;
+
+ if (!(d = socktodesc(pxe_sock)))
+ return;
+ d->myport = htons(--rpc_port);
+ d->destip = rootip;
+ if ((error = nfs_getrootfh(d, rootpath, nfs_root_node.fh)) != 0)
+ printf("NFS MOUNT RPC error: %d\n", error);
+ nfs_root_node.iodesc = d;
+}
static void
pxe_setnfshandle(char *rootpath)
@@ -421,6 +437,14 @@
u_char *fh;
char buf[2 * NFS_FHSIZE + 3], *cp;
+ /*
+ * If NFS files were never opened, we need to do mount call
+ * ourselves. Use nfs_root_node.iodesc as flag indicating
+ * previous NFS usage.
+ */
+ if (nfs_root_node.iodesc == NULL)
+ pxe_rpcmountcall();
+
fh = &nfs_root_node.fh[0];
buf[0] = 'X';
cp = &buf[1];
==== //depot/projects/netperf_socket/sys/coda/cnode.h#5 (text+ko) ====
@@ -27,7 +27,7 @@
* Mellon the rights to redistribute these changes without encumbrance.
*
* @(#) src/sys/coda/cnode.h,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $
- * $FreeBSD: src/sys/coda/cnode.h,v 1.16 2005/01/05 23:35:00 imp Exp $
+ * $FreeBSD: src/sys/coda/cnode.h,v 1.17 2005/03/13 12:09:34 jeff Exp $
*
*/
@@ -102,7 +102,6 @@
struct vnode *c_vnode;
u_short c_flags; /* flags (see below) */
CodaFid c_fid; /* file handle */
- struct lock c_lock; /* new lock protocol */
struct vnode *c_ovp; /* open vnode pointer */
u_short c_ocount; /* count of openers */
u_short c_owrite; /* count of open for write */
==== //depot/projects/netperf_socket/sys/coda/coda_subr.c#4 (text+ko) ====
@@ -52,7 +52,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/coda/coda_subr.c,v 1.30 2005/01/05 23:35:00 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/coda/coda_subr.c,v 1.31 2005/03/13 12:10:15 jeff Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -315,7 +315,7 @@
MNT_ILOCK(mp);
MNT_VNODE_FOREACH(vp, mp, nvp) {
VI_LOCK(vp);
- if (vp->v_iflag & VI_XLOCK) {
+ if (vp->v_iflag & VI_DOOMED) {
VI_UNLOCK(vp);
continue;
}
==== //depot/projects/netperf_socket/sys/coda/coda_vnops.c#7 (text+ko) ====
@@ -42,7 +42,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/coda/coda_vnops.c,v 1.63 2005/02/07 08:04:24 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/coda/coda_vnops.c,v 1.64 2005/03/13 12:09:34 jeff Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -847,7 +847,6 @@
printf("coda_inactive: cp->ovp != NULL use %d: vp %p, cp %p\n",
vrefcnt(vp), vp, cp);
#endif
- lockmgr(&cp->c_lock, LK_RELEASE, &vp->v_interlock, td);
} else {
#ifdef OLD_DIAGNOSTIC
if (vrefcnt(CTOV(cp))) {
@@ -857,7 +856,6 @@
panic("coda_inactive: cp->ovp != NULL");
}
#endif
- VOP_UNLOCK(vp, 0, td);
vgone(vp);
}
@@ -1630,7 +1628,6 @@
#endif
}
cache_purge(vp);
- lockdestroy(&(VTOC(vp)->c_lock));
coda_free(VTOC(vp));
vp->v_data = NULL;
vnode_destroy_vobject(vp);
@@ -1643,23 +1640,22 @@
/* true args */
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
- struct thread *td = ap->a_td;
/* upcall decl */
/* locals */
ENTRY;
+ if ((ap->a_flags & LK_INTERLOCK) == 0) {
+ VI_LOCK(vp);
+ ap->a_flags |= LK_INTERLOCK;
+ }
+
if (coda_lockdebug) {
myprintf(("Attempting lock on %s\n",
coda_f2s(&cp->c_fid)));
}
-#ifndef DEBUG_LOCKS
- return (lockmgr(&cp->c_lock, ap->a_flags, &vp->v_interlock, td));
-#else
- return (debuglockmgr(&cp->c_lock, ap->a_flags, &vp->v_interlock, td,
- "coda_lock", vp->filename, vp->line));
-#endif
+ return (vop_stdlock(ap));
}
int
@@ -1668,7 +1664,6 @@
/* true args */
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
- struct thread *td = ap->a_td;
/* upcall decl */
/* locals */
@@ -1678,17 +1673,16 @@
coda_f2s(&cp->c_fid)));
}
- return (lockmgr(&cp->c_lock, ap->a_flags | LK_RELEASE, &vp->v_interlock, td));
+ return (vop_stdunlock(ap));
}
int
coda_islocked(struct vop_islocked_args *ap)
{
/* true args */
- struct cnode *cp = VTOC(ap->a_vp);
ENTRY;
- return (lockstatus(&cp->c_lock, ap->a_td));
+ return (vop_stdislocked(ap));
}
/* How one looks up a vnode given a device/inode pair: */
@@ -1808,7 +1802,6 @@
struct vnode *vp;
cp = coda_alloc();
- lockinit(&cp->c_lock, PINOD, "cnode", 0, 0);
cp->c_fid = *fid;
err = getnewvnode("coda", vfsp, &coda_vnodeops, &vp);
==== //depot/projects/netperf_socket/sys/conf/NOTES#50 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1303 2005/03/07 02:20:14 grog Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1304 2005/03/14 16:04:26 des Exp $
#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
@@ -807,6 +807,7 @@
options PORTALFS #Portal filesystem
options PROCFS #Process filesystem (requires PSEUDOFS)
options PSEUDOFS #Pseudo-filesystem framework
+options PSEUDOFS_TRACE #Debugging support for PSEUDOFS
options SMBFS #SMB/CIFS filesystem
options UDF #Universal Disk Format
# Broken (seriously (functionally) broken):
==== //depot/projects/netperf_socket/sys/conf/files#62 (text+ko) ====
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list