IOFWPseudoAddressSpace.h [plain text]
#ifndef _IOKIT_IOFWPSEUDOADDRESSSPACE_H
#define _IOKIT_IOFWPSEUDOADDRESSSPACE_H
#include <IOKit/firewire/IOFWAddressSpace.h>
typedef void (*IOFWARxReqIntCompleteHandler)( void * refcon );
class IOFWPseudoAddressSpace;
#pragma mark -
class IOFWPseudoAddressSpaceAux : public IOFWAddressSpaceAux
{
OSDeclareDefaultStructors(IOFWPseudoAddressSpaceAux)
friend class IOFWAddressSpace;
friend class IOFWPseudoAddressSpace;
friend class IOFireWireController;
protected:
struct MemberVariables
{
IOFWARxReqIntCompleteHandler fARxReqIntCompleteHandler;
void * fARxReqIntCompleteHandlerRefcon;
};
MemberVariables * fMembers;
public:
virtual bool init( IOFWAddressSpace * primary );
virtual void free();
protected:
bool createMemberVariables( void );
void destroyMemberVariables( void );
virtual void handleARxReqIntComplete();
public:
virtual void setARxReqIntCompleteHandler( void * refcon, IOFWARxReqIntCompleteHandler handler );
private:
OSMetaClassDeclareReservedUsed(IOFWPseudoAddressSpaceAux, 0);
OSMetaClassDeclareReservedUsed(IOFWPseudoAddressSpaceAux, 1);
OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 2);
OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 3);
OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 4);
OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 5);
OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 6);
OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 7);
OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 8);
OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 9);
};
class IOFWPseudoAddressSpace : public IOFWAddressSpace
{
OSDeclareDefaultStructors(IOFWPseudoAddressSpace)
friend class IOFWPseudoAddressSpaceAux;
friend class IOFireWireController;
protected:
IOMemoryDescriptor* fDesc;
void * fRefCon;
FWReadCallback fReader;
FWWriteCallback fWriter;
FWAddress fBase;
UInt32 fLen;
struct ExpansionData { };
ExpansionData *reserved;
static OSData * allocatedAddresses;
virtual void free();
public:
static UInt32 simpleReader(
void* refcon,
UInt16 nodeID,
IOFWSpeed & speed,
FWAddress addr,
UInt32 len,
IOMemoryDescriptor** buf,
IOByteCount* offset,
IOFWRequestRefCon reqrefcon);
static UInt32 simpleWriter(
void* refcon,
UInt16 nodeID,
IOFWSpeed& speed,
FWAddress addr,
UInt32 len,
const void* buf,
IOFWRequestRefCon reqrefcon);
protected:
IOReturn allocateAddress(
FWAddress* addr,
UInt32 len);
void freeAddress(
FWAddress addr,
UInt32 len);
public:
static IOFWPseudoAddressSpace* readWrite(
FWAddress addr,
UInt32 len,
FWReadCallback reader,
FWWriteCallback writer,
void* refcon);
static IOFWPseudoAddressSpace* simpleRead(
IOFireWireBus* bus,
FWAddress* addr,
UInt32 len,
const void* data);
static IOFWPseudoAddressSpace* simpleReadFixed(
IOFireWireBus* bus,
FWAddress addr,
UInt32 len,
const void* data);
static IOFWPseudoAddressSpace* simpleRW(
IOFireWireBus* bus,
FWAddress* addr,
UInt32 len,
void * data);
static IOFWPseudoAddressSpace* simpleRW(
IOFireWireBus* bus,
FWAddress* addr,
IOMemoryDescriptor * data);
virtual bool initAll(
IOFireWireBus* bus,
FWAddress* addr,
UInt32 len,
FWReadCallback reader,
FWWriteCallback writer,
void* refcon);
virtual bool initFixed(
IOFireWireBus* bus,
FWAddress addr,
UInt32 len,
FWReadCallback reader,
FWWriteCallback writer,
void* refcon);
virtual UInt32 doRead(
UInt16 nodeID,
IOFWSpeed & speed,
FWAddress addr,
UInt32 len,
IOMemoryDescriptor ** buf,
IOByteCount * offset,
IOFWRequestRefCon reqrefcon);
virtual UInt32 doWrite(
UInt16 nodeID,
IOFWSpeed& speed,
FWAddress addr,
UInt32 len,
const void* buf,
IOFWRequestRefCon reqrefcon);
virtual UInt32 contains(FWAddress addr);
static IOFWPseudoAddressSpace * simpleRWFixed( IOFireWireBus *control, FWAddress addr, UInt32 len, const void *data );
protected:
virtual IOFWAddressSpaceAux * createAuxiliary( void );
protected:
inline void handleARxReqIntComplete( void )
{ ((IOFWPseudoAddressSpaceAux*)fIOFWAddressSpaceExpansion->fAuxiliary)->handleARxReqIntComplete(); }
public:
inline void setARxReqIntCompleteHandler( void * refcon, IOFWARxReqIntCompleteHandler handler )
{ ((IOFWPseudoAddressSpaceAux*)fIOFWAddressSpaceExpansion->fAuxiliary)->setARxReqIntCompleteHandler( refcon, handler ); }
private:
OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpace, 0);
OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpace, 1);
};
#endif