Re: IORegistry crash (was: Two IOService in the same kext ? )
Re: IORegistry crash (was: Two IOService in the same kext ? )
- Subject: Re: IORegistry crash (was: Two IOService in the same kext ? )
- From: Shawn Erickson <email@hidden>
- Date: Thu, 30 May 2002 11:40:58 -0700
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" <email@hidden>
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 | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/darwin-kernel
Do not post admin requests to the list. They will be ignored.