• Rasmus Villemoes's avatar
    printk: rename vprintk_func to vprintk · 28e1745b
    Rasmus Villemoes authored
    The printk code is already hard enough to understand. Remove an
    unnecessary indirection by renaming vprintk_func to vprintk (adding
    the asmlinkage annotation), and removing the vprintk definition from
    printk.c. That way, printk is implemented in terms of vprintk as one
    would expect, and there's no "vprintk_func, what's that? Some function
    pointer that gets set where?"
    
    The declaration of vprintk in linux/printk.h already has the
    __printf(1,0) attribute, there's no point repeating that with the
    definition - it's for diagnostics in callers.
    
    linux/printk.h already contains a static inline {return 0;} definition
    of vprintk when !CONFIG_PRINTK.
    
    Since the corresponding stub definition of vprintk_func was not marked
    "static inline", any translation unit including internal.h would get a
    definition of vprintk_func - it just so happens that for
    !CONFIG_PRINTK, there is precisely one such TU, namely printk.c. Had
    there been more, it would be a link error; now it's just a silly waste
    of a few bytes of .text, which one must assume are rather precious to
    anyone disabling PRINTK.
    
    $ objdump -dr kernel/printk/printk.o
    00000330 <vprintk_func>:
     330:   31 c0                   xor    %eax,%eax
     332:   c3                      ret
     333:   8d b4 26 00 00 00 00    lea    0x0(%esi,%eiz,1),%esi
     33a:   8d b6 00 00 00 00       lea    0x0(%esi),%esi
    Signed-off-by: default avatarRasmus Villemoes <linux@rasmusvillemoes.dk>
    Reviewed-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    Reviewed-by: default avatarPetr Mladek <pmladek@suse.com>
    Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20210323144201.486050-1-linux@rasmusvillemoes.dk
    28e1745b
internal.h 1.79 KB