]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/IOKit/IOMemoryCursor.h
xnu-2782.10.72.tar.gz
[apple/xnu.git] / iokit / IOKit / IOMemoryCursor.h
index cb32cba039d51b92b437b9ed503cfc8607af8332..048cdf5845308ba626647a6144307db19666ec54 100644 (file)
@@ -1,14 +1,19 @@
 /*
  * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
  *
 /*
  * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
  *
- * @APPLE_LICENSE_HEADER_START@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ * 
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
  * 
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * 
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
@@ -18,7 +23,7 @@
  * Please see the License for the specific language governing rights and
  * limitations under the License.
  * 
  * Please see the License for the specific language governing rights and
  * limitations under the License.
  * 
- * @APPLE_LICENSE_HEADER_END@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 #ifndef _IOMEMORYCURSOR_H
 #define _IOMEMORYCURSOR_H
  */
 #ifndef _IOMEMORYCURSOR_H
 #define _IOMEMORYCURSOR_H
@@ -207,7 +212,7 @@ public:
     @param fromPosition Starting location of the I/O within a memory descriptor. 
     @param segments Pointer to an array of IOMemoryCursor::PhysicalSegments for the output physical scatter/gather list.
     @param maxSegments Maximum number of segments that can be written to segments array.
     @param fromPosition Starting location of the I/O within a memory descriptor. 
     @param segments Pointer to an array of IOMemoryCursor::PhysicalSegments for the output physical scatter/gather list.
     @param maxSegments Maximum number of segments that can be written to segments array.
-    @param maxTransferSize Maximum transfer size is limited to that many bytes, otherwise it defaults to the maximum transfer size specified when the memory cursor was initialized.
+    @param inMaxTransferSize Maximum transfer size is limited to that many bytes, otherwise it defaults to the maximum transfer size specified when the memory cursor was initialized.
     @param transferSize Pointer to an IOByteCount variable that can contain the total size of the transfer being described.  Defaults to 0 indicating that no transfer size need be returned. 
     @result If the descriptor is exhausted of memory, a zero is returned, otherwise the number of segments that were filled in is returned.
 */
     @param transferSize Pointer to an IOByteCount variable that can contain the total size of the transfer being described.  Defaults to 0 indicating that no transfer size need be returned. 
     @result If the descriptor is exhausted of memory, a zero is returned, otherwise the number of segments that were filled in is returned.
 */
@@ -215,11 +220,11 @@ public:
                                       IOByteCount         fromPosition,
                                       PhysicalSegment    *segments,
                                       UInt32              maxSegments,
                                       IOByteCount         fromPosition,
                                       PhysicalSegment    *segments,
                                       UInt32              maxSegments,
-                                      UInt32              maxTransferSize = 0,
+                                      UInt32              inMaxTransferSize = 0,
                                       IOByteCount        *transferSize = 0)
     {
        return genPhysicalSegments(descriptor, fromPosition, segments,
                                       IOByteCount        *transferSize = 0)
     {
        return genPhysicalSegments(descriptor, fromPosition, segments,
-                               maxSegments, maxTransferSize, transferSize);
+                               maxSegments, inMaxTransferSize, transferSize);
     }
 };
 
     }
 };
 
@@ -283,7 +288,7 @@ successfully.
     @param fromPosition Starting location of the I/O within a memory descriptor. 
     @param segments Pointer to an array of IOMemoryCursor::PhysicalSegments for the output physical scatter/gather list.
     @param maxSegments Maximum number of segments that can be written to segments array.
     @param fromPosition Starting location of the I/O within a memory descriptor. 
     @param segments Pointer to an array of IOMemoryCursor::PhysicalSegments for the output physical scatter/gather list.
     @param maxSegments Maximum number of segments that can be written to segments array.
