ADC Home > Reference Library > Reference > Darwin > Kernel Framework Reference
|
IONaturalMemoryCursor |
Inherits from: | |
Declared In: |
An IOMemoryCursor subclass that outputs a vector of PhysicalSegments in the natural byte orientation for the CPU.
The IONaturalMemoryCursor would be used when it is too difficult to safely describe a SegmentFunction that is more appropriate for your hardware. This cursor just outputs an array of PhysicalSegments.
Generates a CPU natural physical scatter/gather list given a memory descriptor.
Primary initializer for the IONaturalMemoryCursor class.
Outputs the given segment into the output segments array in natural byte order.
Creates and initializes an IONaturalMemoryCursor in one operation.
getPhysicalSegments |
Generates a CPU natural physical scatter/gather list given a memory descriptor.
public
virtual UInt32 getPhysicalSegments( IOMemoryDescriptor *descriptor, IOByteCount fromPosition, PhysicalSegment *segments, UInt32 maxSegments, UInt32 maxTransferSize = 0, IOByteCount *transferSize = 0)
descriptor
IOMemoryDescriptor that describes the data associated with an I/O request.
fromPosition
Starting location of the I/O within a memory descriptor.
segments
Pointer to an array of IOMemoryCursor::PhysicalSegments for the output physical scatter/gather list.
maxSegments
Maximum number of segments that can be written to segments array.
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.
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.
If the descriptor is exhausted of memory, a zero is returned, otherwise the number of segments that were filled in is returned.
Generates a list of physical segments from the given memory descriptor, relative to the current position of the descriptor. Wraps IOMemoryCursor::genPhysicalSegments.
initWithSpecification |
Primary initializer for the IONaturalMemoryCursor class.
public
virtual bool initWithSpecification( IOPhysicalLength maxSegmentSize, IOPhysicalLength maxTransferSize, IOPhysicalLength alignment = 1);
maxSegmentSize
Maximum allowable size for one segment. Defaults to 0.
maxTransferSize
Maximum size of an entire transfer. Defaults to 0 indicating no maximum.
alignment
Alignment restrictions on output physical addresses. Not currently implemented. Defaults to single byte alignment.
Returns true if the inherited classes and this instance initialize successfully.
outputSegment |
Outputs the given segment into the output segments array in natural byte order.
public
static void outputSegment( PhysicalSegment segment, void *segments, UInt32 segmentIndex);
segment
The physical address and length that is next to be output.
segments
Base of the output vector of DMA address length pairs.
segmentIndex
Index to output 'segment' in the 'segments' array.
withSpecification |
Creates and initializes an IONaturalMemoryCursor in one operation.
public
static IONaturalMemoryCursor * withSpecification( IOPhysicalLength maxSegmentSize, IOPhysicalLength maxTransferSize, IOPhysicalLength alignment = 1);
maxSegmentSize
Maximum allowable size for one segment. Defaults to 0.
maxTransferSize
Maximum size of an entire transfer. Defaults to 0 indicating no maximum.
alignment
Alignment restrictions on output physical addresses. Not currently implemented. Defaults to single byte alignment.
Returns a new memory cursor if successfully created and initialized, 0 otherwise.
Factory function to create and initialize an IONaturalMemoryCursor in one operation. For more information, see IONaturalMemoryCursor::initWithSpecification.
naturalOutputSegment |
#define naturalOutputSegment IONaturalMemoryCursor::outputSegment
Backward compatibility define for the old global function definition. See IONaturalMemoryCursor::outputSegment.
|
Last Updated: 2008-12-19