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: Thursday, November 29, 2007 - 5:55 am

On Thursday 22 November 2007, Andi Kleen wrote:

I think it would be good if you could specify a default namespace
per module, that could reduce the amount of necessary changes significantly.

For example, you can do

#define EXPORT_SYMBOL_GLOBAL(sym) __EXPORT_SYMBOL(sym, "_gpl",,, NULL)
#ifdef MODULE_NAMESPACE
#define EXPORT_SYMBOL_GPL(sym) EXPORT_SYMBOL_GLOBAL(sym)
#else
#define EXPORT_SYMBOL_GPL(sym) EXPORT_SYMBOL_NS(sym, MODULE_NAMESPACE)
#endif

If we go that way, it may be useful to extend the namespace mechanism to
non-GPL symbols as well, like

#define EXPORT_SYMBOL(sym) __EXPORT_SYMBOL(sym, "",__## MODULE_NAMESPACE, NS_SEPARATOR #MODULE_NAMESPACE, #MODULE_NAMESPACE)

Unfortunately, doing this automatic namespace selection requires to set
the namespace before #include <linux/module.h>. One way to work around this
could be to use Makefile magic so you can list a Makefile as

obj-$(CONFIG_COMBINED) += combined.o
combined-$(CONFIG_SUBOPTION) += combined_main.o combined_other.o
obj-$(CONFIG_SINGLE) += single.o
obj-$(CONFIG_OTHER) += other.o
obj-$(CONFIG_API) += api.o

NAMESPACE = subsys                       # default, used for other.o
NAMESPACE_single.o = single              # used only for single.o
NAMESPACE_combined.o = combined          # all parts of combined.o
NAMESPACE_combined_other.o = special     #    except this one
NAMESPACE_api.o =                        # api.o is put into the global ns

The Makefile logic here would basically just follow the rules we have for
CFLAGS etc, and then pass -DMODULE_NAMESPACE=$(NAMESPACE_$(obj)) to gcc.

	Arnd <><
-
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..., Arnd Bergmann, (Thu Nov 29, 5:55 am)
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)