Subject: Re: root device
To: Jason R Thorpe <thorpej@wasabisystems.com>
From: Emmanuel Dreyfus <manu@netbsd.org>
List: tech-kern
Date: 02/10/2003 19:50:14
>  > It's the same devices. Darwin has some additionnal per device info (IO
>  > class for instance), but we can have a BSD name to Darwin class name
>  > translator for the devices we need.
> 
> What are the Darwin I/O classes like?  We do have a "dv_class" member
> in struct device...

Find below the ioreg output on Darwin:
We have no dv_class yet. I thought about a distinct table, mapping dv_xname to a
class name. Anything that it not in the table would be class IOunknown.

Of course, dv_class makes the whole thing more simple, but is there any interest
for this apart for IOKit emulation? (And is there an interest for IOKit
emulation beyond getting MacOS X apps displaying something?)

+-o Root  <class IORegistryEntry>
  +-o AAPL,PowerMac G3  <class IOPlatformExpertDevice>
    +-o GossamerPE  <class GossamerPE>
    | +-o IOPMrootDomain  <class IOPMrootDomain>
    | | +-o IORootParent  <class IORootParent>
    | | +-o RootDomainUserClient  <class RootDomainUserClient>
    | | +-o RootDomainUserClient  <class RootDomainUserClient>
    | | +-o RootDomainUserClient  <class RootDomainUserClient>
    | | +-o RootDomainUserClient  <class RootDomainUserClient>
    | | +-o RootDomainUserClient  <class RootDomainUserClient>
    | | +-o RootDomainUserClient  <class RootDomainUserClient>
    | | +-o RootDomainUserClient  <class RootDomainUserClient>
    | | +-o RootDomainUserClient  <class RootDomainUserClient>
    | | +-o RootDomainUserClient  <class RootDomainUserClient>
    | | +-o RootDomainUserClient  <class RootDomainUserClient>
    | +-o options@0  <class IODTNVRAM>
    | +-o PowerPC,750@0  <class IOPlatformDevice>
    | | +-o GossamerCPU  <class GossamerCPU>
    | |   +-o IOCPUInterruptController  <class IOCPUInterruptController>
    | +-o cpus@0  <class IOPlatformDevice>
    | +-o pci@80000000  <class IOPlatformDevice>
    | | +-o AppleGracklePCI  <class AppleGracklePCI>
    | |   +-o mac-io@10  <class IOPCIDevice>
    | |   | +-o Heathrow  <class Heathrow>
    | |   |   +-o mesh@10000  <class AppleMacIODevice>
    | |   |   | +-o meshSCSIController  <class meshSCSIController>
    | |   |   |   +-o IOSCSIParallelDevice@2  <class IOSCSIParallelDevice>
    | |   |   |     +-o IOSCSIUserClientIniter  <class IOSCSIUserClientIniter>
    | |   |   |     +-o IOSCSIParallelInterfaceProtocolTransport  <class IOSCSI$
    | |   |   |       +-o IOSCSIPeripheralDeviceNub  <class IOSCSIPeripheralDev$
    | |   |   |         +-o IOSCSIPeripheralDeviceType05  <class IOSCSIPeripher$
    | |   |   |           +-o IOCompactDiscServices  <class IOCompactDiscServic$
    | |   |   |             +-o IOCDBlockStorageDriver  <class IOCDBlockStorage$
    | |   |   +-o bmac@11000  <class AppleMacIODevice>
    | |   |   | +-o BMacEnet  <class BMacEnet>
    | |   |   |   +-o IOEthernetInterface  <class IOEthernetInterface>
    | |   |   |   | +-o IONetworkStack  <class IONetworkStack>
    | |   |   |   |   +-o IONetworkStackUserClient  <class IONetworkStackUserCl$
    | |   |   |   +-o IOKernelDebugger  <class IOKernelDebugger>
    | |   |   |     +-o IOKDP  <class IOKDP>
    | |   |   +-o escc@13000  <class AppleMacIODevice>
    | |   |   +-o ch-a@13020  <class AppleMacIODevice>
    | |   |   | +-o AppleSCCSerial  <class AppleSCCSerial>
    | |   |   |   +-o AppleSCCRS232SerialStreamSync  <class AppleSCCRS232Serial$
    | |   |   |     +-o IOSerialBSDClient  <class IOSerialBSDClient>
    | |   |   +-o ch-b@13000  <class AppleMacIODevice>
    | |   |   | +-o AppleSCCSerial  <class AppleSCCSerial>
    | |   |   |   +-o AppleSCCRS232SerialStreamSync  <class AppleSCCRS232Serial$
    | |   |   |     +-o IOSerialBSDClient  <class IOSerialBSDClient>
    | |   |   +-o davbus@14000  <class AppleMacIODevice>
    | |   |   | +-o AppleOWScreamerAudio  <class AppleOWScreamerAudio>
    | |   |   |   +-o IOAudioPort  <class IOAudioPort>
    | |   |   |   +-o IOAudioPort  <class IOAudioPort>
    | |   |   |   +-o IOAudioPort  <class IOAudioPort>
    | |   |   |   +-o AppleDBDMAAudioDMAEngine  <class AppleDBDMAAudioDMAEngine$
    | |   |   |     +-o IOAudioSelectorControl  <class IOAudioSelectorControl>
    | |   |   |     | +-o IOAudioControlUserClient  <class IOAudioControlUserCl$
    | |   |   |     +-o IOAudioLevelControl  <class IOAudioLevelControl>
    | |   |   |     | +-o IOAudioControlUserClient  <class IOAudioControlUserCl$
    | |   |   |     +-o IOAudioLevelControl  <class IOAudioLevelControl>
    | |   |   |     | +-o IOAudioControlUserClient  <class IOAudioControlUserCl$
    | |   |   |     +-o IOAudioToggleControl  <class IOAudioToggleControl>
    | |   |   |     | +-o IOAudioControlUserClient  <class IOAudioControlUserCl$
    | |   |   |     +-o IOAudioToggleControl  <class IOAudioToggleControl>
    | |   |   |     | +-o IOAudioControlUserClient  <class IOAudioControlUserCl$
    | |   |   |     +-o IOAudioLevelControl  <class IOAudioLevelControl>
    | |   |   |     | +-o IOAudioControlUserClient  <class IOAudioControlUserCl$
    | |   |   |     +-o IOAudioLevelControl  <class IOAudioLevelControl>
    | |   |   |     | +-o IOAudioControlUserClient  <class IOAudioControlUserCl$
    | |   |   |     +-o IOAudioToggleControl  <class IOAudioToggleControl>
    | |   |   |     | +-o IOAudioControlUserClient  <class IOAudioControlUserCl$
    | |   |   |     +-o IOAudioStream  <class IOAudioStream>
    | |   |   |     +-o IOAudioStream  <class IOAudioStream>
    | |   |   |     +-o IOAudioToggleControl  <class IOAudioToggleControl>
    | |   |   |     | +-o IOAudioControlUserClient  <class IOAudioControlUserCl$
    | |   |   |     +-o IOAudioEngineUserClient  <class IOAudioEngineUserClient$
    | |   |   +-o sound@0,0  <class AppleMacIODevice>
    | |   |   +-o swim3@15000  <class AppleMacIODevice>
    | |   |   +-o nvram@60000  <class AppleMacIODevice>
    | |   |   | +-o AppleNVRAM  <class AppleNVRAM>
    | |   |   +-o ide@20000  <class AppleMacIODevice>
    | |   |   | +-o HeathrowATA  <class HeathrowATA>
    | |   |   |   +-o ATADeviceNub@0  <class ATADeviceNub>
    | |   |   |     +-o IOATABlockStorageDriver  <class IOATABlockStorageDriver$
    | |   |   |       +-o IOATABlockStorageDevice  <class IOATABlockStorageDevi$
    | |   |   |         +-o IOBlockStorageDriver  <class IOBlockStorageDriver>
    | |   |   |           +-o IC35L040AVVA07-0 Media  <class IOMedia>
    | |   |   |             +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |             +-o IOApplePartitionScheme  <class IOApplePartition$
    | |   |   |               +-o Apple@1  <class IOMedia>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |               +-o Macintosh@2  <class IOMedia>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |               +-o Macintosh@3  <class IOMedia>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |               +-o Macintosh@4  <class IOMedia>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |               +-o Macintosh@5  <class IOMedia>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |               +-o Macintosh@6  <class IOMedia>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |               +-o Macintosh@7  <class IOMedia>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |               +-o Patch Partition@8  <class IOMedia>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |               +-o Mac OS X@9  <class IOMedia>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |               +-o Mac OS 9@10  <class IOMedia>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |               +-o Swap@11  <class IOMedia>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   |               +-o Users@12  <class IOMedia>
    | |   |   |                 +-o IOMediaBSDClient  <class IOMediaBSDClient>
    | |   |   +-o ide@21000  <class AppleMacIODevice>
    | |   |   | +-o HeathrowATA  <class HeathrowATA>
    | |   |   |   +-o ATADeviceNub@1  <class ATADeviceNub>
    | |   |   |     +-o IOATAPIProtocolTransport  <class IOATAPIProtocolTranspo$
    | |   |   |       +-o IOSCSIPeripheralDeviceNub  <class IOSCSIPeripheralDev$
    | |   |   |         +-o IOSCSIPeripheralDeviceType05  <class IOSCSIPeripher$
    | |   |   |           +-o IODVDServices  <class IODVDServices>
    | |   |   |             +-o IODVDBlockStorageDriver  <class IODVDBlockStora$
    | |   |   +-o via-cuda@16000  <class AppleMacIODevice>
    | |   |   | +-o AppleVIA  <class AppleVIA>
    | |   |   |   +-o cuda  <class AppleVIADevice>
    | |   |   |     +-o AppleCuda  <class AppleCuda>
    | |   |   |       +-o IOCudaADBController  <class IOCudaADBController>
    | |   |   |         +-o 2-02@2  <class IOADBDevice>
    | |   |   |         | +-o AppleADBKeyboard  <class AppleADBKeyboard>
    | |   |   |         |   +-o IOHIDSystem  <class IOHIDSystem>
    | |   |   |         |   | +-o IOHIDParamUserClient  <class IOHIDParamUserCl$
    | |   |   |         |   | +-o IOHIDUserClient  <class IOHIDUserClient>
    | |   |   |         |   +-o IOBSDConsole  <class IOBSDConsole>
    | |   |   |         |   +-o IOHIDKeyboardDevice  <class IOHIDKeyboardDevice$
    | |   |   |         |     +-o IOHIDLibUserClientIniter  <class IOHIDLibUser$
    | |   |   |         +-o 3-01@3  <class IOADBDevice>
    | |   |   |           +-o AppleADBMouseType2  <class AppleADBMouseType2>
    | |   |   |             +-o IOHIDPointingDevice  <class IOHIDPointingDevice$
    | |   |   |             | +-o IOHIDLibUserClientIniter  <class IOHIDLibUser$
    | |   |   |             +-o IOHIDSystem  <class IOHIDSystem>
    | |   |   |               +-o IOHIDParamUserClient  <class IOHIDParamUserCl$
    | |   |   |               +-o IOHIDUserClient  <class IOHIDUserClient>
    | |   |   +-o adb@0,0  <class AppleMacIODevice>
    | |   |   +-o keyboard@0,0  <class AppleMacIODevice>
    | |   |   +-o power-mgt@0,0  <class AppleMacIODevice>
    | |   +-o ATY,mach64_3DUPro@12  <class IOPCIDevice>
    | |   | +-o .Display_ATImach64_3DR3-01018008  <class IOATINDRV>
    | |   | +-o ATIRagePro  <class ATIRagePro>
    | |   +-o ATY,Rage128y@D  <class IOPCIDevice>
    | |   | +-o .Display_Rage128-0102802f  <class IOATI128NDRV>
    | |   | | +-o display0  <class IODisplayConnect>
    | |   | | | +-o AppleDisplay  <class AppleDisplay>
    | |   | | +-o IOFramebufferUserClient  <class IOFramebufferUserClient>
    | |   | +-o ATIRage128  <class ATIRage128>
    | |   |   +-o ATIR1282DContext  <class ATIR1282DContext>
    | |   |   +-o ATIR128Surface  <class ATIR128Surface>
    | |   +-o pci1045,c861@E  <class IOPCIDevice>
    | |     +-o AppleUSBOHCI  <class AppleUSBOHCI>
    | |       +-o OHCI Root Hub Simulation@E  <class IOUSBRootHubDevice>
    | |         +-o AppleUSBHub  <class AppleUSBHub>
    | |         +-o IOUSBInterface@0  <class IOUSBInterface>
    | |         +-o IOUSBUserClientInit  <class IOUSBUserClientInit>
    | +-o perch@0  <class IOPlatformDevice>
    +-o IOResources  <class IOResources>
      +-o com_apple_BootCache  <class com_apple_BootCache>
      +-o IOHIDSystem  <class IOHIDSystem>
      | +-o IOHIDParamUserClient  <class IOHIDParamUserClient>
      | +-o IOHIDUserClient  <class IOHIDUserClient>
      +-o IODisplayWrangler  <class IODisplayWrangler>
      +-o IOBSDConsole  <class IOBSDConsole>
      +-o IONetworkStack  <class IONetworkStack>
        +-o IONetworkStackUserClient  <class IONetworkStackUserClient>

-- 
Emmanuel Dreyfus
How the BSA is pushing to make computer programs patentable in Europe:
http://swpat.ffii.org/vreji/papri/eubsa-swpat0202
manu@netbsd.org