• Matthias Maennich's avatar
    export: allow definition default namespaces in Makefiles or sources · 8e2adc6a
    Matthias Maennich authored
    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.
    Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarMartijn Coenen <maco@android.com>
    Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarMatthias Maennich <maennich@google.com>
    Signed-off-by: default avatarJessica Yu <jeyu@kernel.org>
    8e2adc6a
export.h 7.14 KB