IOPolledInterface.h [plain text]
#ifndef _IOPOLLEDINTERFACE_H_
#define _IOPOLLEDINTERFACE_H_
#include <libkern/c++/OSObject.h>
#define kIOPolledInterfaceSupportKey "IOPolledInterface"
enum
{
kIOPolledPreflightState = 1,
kIOPolledBeforeSleepState = 2,
kIOPolledAfterSleepState = 3,
kIOPolledPostflightState = 4
};
enum
{
kIOPolledWrite = 1,
kIOPolledRead = 2
};
typedef void (*IOPolledCompletionAction)( void * target,
void * parameter,
IOReturn status,
uint64_t actualByteCount);
struct IOPolledCompletion
{
void * target;
IOPolledCompletionAction action;
void * parameter;
};
class IOPolledInterface : public OSObject
{
OSDeclareAbstractStructors(IOPolledInterface);
protected:
struct ExpansionData { };
ExpansionData * reserved;
public:
virtual IOReturn probe(IOService * target) = 0;
virtual IOReturn open( IOOptionBits state, IOMemoryDescriptor * buffer) = 0;
virtual IOReturn close(IOOptionBits state) = 0;
virtual IOReturn startIO(uint32_t operation,
uint32_t bufferOffset,
uint64_t deviceOffset,
uint64_t length,
IOPolledCompletion completion) = 0;
virtual IOReturn checkForWork(void) = 0;
static IOReturn checkAllForWork(void);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 0);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 1);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 2);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 3);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 4);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 5);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 6);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 7);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 8);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 9);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 10);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 11);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 12);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 13);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 14);
OSMetaClassDeclareReservedUnused(IOPolledInterface, 15);
};
#endif