Godfrey,
Yes, there is an IOService subclass, but the macro appears to be defined
properly. Here's my entry, with some old comments:
// REQUIRED! This macro defines the class's constructors, destructors,
// and several other I/O Kit requires. Do NOT use super as the
// second parameter. You must use the literal name of the superclass
OSDefineMetaClassAndStructors(com_diaginc_iokit_SpotPCI, IOService)
But all problems disappeared when I placed a copy of the ansi file in:
/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks/Kernel.framework/
Headers/ppc/ansi.h
Ron
On 5/19/05 6:05 PM, "Godfrey van der Linden" <email@hidden> wrote:
> The ansi file is a red herring I'm afraid.
>
> My best guess (they are usually pretty accurate guesses too ;-), is
> that you have an IOService subclass in your driver. IOService hasn't
> changed for quite a long time but it finally changed in 10.4. This
> means that we need to do a binary compatibility on all drivers
> compiled with a pre-10.4 IOService. For some reason your driver is
> not patching. This is usually because you haven't used the macro :-
>
> OSDefineMetaClassAndStructors(<com_diaginc_ourdiagclass>, IOService);
>
> Or you have the wrong 'superclass' name in it. Check it out.
>
> Godfrey
>
> On 05/19/2005, at 10:06 , Ron Duritsch wrote:
>
>> Dean,
>>
>> After more searching (still not quite used to new search in 10.4) I
>> did find
>> the ppc/ansi.h file in the 10.2.8 SDK, but the compiler can't seem
>> to find
>> it, as shown by the error message in Xcode:
>>
>> "/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks/
>> Kernel.framewor
>> k/Headers/machine/ansi.h:33:22: error: ppc/ansi.h: No such file or
>> directory
>>
>>
>> Ron
>>
>>
>> On 5/19/05 12:32 PM, "Ron Duritsch" <email@hidden> wrote:
>>
>>
>>> More information, and problems: After reading up a bit more in the
>>> darwin
>>> mailing list archives I saw where a couple of years ago there was
>>> a similar
>>> problem whose root cause was that the original project file
>>> emanated from
>>> the old ProjectBuilder application, and there were flags problems.
>>> That's
>>> the case here in that the project file has moved along from
>>> Project builder
>>> through Xcode 1.0, 1.5, and now 2.0. So I decided to create a new
>>> project
>>> file in Xcode 2.0. This was done quickly and easily, and compiled
>>> against
>>> the Current SDK in GCC 4.0. The resultant PCI kext runs fine in
>>> Tiger. I
>>> then tried to target the 10.2.8 SDK. The kext would not build
>>> because it
>>> can't find the "ppc/ansi.h" file, referenced from "machine/ansi.h"
>>> in the
>>> 10.2.8 SDK:
>>>
>>> #if defined (__ppc__)
>>> #include "ppc/ansi.h"
>>> #elif defined (__i386__)
>>> #include "i386/ansi.h"
>>> #else
>>> #error architecture not supported
>>> #endif
>>>
>>> Indeed, this "ppc/ansi.h" file is not on my machine. The same
>>> missing file
>>> problem occurs when I target the 10.3.9 SDK.
>>>
>>> So I tried kextload on the kext I built targeting the 10.4 SDK
>>> onto a 10.3.9
>>> system, and I get the original "... is not compatible with its
>>> superclass"
>>> error message.
>>>
>>> Still hoping for some clues,
>>>
>>> Ron Duritsch
>>> Diagnostic Instruments, Inc.
>>>
>>>
>>> On 5/19/05 10:03 AM, "Ron Duritsch" <email@hidden> wrote:
>>>
>>>
>>>> I am maintaining a PCI kext for a digital camera that operates on
>>>> 10.2,
>>>> 10.3, and now 10.4.1. If I build the kext in Xcode 1.5 it will
>>>> load and work
>>>> fine on all three operating systems. If, however, I build it on
>>>> Xcode 2.0
>>>> in Tiger, it will only load and run on Tiger. It will not load at
>>>> boot time
>>>> on 10.3.9. If I try kextload in Terminal on 10.3.9 I get the
>>>> following error
>>>> message:
>>>>
>>>> 25com_diaginc_iokit_SpotPCI is not compatible with its superclass,
>>>> 9IOService superclass changed?
>>>> kextload: a link/load error occured for kernel extension
>>>> /System/Library/Extensions/SpotPCI.kext
>>>> load failed for extension /System/Library/Extensions/SpotPCI.kext
>>>>
>>>> I am building against the 10.2.8 SDK. I get the same load error
>>>> whether I
>>>> compile using GCC 4.0 or 3.3 in Xcode 2.0.
>>>>
>>>> In the Xcode 2.0 release notes "About Xcode Tools", under the
>>>> section
>>>> entitled "Compatibility of Built Binaries" it reads "IOKit-based
>>>> device
>>>> drivers built with the GCC 3.3 or GCC 4.0 compilers will run on
>>>> Mac OS X
>>>> v10.2 (Jaguar), Mac OS X v10.3 (Panther), and Mac OS X v10.4 (Tiger)
>>>> systems."
>>>>
>>>> Any clues or hints as to what I need to change to get this to work?
>>>>
>>>> Thanks,
>>>>
>>>> Ron Duritsch
>>>> Diagnostic Instruments, Inc.
>>>>
>>>>
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Darwin-drivers mailing list (email@hidden)
>>>> Help/Unsubscribe/Update your Subscription:
>>>> http://lists.apple.com/mailman/options/darwin-drivers/rduritsch%
>>>> 40diaginc.com
>>>>
>>>> This email sent to email@hidden
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Darwin-drivers mailing list (email@hidden)
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/darwin-drivers/rduritsch%
>>> 40diaginc.com
>>>
>>> This email sent to email@hidden
>>>
>>>
>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Darwin-drivers mailing list (email@hidden)
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/darwin-drivers/email@hidden
>>
>> This email sent to email@hidden
>>
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-drivers mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/darwin-drivers/email@hidden
This email sent to email@hidden