site_archiver@lists.apple.com Delivered-To: darwin-kernel@lists.apple.com The I/O Kit integration would go as follows. o Subclass IOATAController and include all of your core logic in that subclass. $ 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 "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. <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 (Darwin-kernel@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-kernel/site_archiver%40lists.a... 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. 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. 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. btw The "ioreg" tool is built in to the system. You can get the IOPrintSuperClasses tool from the developer web site. This email sent to site_archiver@lists.apple.com