Messages in this thread |  | | Date | Wed, 28 Aug 2019 11:56:27 +0100 | From | Matthias Maennich <> | Subject | Re: [PATCH v3 06/11] export: allow definition default namespaces in Makefiles or sources |
| |
On Wed, Aug 28, 2019 at 12:49:51PM +0200, Jessica Yu wrote: >+++ Matthias Maennich [21/08/19 12:49 +0100]: >>To avoid excessive usage of EXPORT_SYMBOL_NS(sym, MY_NAMESPACE), where >>MY_NAMESPACE will always be the namespace we are exporting to, allow >>exporting all definitions of EXPORT_SYMBOL() and friends by defining >>DEFAULT_SYMBOL_NAMESPACE. >> >>For example, to export all symbols defined in usb-common into the >>namespace USB_COMMON, add a line like this to drivers/usb/common/Makefile: >> >> ccflags-y += -DDEFAULT_SYMBOL_NAMESPACE=USB_COMMON >> >>That is equivalent to changing all EXPORT_SYMBOL(sym) definitions to >>EXPORT_SYMBOL_NS(sym, USB_COMMON). Subsequently all symbol namespaces >>functionality will apply. >> >>Another way of making use of this feature is to define the namespace >>within source or header files similar to how TRACE_SYSTEM defines are >>used: >> #undef DEFAULT_SYMBOL_NAMESPACE >> #define DEFAULT_SYMBOL_NAMESPACE USB_COMMON >> >>Please note that, as opposed to TRACE_SYSTEM, DEFAULT_SYMBOL_NAMESPACE >>has to be defined before including include/linux/export.h. >> >>If DEFAULT_SYMBOL_NAMESPACE is defined, a symbol can still be exported >>to another namespace by using EXPORT_SYMBOL_NS() and friends with >>explicitly specifying the namespace. > >This changelog provides a good summary of how to use >DEFAULT_SYMBOL_NAMESPACE, I wonder if we should explicitly document >its proper usage somewhere? (along with EXPORT_SYMBOL_NS*) >The EXPORT_SYMBOL API is briefly documented in >Documentation/kernel-hacking/hacking.rst - it might be slightly dated, >but perhaps it'd fit there best?
I will add documentation along with the commits. Not only for the macros, but in general to describe the feature.
>>Suggested-by: Arnd Bergmann <arnd@arndb.de> >>Reviewed-by: Martijn Coenen <maco@android.com> >>Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >>Signed-off-by: Matthias Maennich <maennich@google.com> >>--- >>include/linux/export.h | 6 ++++++ >>1 file changed, 6 insertions(+) >> >>diff --git a/include/linux/export.h b/include/linux/export.h >>index 8e12e05444d1..1fb243abdbc4 100644 >>--- a/include/linux/export.h >>+++ b/include/linux/export.h >>@@ -166,6 +166,12 @@ struct kernel_symbol { >>#define __EXPORT_SYMBOL ___EXPORT_SYMBOL >>#endif >> >>+#ifdef DEFAULT_SYMBOL_NAMESPACE >>+#undef __EXPORT_SYMBOL >>+#define __EXPORT_SYMBOL(sym, sec) \ >>+ __EXPORT_SYMBOL_NS(sym, sec, DEFAULT_SYMBOL_NAMESPACE) >>+#endif >>+ >>#define EXPORT_SYMBOL(sym) __EXPORT_SYMBOL(sym, "") >>#define EXPORT_SYMBOL_GPL(sym) __EXPORT_SYMBOL(sym, "_gpl") >>#define EXPORT_SYMBOL_GPL_FUTURE(sym) __EXPORT_SYMBOL(sym, "_gpl_future") >>-- >>2.23.0.rc1.153.gdeed80330f-goog >>
|  |