29 Oct, 2013

1 commit


15 Mar, 2013

1 commit

  • We have CONFIG_SYMBOL_PREFIX, which three archs define to the string
    "_". But Al Viro broke this in "consolidate cond_syscall and
    SYSCALL_ALIAS declarations" (in linux-next), and he's not the first to
    do so.

    Using CONFIG_SYMBOL_PREFIX is awkward, since we usually just want to
    prefix it so something. So various places define helpers which are
    defined to nothing if CONFIG_SYMBOL_PREFIX isn't set:

    1) include/asm-generic/unistd.h defines __SYMBOL_PREFIX.
    2) include/asm-generic/vmlinux.lds.h defines VMLINUX_SYMBOL(sym)
    3) include/linux/export.h defines MODULE_SYMBOL_PREFIX.
    4) include/linux/kernel.h defines SYMBOL_PREFIX (which differs from #7)
    5) kernel/modsign_certificate.S defines ASM_SYMBOL(sym)
    6) scripts/modpost.c defines MODULE_SYMBOL_PREFIX
    7) scripts/Makefile.lib defines SYMBOL_PREFIX on the commandline if
    CONFIG_SYMBOL_PREFIX is set, so that we have a non-string version
    for pasting.

    (arch/h8300/include/asm/linkage.h defines SYMBOL_NAME(), too).

    Let's solve this properly:
    1) No more generic prefix, just CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX.
    2) Make linux/export.h usable from asm.
    3) Define VMLINUX_SYMBOL() and VMLINUX_SYMBOL_STR().
    4) Make everyone use them.

    Signed-off-by: Rusty Russell
    Reviewed-by: James Hogan
    Tested-by: James Hogan (metag)

    Rusty Russell
     

31 Oct, 2011

1 commit

  • A lot of files pull in module.h when all they are really
    looking for is the basic EXPORT_SYMBOL functionality. The
    recent data from Ingo[1] shows that this is one of several
    instances that has a significant impact on compile times,
    and it should be targeted for factoring out (as done here).

    Note that several commonly used header files in include/*
    directly include themselves (some 34 of them!)
    The most commonly used ones of these will have to be made
    independent of module.h before the full benefit of this change
    can be realized.

    We also transition THIS_MODULE from module.h to export.h,
    since there are lots of files with subsystem structs that
    in turn will have a struct module *owner and only be doing:

    .owner = THIS_MODULE;

    and absolutely nothing else modular. So, we also want to have
    the THIS_MODULE definition present in the lightweight header.

    [1] https://lkml.org/lkml/2011/5/23/76

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker