#import <libkern/c++/OSObject.h>
#import <libkern/c++/OSArray.h>
#import <IOKit/IOTypes.h>
class IOFireWireLink ;
class IOFWDCL ;
class IOFWReceiveDCL ;
class IOFWSendDCL ;
class IOFWSkipCycleDCL ;
class IOFireWireUserClient ;
class IOMemoryDescriptor ;
class IOMemoryMap ;
class IOFWDCLPool : public OSObject
{
OSDeclareAbstractStructors( IOFWDCLPool )
friend class IOFireWireUserClient ;
friend class IOFWUserLocalIsochPort ;
protected:
class Expansion* fReserved ;
IOFireWireLink * fLink ;
UInt8 fCurrentTag ;
UInt8 fCurrentSync ;
OSArray* fProgram ;
DCLNuDCLLeader fLeader ;
public:
virtual void free() ;
virtual bool initWithLink ( IOFireWireLink& link, UInt32 capacity ) ;
virtual void setCurrentTagAndSync ( UInt8 tag, UInt8 sync ) ;
virtual IOFWReceiveDCL* appendReceiveDCL (
OSSet * updateSet,
UInt8 headerBytes,
UInt32 rangesCount,
IOVirtualRange ranges[] ) ;
virtual IOFWSendDCL* appendSendDCL (
OSSet * updateSet,
UInt32 rangesCount,
IOVirtualRange ranges[] ) ;
virtual IOFWSkipCycleDCL* appendSkipCycleDCL () ;
virtual const OSArray * getProgramRef () const ;
protected :
IOReturn importUserProgram (
IOMemoryDescriptor * userExportDesc,
unsigned bufferRangeCount,
IOAddressRange bufferRanges[],
IOMemoryMap * bufferMap ) ;
IOReturn importUserDCL(
IOFWDCL * dcl,
void * importData,
IOByteCount & dataSize,
IOMemoryMap * bufferMap ) ;
protected :
virtual IOFWReceiveDCL * allocReceiveDCL () = 0 ;
virtual IOFWSendDCL * allocSendDCL () = 0 ;
virtual IOFWSkipCycleDCL * allocSkipCycleDCL () = 0 ;
private :
void appendDCL( IOFWDCL * dcl ) ;
public :
DCLCommand * getProgram() ;
OSMetaClassDeclareReservedUnused ( IOFWDCLPool, 0);
OSMetaClassDeclareReservedUnused ( IOFWDCLPool, 1);
OSMetaClassDeclareReservedUnused ( IOFWDCLPool, 2);
OSMetaClassDeclareReservedUnused ( IOFWDCLPool, 3);
OSMetaClassDeclareReservedUnused ( IOFWDCLPool, 4);
OSMetaClassDeclareReservedUnused ( IOFWDCLPool, 5);
OSMetaClassDeclareReservedUnused ( IOFWDCLPool, 6);
OSMetaClassDeclareReservedUnused ( IOFWDCLPool, 7);
} ;