"registered" in ioreg

Hi,


I am looking to debug a kext, I saw the output of ioreg shows

!registered, !matched, active


I know what "matched" means fromIO Kit Fundamentals, But I still do no know what "registered" means. Is there further documentation for that?


Thanks

Replies

In that example, 'registered' means entered into the registery database.


From the doc:


"At boot time, the I/O Kit registers a nub for the Platform Expert, a driver object for a particular motherboard that knows the type of platform the system is running on. This nub serves as the root of the I/O Registry tree. The Platform Expert nub then loads the correct driver for that platform, which becomes the child node of the root. The Platform driver discovers the buses that are on the system and it registers a nub for each one. The tree continues to grow as the I/O Kit matches each nub to its appropriate bus driver, and as each bus driver discovers the devices connected to it and matches drivers to them."

registered
means that someone has called
registerService(…)
on the
IOService
. This makes the service available for matching. Many drivers support create two different types of I/O Registry entry:
  • The driver itself, which matches against some provider

  • One or more nubs, which are providers that other drivers can match against

The driver does the core state management and the nubs are attachment points that clients of the driver use to access the service.

Keep in mind that, if you’re trying to access a driver from user space,

IOServiceMatching
and friends will only find registered services.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"