On Thursday 22 November 2007, Andi Kleen wrote: > #define EXPORT_SYMBOL(sym) \ > - __EXPORT_SYMBOL(sym, "") > + __EXPORT_SYMBOL(sym, "",,, NULL) > > #define EXPORT_SYMBOL_GPL(sym) \ > - __EXPORT_SYMBOL(sym, "_gpl") > + __EXPORT_SYMBOL(sym, "_gpl",,, NULL) > > #define EXPORT_SYMBOL_GPL_FUTURE(sym) \ > - __EXPORT_SYMBOL(sym, "_gpl_future") > + __EXPORT_SYMBOL(sym, "_gpl_future",,, NULL) > > +/* Export symbol into namespace ns > + * No _GPL variants because namespaces imply GPL only > + */ > +#define EXPORT_SYMBOL_NS(ns, sym) \ > + __EXPORT_SYMBOL(sym, "_gpl",__##ns, NS_SEPARATOR #ns, #ns) >
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 <>< - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html