Mac Developer Library

Developer

IOATADevice Class Reference

Options
Deployment Target:

On This Page
Language:

IOATADevice

This object implements a relay to an ATA Bus where a drive is attached. More...

Inheritance


Not Applicable

Conforms To


Not Applicable

Import Statement


Not Applicable @import Kernel;

Availability


Available in OS X v10.0 and later.
  • create IOATACommands. Device drivers should allocate command objects only through this method.

    Declaration

    C++

    virtual IOATACommand* allocCommand( void );

    Return Value

    null if allocation failed. Retain count is one.

    Import Statement

  • Submit IO requests

    Declaration

    C++

    virtual IOReturn executeCommand( IOATACommand *command);

    Parameters

    command

    pointer to a valid IOATACommand with the command to be executed.

    Return Value

    kIOSuccess (0) if the command was successfully queued in the controller.

    Import Statement

  • release a command object that is no longer needed. Do not free an object in use and do not release the object anymore times than you have retained it.

    Declaration

    C++

    virtual void freeCommand( IOATACommand *inCommand);

    Parameters

    inCommand

    the command to be released.

    Import Statement

  • Find out what kind of device this nub is (ata or atapi)

    Declaration

    C++

    virtual ataDeviceType getDeviceType( void );

    Return Value

    ataDeviceType as defined in IOATATypes.h

    Import Statement

  • Determine whether this device is number 0 or 1 (ie, master/slave)

    Declaration

    C++

    virtual ataUnitID getUnitID( void );

    Return Value

    ataUnitID - 0 or 1.

    Import Statement

  • matching stuff for IOBSDInit and so on.

    Declaration

    C++

    virtual IOService* matchLocation( IOService *client);

    Import Statement

  • matching stuff for IOBSDInit and so on.

    Declaration

    C++

    virtual bool matchPropertyTable( OSDictionary *table);

    Import Statement

  • matching stuff for IOBSDInit and so on.

    Declaration

    C++

    virtual bool matchPropertyTable( OSDictionary *table, SInt32 *score);

    Import Statement

  • called by controllers when they need to send a message to client (disk) drivers.

    Declaration

    C++

    virtual void notifyEvent( UInt32 event );

    Import Statement

  • Find out the bus capability so the client can choose the features to set and commands to run.

    Declaration

    C++

    virtual IOReturn provideBusInfo( IOATABusInfo *getInfo);

    Parameters

    getInfo

    a pointer to a valid IOATABusInfo object.

    Return Value

    kIOSuccess (0) and the getInfo object will be filled out by the bus controller with information about the bus.

    Import Statement

  • Find out what speed the bus has configured for this unit.

    Declaration

    C++

    virtual IOReturn provideConfig( IOATADevConfig *configRequest);

    Parameters

    configRequest

    pointer to a valid IOATADevConfig object.

    Return Value

    kIOSuccess (0) on successful completion and configRequest will contain the configuration information.

    Import Statement

  • Tell the bus what speed to use for your device.

    Declaration

    C++

    virtual IOReturn selectConfig( IOATADevConfig *configRequest);

    Parameters

    configRequest

    pointer to a valid and initialized IOATADevConfig object.

    Return Value

    kIOSuccess (0) if the configuration was succesfully selected.

    Discussion

    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.

    Import Statement

Data Types

  • Declaration

    C++

    struct ExpansionData { };

    Discussion

    This structure will be used to expand the capablilties of the IOWorkLoop in the future.

Instance Variables

  • Reserved for future use. (Internal use only)

    Declaration

    C++

    ExpansionData *reserved;