Re: AoE driver
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