IOLocalConfigDirectory.h [plain text]
#ifndef __IOLOCALCONFIGDIRECTORY_H__
#define __IOLOCALCONFIGDIRECTORY_H__
#include <libkern/c++/OSObject.h>
#include <IOKit/IOReturn.h>
#include <IOKit/firewire/IOFireWireFamilyCommon.h>
#include <IOKit/firewire/IOConfigDirectory.h>
class OSArray;
class OSData;
class IOFireWireController;
class IOFWUserObjectExporter ;
class IOLocalConfigDirectory : public IOConfigDirectory
{
friend class IOFireWireController;
friend class IOFireWireUserClient ;
OSDeclareDefaultStructors(IOLocalConfigDirectory);
protected:
OSArray *fEntries; OSData *fROM; UInt32 fHeader;
struct ExpansionData { };
ExpansionData *reserved;
virtual bool init(void) APPLE_KEXT_OVERRIDE;
virtual void free(void) APPLE_KEXT_OVERRIDE;
virtual const UInt32 *getBase(void) APPLE_KEXT_OVERRIDE;
virtual IOConfigDirectory *getSubDir(int start, int type) APPLE_KEXT_OVERRIDE;
public:
static IOLocalConfigDirectory *create();
virtual IOReturn update(UInt32 offset, const UInt32 *&romBase) APPLE_KEXT_OVERRIDE;
virtual IOReturn compile(OSData *rom);
virtual IOReturn addEntry(int key, UInt32 value, OSString *desc = NULL);
virtual IOReturn addEntry(int key, IOLocalConfigDirectory *value,
OSString *desc = NULL);
virtual IOReturn addEntry(int key, OSData *value, OSString *desc = NULL);
virtual IOReturn addEntry(int key, FWAddress value, OSString *desc = NULL);
virtual IOReturn removeSubDir(IOLocalConfigDirectory *value);
const OSArray *getEntries() const;
virtual IOReturn getIndexValue(int index, IOConfigDirectory *&value) APPLE_KEXT_OVERRIDE;
protected:
virtual const UInt32 * lockData( void ) APPLE_KEXT_OVERRIDE;
virtual void unlockData( void ) APPLE_KEXT_OVERRIDE;
virtual IOReturn updateROMCache( UInt32 offset, UInt32 length ) APPLE_KEXT_OVERRIDE;
virtual IOReturn checkROMState( void ) APPLE_KEXT_OVERRIDE;
virtual IOReturn addEntry(OSString *desc);
IOReturn incrementGeneration( void );
static void exporterCleanup( const OSObject * self, IOFWUserObjectExporter * exporter ) ;
private:
OSMetaClassDeclareReservedUsed(IOLocalConfigDirectory, 0);
OSMetaClassDeclareReservedUnused(IOLocalConfigDirectory, 1);
OSMetaClassDeclareReservedUnused(IOLocalConfigDirectory, 2);
};
#endif