-    @param maxTransferSize Maximum transfer size is limited to that many bytes, otherwise it defaults to the maximum transfer size specified when the memory cursor was initialized.
+    @param inMaxTransferSize Maximum transfer size is limited to that many bytes, otherwise it defaults to the maximum transfer size specified when the memory cursor was initialized.
     @param transferSize Pointer to an IOByteCount variable that can contain the total size of the transfer being described.  Defaults to 0 indicating that no transfer size need be returned. 
     @result If the descriptor is exhausted of memory, a zero is returned, otherwise the number of segments that were filled in is returned.
 */
     @param transferSize Pointer to an IOByteCount variable that can contain the total size of the transfer being described.  Defaults to 0 indicating that no transfer size need be returned. 
     @result If the descriptor is exhausted of memory, a zero is returned, otherwise the number of segments that were filled in is returned.
 */
@@ -291,11 +296,11 @@ successfully.
                                       IOByteCount          fromPosition,
                                       PhysicalSegment *    segments,
                                       UInt32               maxSegments,
                                       IOByteCount          fromPosition,
                                       PhysicalSegment *    segments,
                                       UInt32               maxSegments,
-                                      UInt32               maxTransferSize = 0,
+                                      UInt32               inMaxTransferSize = 0,
                                       IOByteCount       *  transferSize = 0)
     {
        return genPhysicalSegments(descriptor, fromPosition, segments,
                                       IOByteCount       *  transferSize = 0)
     {
        return genPhysicalSegments(descriptor, fromPosition, segments,
-                               maxSegments, maxTransferSize, transferSize);
+                               maxSegments, inMaxTransferSize, transferSize);
     }
 };
 
     }
 };
 
@@ -357,7 +362,7 @@ public:
     @param fromPosition Starting location of the I/O within a memory descriptor. 
     @param segments Pointer to an array of IOMemoryCursor::PhysicalSegments for the output physical scatter/gather list.
     @param maxSegments Maximum number of segments that can be written to segments array.
     @param fromPosition Starting location of the I/O within a memory descriptor. 
     @param segments Pointer to an array of IOMemoryCursor::PhysicalSegments for the output physical scatter/gather list.
     @param maxSegments Maximum number of segments that can be written to segments array.
-    @param maxTransferSize Maximum transfer size is limited to that many bytes, otherwise it defaults to the maximum transfer size specified when the memory cursor was initialized.
+    @param inMaxTransferSize Maximum transfer size is limited to that many bytes, otherwise it defaults to the maximum transfer size specified when the memory cursor was initialized.
     @param transferSize Pointer to an IOByteCount variable that can contain the total size of the transfer being described.  Defaults to 0 indicating that no transfer size need be returned. 
     @result If the descriptor is exhausted of memory, a zero is returned, otherwise the number of segments that were filled in is returned.
 */
     @param transferSize Pointer to an IOByteCount variable that can contain the total size of the transfer being described.  Defaults to 0 indicating that no transfer size need be returned. 
     @result If the descriptor is exhausted of memory, a zero is returned, otherwise the number of segments that were filled in is returned.
 */
@@ -365,93 +370,13 @@ public:
                                       IOByteCount          fromPosition,
                                       PhysicalSegment *    segments,
                                       UInt32               maxSegments,
                                       IOByteCount          fromPosition,
                                       PhysicalSegment *    segments,
                                       UInt32               maxSegments,
