Take the following scenario:

compiled in: module A

kldstat -v shows module 'A'

kldload A
 damned thing succeeds.
e.g.
[phaser.whistle.com] 516 kldstat -v
Id Refs Address    Size     Name
 1    2 0xf0100000 1c8198   kernel.try
        Contains modules:
                Id Name
                 1 rootbus
                 2 netgraph
[...]
 2    1 0xf07f0000 4000     netgraph.ko
        Contains modules:
                Id Name
                31 netgraph

this is handleable by just not loading 'A'
but what about the following:

kldload 'B' where B is defined to have a dependency on 'A'
and 'A' is already loaded..

A get's loaded again.. leading to REALLY strange behaviour
if the kernel is talking to one copy of A and B is talking 
to the other.

I saw a suggestion from Peter to do something to change this,
but I didn't understand it at the time. Now I think I saw what 
he was talking about.

can whatever he was suggesting be done?

as it is I can't win..

If I don't declare a dependency between A and B then I need to have 
A compiled in for B to load, but if A is loaded instead of 
compiled, B can't find it. If I DO declare a dependency, then
if I load B it will ALWAYS load A even if it's already compiled in.

as a result, the only way I can make it work is if either both A 
and B are compiled in or A and B are both loaded.
Unfortunatly, I have some node that need to be compiled in
as the infrastructure is not quite ready for them to be loaded yet,
(e.g. interrupt hooking etc.) so ALL ofthe nodes need to be 
compiled in.
Effectively, this is the same as not having KLDs.

If I can't use them, what good are they?

I've had a look at the code, but 
I think this would be a 20 minute thing for the right person, 
rather than a 2 day thing for me...


julian

To Unsubscribe: send mail to majord...@freebsd.org
with "unsubscribe freebsd-current" in the body of the message

Reply via email to