Re: IORegistry crash (was: Two IOService in the same kext ? )
Yeah, plist samples would help. As you seem to be doing but just to restate... Basically your effect driver should match against your hardware using the normal PCI match methods (it is PCI based correct?). Your effect driver then will get matched, probed, and things go correctly started. At this point your effect driver can register itself (registerService) as being ready for others to use. (It could also publish nubs, which themselves would register for others to utilize.) So your frame buffer driver should be setup to match against your effect driver (using the full class name of the effect driver in IOProviderClass). This will get your frame buffer driver loaded shortly affect your effect driver registers itself. In the probe and start method calls you will get a pointer to your effect driver (the provider pointer). Your frame buffer should cache this reference and use it to interact with the effect driver, etc. (You could consider using the open/close methods to build a "strong" relationship between your two drivers.) The important thing is that your effect driver shouldn't register itself until it is ready to be used by others. Also your frame buffer kext bundle will need to be in the /System/Library/Extensions directory for matching to work correctly (it doesn't scan outside of that directory). Of course you most likely could load the kexts manually, load the frame buffer kext and soon afterwards load the efffect driver kext. This gets the frame buffer into the kernel so it will match against the effect driver once it regs itself. -Shawn On Thursday, May 30, 2002, at 11:06 AM, Godfrey van der Linden wrote: It depends on how you publish your com_matrox_EffectDriver (Note the prefix, this is really important quite a few drivers are going to have effects right?) How does the 'Effect Driver' get created? How does your FrameBuffer get created? can we see the IOKitPersonalties? Godfrey At 13:24 -0400 02-5-30, Francis bouchard wrote: Sorry for cross posting but I am really desperate. For the one who followed this thread, here is the status. I would like my driver model to look like the drawing. My IOFrameBuffer declares an IOProvicerClass of EffectDriver (which its provider is an IOPCIDevice). This way My effectDriver which is a service provider for my FrameBuffer gets loaded before the IOFrameBuffer and the FrameBuffer gets the pointer to the EffectDriver (its provider through the parameter in the start routine. But it doesn't work! HELP!!!! How do I make a driver a provider for another class ??? If I put the IOProviderClass in the bundle settings, my driver won load (kmod but no init called). A hint is that ioreg or IORegistry crashes! for some reason, as soos as I try to connect my IOFrameBuffer ot the effect dirver I seem to break everything up. If I put IOPCIDevice in the IOProviderClass and "slmost stub my frame buffer" everything is OK. Francis On 28/05/02 12:52, "Francis bouchard" <francis.bouchard@matrox.com> wrote: I agree that I'm more fighting with IOKit than using it. Let's see how my drivers works. Let's try ou my _talent_ for drawing. ------ ------------------ | OS | | our effects | User Land ------ ------------------ ________________|____________________________|_________ KernelLand | | ------------------- ------------------ | IOFBUserClient | | EffectDriver | | IOFrameBuffer | | UserClient | ------------------- ------------------ | | | ------------------ |_______________________| EffectDriver | | (IOService) | ------------------ _______________________________________________ darwin-kernel mailing list | darwin-kernel@lists.apple.com Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/darwin-kernel Do not post admin requests to the list. They will be ignored.
participants (1)
-
Shawn Erickson