Re: [PATCH RFC] [1/9] Core module symbol namespaces code and intro.

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Andi Kleen <ak@...>
Cc: <netdev@...>, <linux-kernel@...>, <sam@...>, <rusty@...>
Date: Sunday, November 25, 2007 - 4:27 pm

> This patch allows to export symbols only for specific modules by 
 > introducing symbol name spaces. A module name space has a white
 > list of modules that are allowed to import symbols for it; all others
 > can't use the symbols.
 > 
 > It adds two new macros: 
 > 
 > MODULE_NAMESPACE_ALLOW(namespace, module);

I definitely like the idea of organizing exported symbols into
namespaces.  However, I feel like it would make more sense to have
something like

MODULE_NAMESPACE_IMPORT(namespace);

inside the modules that use a namespace.  This matches the way C
preprocessor #includes, C++ namespaces, perl "use", etc. works and so
it is probably closer to how programmers think.  It does weaken the
enforcement of review a little bit, since there are no changes to the
site where things are exported to catch, but git makes it easy to
sneak that kind of change in anyway.

The practical benefits are that you don't end up with stupid patch
conflicts caused by one patch adding MODULE_NAMESPACE_ALLOW() for
module "foo" and another patch adding it for module "bar" at the same
place, and that it becomes simpler for people to test or deliver, say,
a new TCP congestion module without having to rebuild the whole kernel
(which is an especially huge pain for distro kernels).

In any case I would make use of this in whatever form it gets merged
in -- Mellanox ConnectX hardware can operate simultaneously as an
InfiniBand adapter and a 10Gb ethernet NIC, and so my driver is split
up into a low-level mlx4_core driver that exports symbols for other
mlx4 drivers to use; clearly it only makes sense to export them to
other parts of the driver, and in this case the difference between
"ALLOW" and "IMPORT" semantics is not a big deal.

 - R.
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [PATCH RFC] [1/9] Core module symbol namespaces code and..., Roland Dreier, (Sun Nov 25, 4:27 pm)
Re: [PATCH RFC] [1/9] Core module symbol namespaces code and..., Stephen Hemminger, (Mon Nov 26, 2:25 pm)
Re: [PATCH RFC] [1/9] Core module symbol namespaces code and..., Arjan van de Ven, (Thu Nov 29, 12:53 pm)
Re: [PATCH RFC] [1/9] Core module symbol namespaces code and..., Stephen Hemminger, (Tue Nov 27, 7:00 pm)
Re: [PATCH RFC] [1/9] Core module symbol namespaces code and..., Christoph Hellwig, (Tue Nov 27, 12:33 pm)
Re: [PATCH RFC] [1/9] Core module symbol namespaces code and..., Arnaldo Carvalho de Melo, (Thu Nov 22, 8:01 am)
Re: [PATCH RFC] [1/9] Core module symbol namespaces code and..., Christoph Hellwig, (Thu Nov 22, 7:06 am)
Re: [PATCH RFC] [1/9] Core module symbol namespaces code and..., Christoph Hellwig, (Thu Nov 22, 8:03 am)
Re: [PATCH RFC] [1/9] Core module symbol namespaces code and..., Christoph Hellwig, (Thu Nov 22, 7:05 am)
Re: [PATCH RFC] [1/9] Core module symbol namespaces code and..., Arjan van de Ven, (Wed Nov 21, 11:03 pm)
[PATCH RFC] [7/9] Convert TCP exports into namespaces, Andi Kleen, (Wed Nov 21, 10:43 pm)
[PATCH RFC] [8/9] Put UDP exports into a namespace, Andi Kleen, (Wed Nov 21, 10:43 pm)
[PATCH RFC] [9/9] Add a inet namespace, Andi Kleen, (Wed Nov 21, 10:43 pm)
[PATCH RFC] [4/9] modpost: Fix format string warnings, Andi Kleen, (Wed Nov 21, 10:43 pm)