-                                      UInt32               maxTransferSize = 0,
-                                      IOByteCount       *  transferSize = 0)
-    {
-       return genPhysicalSegments(descriptor, fromPosition, segments,
-                               maxSegments, maxTransferSize, transferSize);
-    }
-};
-
-/************************* class IODBDMAMemoryCursor *************************/
-
-#if defined(__ppc__)
-
-struct IODBDMADescriptor;
-
-/*!
-    @class IODBDMAMemoryCursor
-    @abstract An IOMemoryCursor subclass that outputs a vector of DBDMA descriptors where the address and length are filled in.  
-    @discussion The IODBDMAMemoryCursor would be used when the DBDMA hardware is available for the device for that will use an instance of this cursor.
-*/
-class IODBDMAMemoryCursor : public IOMemoryCursor
-{
-    OSDeclareDefaultStructors(IODBDMAMemoryCursor)
-
-public:
-/*! @function outputSegment
-    @abstract Outpust the given segment into the output segments array in address and length fields of an DBDMA descriptor.
-    @param segment The physical address and length that is next to be output.
-    @param segments Base of the output vector of DMA address length pairs.
-    @param segmentIndex Index to output 'segment' in the 'segments' array.
-*/
-    static void outputSegment(PhysicalSegment segment,
-                             void *          segments,
-                             UInt32          segmentIndex);
-
-/*! @defined dbdmaOutputSegment
-    @discussion Backward compatibility define for the old global function definition.  See IODBDMAMemoryCursor::outputSegment. */
-#define dbdmaOutputSegment IODBDMAMemoryCursor::outputSegment
-
-/*! @function withSpecification
-    @abstract Creates and initializes an IODBDMAMemoryCursor in one operation.
-    @discussion Factory function to create and initialize an IODBDMAMemoryCursor in one operation.  See also IODBDMAMemoryCursor::initWithSpecification.
-    @param maxSegmentSize Maximum allowable size for one segment.  Defaults to 0.
-    @param maxTransferSize Maximum size of an entire transfer. Defaults to 0 indicating no maximum.
-    @param alignment Alignment restrictions on output physical addresses.  Not currently implemented.  Defaults to single byte alignment.
-    @result Returns a new memory cursor if successfully created and initialized, 0 otherwise.
-*/
-    static IODBDMAMemoryCursor * 
-       withSpecification(IOPhysicalLength maxSegmentSize,
-                         IOPhysicalLength maxTransferSize,
-                         IOPhysicalLength alignment = 1);
-
-/*! @function initWithSpecification
-    @abstract Primary initializer for the IODBDMAMemoryCursor class.
-    @param maxSegmentSize Maximum allowable size for one segment.  Defaults to 0.
-    @param maxTransferSize Maximum size of an entire transfer. Defaults to 0 indicating no maximum.
-    @param alignment Alignment restrictions on output physical addresses.  Not currently implemented.  Defaults to single byte alignment.
-    @result Returns true if the inherited classes and this instance initialize successfully.
-*/
-    virtual bool initWithSpecification(IOPhysicalLength         maxSegmentSize,
-                                      IOPhysicalLength  maxTransferSize,
-                                      IOPhysicalLength  alignment = 1);
-
-
-/*! @function getPhysicalSegments
-    @abstract Generates a DBDMA physical scatter/gather list given a memory descriptor.
-    @discussion Generates a list of DBDMA descriptors where the address and length fields are filled in appropriately. But the client is expected to fill in the rest of the DBDMA descriptor as is appropriate for their particular hardware.  Wraps IOMemoryCursor::genPhysicalSegments.
-    @param descriptor IOMemoryDescriptor that describes the data associated with an I/O request. 
-    @param fromPosition Starting location of the I/O within a memory descriptor. 
-    @param segments Pointer to an array of DBDMA descriptors for the output physical scatter/gather list.  Be warned no room is left for a preamble in the output array.  'segments' should point to the first memory description slot in a DBDMA command.
-    @param maxSegments Maximum number of segments that can be written to the DBDMA descriptor table.
-    @param maxTransferSize Maximum transfer size is limited to that many bytes, otherwise it defaults to the maximum transfer size specified when the memory cursor was initialized.
-    @param transferSize Pointer to an IOByteCount variable that can contain the total size of the transfer being described.  Defaults to 0 indicating that no transfer size need be returned. 
-    @result If the descriptor is exhausted of memory, a zero is returned, otherwise the number of segments that were filled in is returned.
-*/
-    virtual UInt32 getPhysicalSegments(IOMemoryDescriptor * descriptor,
-                                      IOByteCount          fromPosition,
-                                      IODBDMADescriptor *  segments,
-                                      UInt32               maxSegments,
-                                      UInt32               maxTransferSize = 0,
+                                      UInt32               inMaxTransferSize = 0,
                                       IOByteCount       *  transferSize = 0)
     {
        return genPhysicalSegments(descriptor, fromPosition, segments,
                                       IOByteCount       *  transferSize = 0)
     {
        return genPhysicalSegments(descriptor, fromPosition, segments,
-                               maxSegments, maxTransferSize, transferSize);
+                               maxSegments, inMaxTransferSize, transferSize);
     }
 };
 
     }
 };
 
-#endif /* defined(__ppc__) */
-
 #endif /* !_IOMEMORYCURSOR_H */
 
 #endif /* !_IOMEMORYCURSOR_H */