Re: inter_module_get and __symbol_get

From: Keith Owens
Date: Mon Jan 24 2005 - 17:59:09 EST


On Mon, 24 Jan 2005 14:36:10 -0800,
David Mosberger <davidm@xxxxxxxxxxxxxxxxx> wrote:
>Keith,
>
>I didn't see any followup to your message. My apologies if I missed
>something.
>
>You wrote:
>
> Keith> inter_module_* and __symbol_* solve these class of problems:
>
> Keith> Module A can use module B if B is loaded, but A does not
> Keith> require module B to do its work. B is optional.
>
> Keith> The kernel can use code in module C is C is loaded, but the
> Keith> base kernel does not require module C. C is optional.
>
>Why isn't this handled via weak references? If the reference comes
>out as 0, you know the underlying module/facility isn't there and
>proceed accordingly.

Weak references are only done once, when the module is loaded. We
already use weak references for static determination of symbol
availability. inter_module_* and __symbol_* are aimed at the dynamic
reference problem, not static.

Module A can use module B if B is loaded, but A does not require module
B to do its work. B can be loaded at any time, or even unloaded at any
time, although that is much rarer. Dynamic references require a
register/unregister style interface, thus inter_module_* and
__symbol_*.

Does the kernel code really need optional dynamic references between
modules or kernel -> modules? That depends on how people code their
modules. If the rest of the kernel no longer needs dynamic symbol
reference then drop inter_module_* and __symbol_*.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/