IORemoteConfigDirectory.cpp [plain text]
#import <IOKit/firewire/IOConfigDirectory.h>
#import <IOKit/firewire/IORemoteConfigDirectory.h>
#import <IOKit/firewire/IOFireWireDevice.h>
#import "FWDebugging.h"
#import <libkern/c++/OSIterator.h>
#import <libkern/c++/OSData.h>
OSDefineMetaClassAndStructors(IORemoteConfigDirectory, IOConfigDirectory)
OSMetaClassDefineReservedUnused(IORemoteConfigDirectory, 0);
OSMetaClassDefineReservedUnused(IORemoteConfigDirectory, 1);
OSMetaClassDefineReservedUnused(IORemoteConfigDirectory, 2);
bool
IORemoteConfigDirectory::initWithOwnerOffset( IOFireWireROMCache *rom,
int start, int type)
{
fROM = rom;
fROM->retain();
if( !IOConfigDirectory::initWithOffset(start, type) )
{
fROM->release();
fROM = NULL;
return false;
}
return true;
}
void
IORemoteConfigDirectory::free()
{
if(fROM)
fROM->release();
IOConfigDirectory::free();
}
IOConfigDirectory *
IORemoteConfigDirectory::withOwnerOffset( IOFireWireROMCache *rom,
int start, int type)
{
IORemoteConfigDirectory *dir;
dir = new IORemoteConfigDirectory;
if( !dir )
return NULL;
if( !dir->initWithOwnerOffset(rom, start, type) )
{
dir->release();
dir = NULL;
}
return dir;
}
const UInt32 *IORemoteConfigDirectory::getBase()
{
return ((const UInt32 *)fROM->getBytesNoCopy())+fStart+1;
}
IOReturn IORemoteConfigDirectory::update(UInt32 offset, const UInt32 *&romBase)
{
return kIOReturnError;
}
IOConfigDirectory *
IORemoteConfigDirectory::getSubDir(int start, int type)
{
return withOwnerOffset(fROM, start, type);
}
const UInt32 * IORemoteConfigDirectory::lockData( void )
{
fROM->lock();
return (UInt32 *)fROM->getBytesNoCopy();
}
void IORemoteConfigDirectory::unlockData( void )
{
fROM->unlock();
}
IOReturn IORemoteConfigDirectory::updateROMCache( UInt32 offset, UInt32 length )
{
return fROM->updateROMCache( offset, length );
}
IOReturn IORemoteConfigDirectory::checkROMState( void )
{
return fROM->checkROMState();
}