setMemoryDescriptor

Sets and resets the DMACommand's current memory descriptor

Declaration

virtual IOReturn setMemoryDescriptor(
 const IOMemoryDescriptor *mem, 
 bool autoPrepare = true); 

Parameters

mem

A pointer to the current I/Os memory descriptor.

autoPrepare

An optional boolean variable that will call the prepare() function automatically after the memory descriptor is processed. Defaults to true.

Return Value

Returns kIOReturnSuccess, kIOReturnBusy if currently prepared, kIOReturnNoSpace if the length(mem) >= Maximum Transfer Size or the error codes returned by prepare() (qv).

Discussion

The DMA command will configure itself based on the information that it finds in the memory descriptor. It looks for things like the direction of the memory descriptor and whether the current memory descriptor is already mapped into some IOMMU. As a programmer convenience it can also prepare the DMA command immediately. See prepare(). Note the IODMACommand is designed to used multiple times with a succession of memory descriptors, making the pooling of commands possible. It is an error though to attempt to reset a currently prepared() DMA command. Warning: This routine may block so never try to autoprepare an IODMACommand while in a gated context, i.e. one of the WorkLoops action call outs.

See Also

Miscellaneous

clearMemoryDescriptor

Clears the DMACommand's current memory descriptor

cloneCommand

Creates a new command based on the specification of the current one.

complete

Complete processing of DMA mappings after an I/O transfer is finished.

gen32IOVMSegments

Helper function for a type checked call to genIOVMSegments(qv), for use with an IODMACommand set up with the output function kIODMACommandOutputHost32, kIODMACommandOutputBig32, or kIODMACommandOutputLittle32. If the output function of the IODMACommand is not a 32 bit function, results will be incorrect.

gen64IOVMSegments

Helper function for a type checked call to genIOVMSegments(qv), for use with an IODMACommand set up with the output function kIODMACommandOutputHost64, kIODMACommandOutputBig64, or kIODMACommandOutputLittle64. If the output function of the IODMACommand is not a 64 bit function, results will be incorrect.

genIOVMSegments

Generates a physical scatter/gather for the current DMA command

getMemoryDescriptor

Get the current memory descriptor

getPreparedOffsetAndLength

Returns the offset and length into the target IOMemoryDescriptor of a prepared IODDMACommand.

initWithSpecification

Primary initializer for the IODMACommand class.

OutputBig32

Output big-endian Segment32 output segment function.

OutputBig64

Output big-endian Segment64 output segment function.

OutputHost32

Output host natural Segment32 output segment function.

OutputHost64

Output host natural Segment64 output segment function.

OutputLittle32

Output little-endian Segment32 output segment function.

OutputLittle64

Output little-endian Segment64 output segment function.

prepare

Prepare the memory for an I/O transfer.

prepareWithSpecification

Prepare the memory for an I/O transfer with a new specification.

readBytes

Copy data from the IODMACommand's buffer to the specified buffer.

synchronize

Bring IOMemoryDescriptor and IODMACommand buffers into sync.

weakWithSpecification

Creates and initialises an IODMACommand in one operation if this version of the operating system supports it.

withSpecification

Creates and initializes an IODMACommand in one operation.

writeBytes

Copy data to the IODMACommand's buffer from the specified buffer.