Post

Replies

Boosts

Views

Activity

Xcode 12.5 - include <atomic> fails
I am using #include <atomic> in my DriverKit extension c++ file. This compiled correctly with older versions of Xcode, but starting with Xcode 12.5 (and beta 13) the compiler can no longer find some required types. For example: In file included from /Applications/Xcode-12.5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/atomic:571: In file included from /Applications/Xcode-12.5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__threading_support:14: In file included from /Applications/Xcode-12.5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/chrono:827: /Applications/Xcode-12.5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ctime:57:9: error: no member named 'clock_t' in the global namespace; did you mean 'clockid_t'? using ::clock_t; There are various other missing definitions, time_t, tm, clock, difftime, time, asctime, ctime, gmtime, localtime and strtime, none of which I am trying to use. I assume that there was a change in the default include paths, but can't see what it is. Suggestions would be welcome! Thanks!
2
0
2.1k
Jun ’21
RegisterEthernetInterface fails on Monterey
My NetworkingDriverKit extension is failing on Monterey. The RegisterEthernetInterface() call is returning a result of 0x08e4bd01. This code works correctly on both Catalina and BigSur. Can't find any information on that error code. Or what might have changed for Monterey. Suggestions would be welcome! networkInit_Impl [result = RegisterEthernetInterface(ivars->fHostMAC, ivars->poolPacketBuffer, ivars->queues, 4)] Unkown_kIOReturn 8e4bd01
2
0
1.3k
Jun ’21
DextLaunch - Can only launch dexts from a verified SIP protected path
With the current version of Big Sug (Intel and Apple Silicon), our previously working DriverKit Extension now fails when we plug in our USB test device. Any suggestions would be welcome. This is with freshly built and notarized app bundles and with a previously built and notarized bundle that was tested to work correctly with the previous version of Big Sur. The installation application can successfully activate the bundle. -- com.apple.system_extension.driver_extension enabled active teamID bundleID (version) name [state]F7XQY5N68B com.belcarra.logitech-driverkit (0.1.1/0.1.1) com.belcarra.logitech-driverkit [activated waiting for user] We see this error in the system log when the DextLaunch() call fails. Received kext load notification: com.apple.driver.usb.cdc kernelmanagerd[97:2578] Error occurred while handling request "DextLaunch(arguments: Optional(["Driver Extension Server Tag": 4294969558, "CFBundleIdentifier": com.belcarra.belcarra-driverkit-bigsur, "Driver Extension Server Name": com.belcarra.driverkit.musblan, "Check In Token": 22331]))": Invalid argument: Can only launch dexts from a verified SIP protected path If I reboot and disable SIP, everything works correctly. Feedback: FB8963751
2
0
1.1k
Jan ’21
Xcode 12 official release - errors compiling driverkit OSAction
After updating to the new Xcode 12 ( not beta) building our driver kit extension fails for the derived source file Comm.iig.cpp with messages complaining about too many arguments to IODataQueueDispatchSource. This is from Big Sur running on Intel, I am seeing the same behaviour on Catalina. This worked correctly with the previous version of Xcode and the previous Xcode-beta. Users/sl/work20/musbland/comm-dext/build/driverkit.build/Debug-driverkit/DriverKit.build/DerivedSources/com.belcarra.belcarra-comm-driverkit/Comm.iig.cpp:296:186: error: too many arguments to function call, expected 3, have 4 ret = IODataQueueDispatchSource::DataAvailableInvoke(rpc, self, SimpleMemberFunctionCast(IODataQueueDispatchSource::DataAvailableHandler, *self, &Comm::TxAvailableImpl), OSTypeID(OSActionComm_TxAvailable)); In file included from /Users/sl/work20/musbland/comm-dext/build/driverkit.build/Debug-driverkit/DriverKit.build/DerivedSources/com.belcarra.belcarra-comm-driverkit/Comm.iig.cpp:9: In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/DriverKit19.0.sdk/System/DriverKit/System/Library/Frameworks/DriverKit.framework/Headers/DriverKit.h:44: In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/DriverKit19.0.sdk/System/DriverKit/System/Library/Frameworks/DriverKit.framework/Headers/OSCollections.h:33: In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/DriverKit19.0.sdk/System/DriverKit/System/Library/Frameworks/DriverKit.framework/Headers/OSCollection.h:35: In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/DriverKit19.0.sdk/System/DriverKit/System/Library/Frameworks/DriverKit.framework/Headers/OSObject.h:46: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/DriverKit19.0.sdk/System/DriverKit/System/Library/Frameworks/DriverKit.framework/Headers/OSMetaClass.h:185:28: note: expanded from macro 'OSTypeID' #define OSTypeID(type) g type ## MetaClass ^~~~~~
2
0
1.2k
Sep ’20
IOUserNetworkTxSubmissionQueue - SetDispatchQueue - QUEUENAME
Can someone provide a short example of how to use the QUEUENAME macro in the iig file? For an IOUserNetworkTxSubmissionQueue, it appears to be necessary to do an IODispatchQueue::Create("name", &amp;IODispatchQueue queue) and then do a SetDispatchQueue("queue_name", queue). The documentation for IOService::SetDispatchQueue() says The name to assign to the queue. Use this name with the QUEUENAME macro to designate where you want the methods of your class to execute. Include that macro at the end of your method signature methods in the .iig file of your class.
1
0
897
Jul ’20
IOService::serviceMatching() or alternate in DriverKit
What is the replacement for IOService::serviceMatching() in DriverKit?Or an alternate method for one instance of a Driver Extension to get access to another? I'm implementing for a multiple interface USB device and following the design pattern in the AppleUSBCDC examples to allow access between extensions for each to the USB Interfaces. E.g. CDC ECM style with COMM and DATA.
5
0
1.7k
Jun ’20