Generic Kernel API

Charles Swiger cswiger at mac.com
Wed Nov 9 13:38:17 PST 2005


On Nov 9, 2005, at 2:25 PM, Scott Long wrote:
> Where this breaks down is in moving from 6.x to 7.0.  We make no
> guarantees there for binary or source compatiblity.  Apple is  
> trying to
> address with problem with KPI's.  There are obvious advantages to  
> this,
> but the cost is quite high.  It took them a number of years to go
> through the system and essentially re-write most of it.  And it's  
> still
> really only a theory; porting from 10.3 to 10.4 is hard because you
> have to adopt the KPIs in your code, and no one has seen 10.5 yet to
> decide if the KPI is really the same there.

That's not entirely true: I've been able to use third-party USB  
drivers from 10.2 and 10.3 under 10.4.  You do not have to adopt KPIs  
if your 10.3 driver code was using pure IOKit mechanisms, because  
Apple has provided backwards compatibility for such older driver  
binaries.  From (long link, may get split):

http://developer.apple.com/documentation/Darwin/Conceptual/ 
KEXTConcept/KEXTConceptDependencies/kext_dependencies.html

"Declare dependencies on the kernel subcomponents available in  
earlier versions of Mac OS X. This method provides backward  
compatibility for pure I/O Kit KEXTs, but some Mach and BSD symbols  
are no longer available. When you use this method, use the version of  
the kernel subcomponent that corresponds to the earliest version of  
Mac OS X you need to support (see the tables in “Declaring  
Dependencies on Kernel Subcomponents” for these values).

This method is suitable for pure I/O Kit KEXTs that must run in  
versions of Mac OS X prior to Mac OS X v10.4."

Apple's included version tables for com.apple.kernel.libkern,  
com.apple.kernel.iokit, and so forth from MacOS X 10.0 onwards later  
on that page.

-- 
-Chuck




More information about the freebsd-current mailing list