dxd - dynax driver framework  3211
cross platform open source driver development framework
dxd::fw::address Class Reference

IOKit: FireWire address space. More...

#include <dxd_fw.h>

+ Inheritance diagram for dxd::fw::address:

Public Member Functions

 address ()
virtual void free ()
 IOKit address space free. More...
void free ()
os_result initialize (::IOFireWireUnit *iokit_fw_unit, uint64_t space, size_t size32)
 IOKit: firewire address space initializer. More...
os_result initialize (const dxd::fw &fw, uint64_t space, size_t size32)
 WDK: firewire pseudeo address space initializer. More...
virtual ~address ()
 IOKit: address space destructor. More...
virtual ~address ()

Public Attributes

size_t size32
uint64_t space =0
 firewire address More...
os_result status =not_initialized
 object status More...

Protected Member Functions

virtual os_result write (uint64_t space, const unsigned int *data32, size_t size32)

Detailed Description

IOKit: FireWire address space.

Infrastructure to open a firewire pseudo address space and handle external device I/O requests to it.

Constructor & Destructor Documentation

◆ ~address() [1/2]

virtual dxd::fw::address::~address ( )

IOKit: address space destructor.

◆ address()

dxd::fw::address::address ( )

◆ ~address() [2/2]

virtual dxd::fw::address::~address ( )

Member Function Documentation

◆ free() [1/2]

virtual void dxd::fw::address::free ( )

IOKit address space free.

Reimplemented in dxd::fw::phy, and dxd::fw::phy.

◆ free() [2/2]

void dxd::fw::address::free ( )

◆ initialize() [1/2]

os_result dxd::fw::address::initialize ( ::IOFireWireUnit *  iokit_fw_unit,
uint64_t  space,
size_t  size32 

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_unitfirewire unit to create the address space for
spacefirewire address
size32firewire address space size

◆ initialize() [2/2]

os_result dxd::fw::address::initialize ( const dxd::fw fw,
uint64_t  space,
size_t  size32 

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:

  • creates a wired backing store,
  • initializes the fifo MDL pointer with the backing store MDL
  • atomically inserts the fifo element at the beginning of the sequenced singly linked list of the address space

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.

+ Here is the call graph for this function:

◆ write()

virtual os_result dxd::fw::address::write ( uint64_t  space,
const unsigned int *  data32,
size_t  size32 

Member Data Documentation

◆ size32

size_t dxd::fw::address::size32

◆ space

uint64_t dxd::fw::address::space =0

firewire address

◆ status

os_result dxd::fw::address::status =not_initialized

object status

The documentation for this class was generated from the following file:

(c) copyright 2009 dynamic acoustics e.U. generated on Sat Aug 22 2020

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.