dxd - dynax driver framework 2.2.0d81
cross platform open source driver development framework
|
IOKit: FireWire physical address space. More...
#include <dxd_fw.h>
Public Member Functions | |
void | free () |
IOKit physical address space free. | |
void | free () |
IOKit address space free. | |
template<class sgl_t > | |
os_result | initialize (::IOFireWireUnit *iokit_fw_unit, ::IOMemoryDescriptor *iokit_memory_descriptor, unsigned int &segments, sgl_t &sgl) |
IOKit physical address space allocator. | |
os_result | initialize (::IOFireWireUnit *iokit_fw_unit, uint64_t space, size_t size32) |
IOKit: firewire address space initializer. | |
template<class sgl_t > | |
os_result | initialize (const dxd::fw &fw, ::MDL *mdl, unsigned int &segments, sgl_t &sgl) |
os_result | initialize (const dxd::fw &fw, uint64_t space, size_t size32) |
WDK: firewire pseudeo address space initializer. | |
phy () | |
os_result | synchronize (direction direction=direction::both) |
virtual | ~phy () |
Public Attributes | |
size_t | size32 |
uint64_t | space =0 |
firewire address | |
os_result | status |
Protected Member Functions | |
virtual os_result | write (uint64_t space, const unsigned int *data32, size_t size32) |
IOKit: FireWire physical address space.
Infrastructure to open a firewire physical address space, transparently maps backing store memory or if this is not possible due to memory boundary restrictions handles external device I/O requests to it.
|
inline |
|
inline |
|
inlinevirtual |
IOKit physical address space free.
Checks if its a physical address space and
completes its DMA if it was prepared,
lets the super class complete the freeing of the address space.
Reimplemented from dxd::fw::address.
|
inlinevirtual |
IOKit address space free.
Reimplemented from dxd::fw::address.
|
inline |
IOKit physical address space allocator.
Allows re-initialization.
Checks the provided firewire device and
the provided memory.
checks firewire device state,
Tries to create a firewire physical address space out of the provided backing store,
if its entire range is below 4GB, it prepares its DMA,
it activates the newly created physical address space,
obtains the physical firewire address space scatter gather list and
converts it into the user supplied structure.
If the physical address range could not be created
it tries to create a simple R/W pseudo address space;
it activates the newly created simple R/W pseudo address space,
on success it converts the address space into the user supplied structure.
iokit_fw_unit | firewire unit to create the address space for |
iokit_memory_descriptor | firewire backing store physical memory |
segments | in: max amount of segments of scatter gather list; out: occupied amount of segments of scatter gather list |
sgl | scatter gather list; user defined array of lo,hi and length members |
|
inlineinherited |
IOKit: firewire address space initializer.
Allows re-initialization.
Checks for valid fw unit object,
checks firewire device state,
creates a pdeudo address space,
returns the address and
activates the firewire space.
iokit_fw_unit | firewire unit to create the address space for |
space | firewire address |
size32 | firewire address space size |
|
inline |
Allows re-initialization.
limit SGL elements
against size of the buffer described by the provided MDL,
create temporary buffer to receive address space segments
constructs the appropriate irb, if necessary applies workaround for bounce buffer bug in 64 bit Windows with more than 4GB physical memory,
and submits it to the lower device,
obtains an handle to windows representation of the spawned address space,
checks returned number of physical segments,
obtains number of physical segments,
converts physical segment range into user supplied structure
mdl | backing store: needs to be mapped below 4GB boundary or |
segments | correct paging needs to be ensured |
|
inlineinherited |
WDK: firewire pseudeo address space initializer.
Make sure to free the address space as long as there is a valid connection to the device object (i.e. during device::conclude() or device::sleep(). The system will crash after the driver was unloaded if the device writes into a previously allocated address space - even if the address space has been re-allocated after re-loading the driver!
Allows re-initialization.
iterates over all fifo elements and for each fifo elements:
constructs the appropriate irb
and submits it to the lower device,
obtains an handle to windows representation of the spawned address space,
retrieves the actual address and length of firewire space.
|
inlineprotectedvirtualinherited |
|
inherited |
|
inherited |
firewire address
os_result dxd::fw::phy::status |
(c) copyright 2009 dynamic acoustics e.U. | generated on Fri Dec 20 2024 |