ADC Home > Reference Library > Reference > Darwin > Kernel Framework Reference
|
IOATADevice |
Inherits from: | |
Declared In: |
Implements a relay to an ATA Bus where a drive is attached.
IOATADevice is the superclass which represents a particular device attached to a particular IOATAController (bus). IOATADevice is the provider for ATA mass-storage device drivers. IOATADevice is the factory for all IOATACommand objects and is responsible for creating and freeing IOATACommands. IOATAControllers will create an instance of IOATADevice for each device physically connected to the ATA bus. IOATADevice is virtual and specific subclasses should be implemented for particular types of IOATAController. In this manner, controller-specifc IOATACommands may be paired with the proper type of controller.
Creates IOATACommands.
Submits IO requests
Releases a command object that is no longer needed.
Finds out what kind of device this nub is (ATA or ATAPI).
Determines whether this device is number 0 or 1 (ie, master/slave).
Matching method for IOBSDInit and so on.
Matching method for IOBSDInit and so on.
Matching method for IOBSDInit and so on.
Sends a message to client drivers.
Finds out the bus capability.
Finds out what speed the bus has configured for this unit.
Tells the bus what speed to use for your device.
allocCommand |
Creates IOATACommands.
public
virtual IOATACommand* allocCommand( void );
Returns null if allocation failed. Retain count is one.
Device drivers should allocate command objects only through this method.
executeCommand |
Submits IO requests
public
virtual IOReturn executeCommand( IOATACommand *command);
command
Pointer to a valid IOATACommand with the command to be executed.
Returns kIOSuccess (0) if the command was successfully queued in the controller.
freeCommand |
Releases a command object that is no longer needed.
public
virtual void freeCommand( IOATACommand *inCommand);
inCommand
The command to be released.
Do not free an object in use and do not release the object anymore times than you have retained it.
getDeviceType |
Finds out what kind of device this nub is (ATA or ATAPI).
public
virtual ataDeviceType getDeviceType( void );
Returns ataDeviceType as defined in IOATATypes.h
getUnitID |
Determines whether this device is number 0 or 1 (ie, master/slave).
public
virtual ataUnitID getUnitID( void );
Returns ataUnitID - 0 or 1.
matchLocation |
Matching method for IOBSDInit and so on.
public
virtual IOService* matchLocation( IOService *client);
matchPropertyTable(OSDictionary *) |
Matching method for IOBSDInit and so on.
public
virtual bool matchPropertyTable( OSDictionary *table);
matchPropertyTable(OSDictionary *, SInt32 *) |
Matching method for IOBSDInit and so on.
public
virtual bool matchPropertyTable( OSDictionary *table, SInt32 *score);
notifyEvent |
Sends a message to client drivers.
public
virtual void notifyEvent( UInt32 event );
This method is called by controllers when they need to send a message to client (disk) drivers.
provideBusInfo |
Finds out the bus capability.
public
virtual IOReturn provideBusInfo( IOATABusInfo *getInfo);
getInfo
A pointer to a valid IOATABusInfo object.
Returns kIOSuccess (0) and the getInfo object will be filled out by the bus controller with information about the bus.
This method finds out the bus capability so the client can choose the features to set and commands to run.
provideConfig |
Finds out what speed the bus has configured for this unit.
public
virtual IOReturn provideConfig( IOATADevConfig *configRequest);
configRequest
Pointer to a valid IOATADevConfig object.
Returns kIOSuccess (0) on successful completion and configRequest will contain the configuration information.
selectConfig |
Tells the bus what speed to use for your device.
public
virtual IOReturn selectConfig( IOATADevConfig *configRequest);
configRequest
Pointer to a valid and initialized IOATADevConfig object.
Returns kIOSuccess (0) if the configuration was succesfully selected.
This should only be called once during a disk drivers start method before registering its availability, and must be called prior to issuing any data IO transactions.
ExpansionData |
protected
struct ExpansionData { };
This structure will be used to expand the capablilties of the IOWorkLoop in the future.
reserved |
protected
ExpansionData *reserved;
Reserved for future use. (Internal use only)
|
Last Updated: 2008-12-19