=1) The situation: 1A) I make both a "DExt" and a "SDK" for still-imaging-USB-gadgets and MACOS>=14 ,iPADOS>=17
1B) One of the USB-gadgets needs warm_up after PlugIn (i.e End-User-App must know "now-TheMomentOfPlugIn" with precision ~1sec).
=2) The question is how to do "1B" rationally?
=3) My speculative guess: in BSD-descendant I expect existence (somewhere) of a "normal file" through "macports etc", which has normal "file creation time". Such a "file creation time" (accessible better via IORegistryEntry... at SDK-level; possibly via IOUSBHostInterface at DExt-level) is cognitive target of mine.
=4) Additional constraints: Technically absent. I freely modify code either DExt (descendant of IOUSBHostInterface) or SDK-level (IORegistryEntryGetRegistryEntryID, IORegistryEntry...)
1B) One of the USB-gadgets needs warm_up after PlugIn (i.e End-User-App must know "now-TheMomentOfPlugIn" with precision ~1sec).
What's you're communication channel with your DEXT? This may not apply in your case, but if you're going through your own UserClient, then the simplest way to handle this is that your DEXT doesn't allow UserClient access until the device is "ready".
=3) My speculative guess: in BSD-descendant I expect existence (somewhere) of a "normal file" through "macports etc", which has normal "file creation time". Such a "file creation time" (accessible better via IORegistryEntry... at SDK-level; possibly via IOUSBHostInterface at DExt-level) is cognitive target of mine.
Nothing like this specifically exists. IOKit doesn't track this on it's own and we don't export a "general" device abstraction to the BSD layer.
=4) Additional constraints: Technically absent. I freely modify code either DExt (descendant of IOUSBHostInterface) or SDK-level (IORegistryEntryGetRegistryEntryID, IORegistryEntry...)
What I would actually do is have your DEXT export this data as a property, which you could then retrieve through the standard IOKit APIs. You could do that as a the date itself, but I would probably do something like an "IsReady" property. Just be aware that key name collisions are entirely possible, so I would use a key name like "<bundle id> IsReady" JUST to be sure I never got a collision.
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware