• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: AoE driver
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AoE driver


  • Subject: Re: AoE driver
  • From: Quinn <email@hidden>
  • Date: Thu, 10 Feb 2005 22:09:33 +0000

At 16:20 -0500 10/2/05, Dan Markarian wrote:
We do have an ATA block storage interface at lower level in case that is more of a fit.

I don't have a lot of experience with ATAoE, but if it represents an ATA interface to the system, you probably want to implement an ATA controller, rather than a generic block storage device. This is what we recommend for similar situations, such as iSCSI.


The I/O Kit integration would go as follows.

o Subclass IOATAController and include all of your core logic in that subclass.

o Have your ATA controller match on IOResources. This is an abstract node in the I/O Registry that we provide so that software-based devices can load.

o Have your ATA controller publish nubs into the registry, one for each ATA device. These nubs would typically be a subclass of IOATADevice. These are the points where the higher levels of the block storage system connect to your component.

If you look at the I/O Registry for a typical Mac, you'll see this in action. Here's a dump from my machine.

$ ioreg
[...]
    | +-o pci@f4000000  <class IOPlatformDevice, registered, matc[...]
    | | +-o AppleMacRiscPCI  <class AppleMacRiscPCI, !registered,[...]
    | |   +-o ata-6@D  <class IOPCIDevice, registered, matched, a[...]
    | |   | +-o AppleKauaiATA  <class AppleKauaiATA, !registered,[...]
    | |   |   +-o ATADeviceNub@0  <class ATADeviceNub, registered[...]
    | |   |     +-o IOATABlockStorageDriver  <class IOATABlockSto[...]
    | |   |       +-o IOATABlockStorageDevice  <class IOATABlockS[...]
    | |   |         +-o IOBlockStorageDriver  <class IOBlockStora[...]
    | |   |           +-o IBM-IC35L120AVVA07-0 Media  <class IOMe[...]
    | |   |             +-o IOMediaBSDClient  <class IOMediaBSDCl[...]
    | |   |             +-o IOApplePartitionScheme  <class IOAppl[...]
    | |   |               +-o Apple@1  <class IOMedia, registered[...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o Macintosh@2  <class IOMedia, regist[...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o Macintosh@3  <class IOMedia, regist[...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o Macintosh@4  <class IOMedia, regist[...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o Macintosh@5  <class IOMedia, regist[...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o Macintosh@6  <class IOMedia, regist[...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o Macintosh@7  <class IOMedia, regist[...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o Patch Partition@8  <class IOMedia, [...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o X1@9  <class IOMedia, registered, m[...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o X2@10  <class IOMedia, registered, [...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o Guy Smiley@11  <class IOMedia, regi[...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o Snuffy@12  <class IOMedia, register[...]
    | |   |               | +-o IOMediaBSDClient  <class IOMediaB[...]
    | |   |               +-o BigBird@13  <class IOMedia, registe[...]
    | |   |                 +-o IOMediaBSDClient  <class IOMediaB[...]
[...]

The "ata-6" node represents the PCI device that is the ATA hardware. This is the provider for the ATA controller. In your case you don't have physical hardware, so this would be IOResources.

The "AppleKauaiATA" node is the ATA controller, a subclass of IOATAController.

$ IOPrintSuperClasses AppleKauaiATA
Looking for superclasses of AppleKauaiATA
  OSObject
  MacIOATA
  IOATAController
  IOService
  IORegistryEntry

The "ATADeviceNub" is the ATA nub, a subclass of IOATANub.

$ IOPrintSuperClasses ATADeviceNub
Looking for superclasses of ATADeviceNub
  OSObject
  IOATADevice
  IOService
  IORegistryEntry

Everything else is provided via the magic of I/O Kit.

btw The "ioreg" tool is built in to the system. You can get the IOPrintSuperClasses tool from the developer web site.

<http://developer.apple.com/samplecode/IOPrintSuperClasses/IOPrintSuperClasses.html>

S+E
--
Quinn "The Eskimo!"                    <http://www.apple.com/developer/>
Apple Developer Technical Support * Networking, Communications, Hardware
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >AoE driver (From: Sam Hopkins <email@hidden>)
 >Re: AoE driver (From: Dan Markarian <email@hidden>)

  • Prev by Date: workloop thread priority = 81, lowest in kernel threads.
  • Next by Date: Re: workloop thread priority = 81, lowest in kernel threads.
  • Previous by thread: Re: AoE driver
  • Next by thread: workloop thread priority = 81, lowest in kernel threads.
  • Index(es):
    • Date
    • Thread