IOFWUserVectorCommand.h [plain text]
#ifndef _IOKIT_IOFWUSERVECTORCOMMAND_H_
#define _IOKIT_IOFWUSERVECTORCOMMAND_H_
#import "IOFireWireUserClient.h"
#import <libkern/c++/OSObject.h>
#pragma mark -
class IOFWUserVectorCommand : public OSObject
{
OSDeclareDefaultStructors( IOFWUserVectorCommand );
protected:
IOFireWireUserClient * fUserClient;
IOFireWireController * fControl;
IOMemoryDescriptor * fSubmitDesc;
IOMemoryDescriptor * fResultDesc;
int fInflightCmds;
mach_vm_size_t fResultOffset;
OSAsyncReference64 fAsyncRef;
IOReturn fVectorStatus;
public:
static IOFWUserVectorCommand * withUserClient( IOFireWireUserClient * inUserClient );
virtual bool initWithUserClient( IOFireWireUserClient * inUserClient );
virtual void free( void );
IOReturn setBuffers( mach_vm_address_t submit_buffer_address, mach_vm_size_t submit_buffer_size,
mach_vm_address_t result_buffer_address, mach_vm_size_t result_buffer_size );
IOReturn submit( OSAsyncReference64 async_ref, mach_vm_address_t callback, io_user_reference_t refCon );
void asyncCompletion( void * refcon,
IOReturn status,
IOFireWireNub * device,
IOFWCommand * fwCmd );
void asyncPHYCompletion( void * refcon,
IOReturn status,
IOFireWireBus * bus,
IOFWAsyncPHYCommand * fwCmd );
protected:
IOReturn submitOneCommand( CommandSubmitParams * params );
};
#endif