• Frederic Weisbecker's avatar
    vsprintf: introduce %pf format specifier · 0c8b946e
    Frederic Weisbecker authored
    A printf format specifier which would allow us to print a pure
    function name has been suggested by Andrew Morton a couple of
    months ago.
    
    The current %pF is very convenient to print a function symbol,
    but often we only want to print the name of the function, without
    its asm offset.
    
    That's what  %pf does in this patch.  The lowecase f has been chosen
    for its intuitive meaning of a 'weak kind of %pF'.
    
    The support for this new format would be welcome by the tracing code
    where the need to print pure function names is often needed. This is
    also true for other parts of the kernel:
    
    $ git-grep -E "kallsyms_lookup\(.+?\)"
    arch/blackfin/kernel/traps.c:   symname = kallsyms_lookup(address, &symsize, &offset, &modname, namebuf);
    arch/powerpc/xmon/xmon.c:               name = kallsyms_lookup(pc, &size, &offset, NULL, tmpstr);
    arch/sh/kernel/cpu/sh5/unwind.c:        sym = kallsyms_lookup(pc, NULL, &offset, NULL, namebuf);
    arch/x86/kernel/ftrace.c:       kallsyms_lookup((unsigned long) syscall, NULL, NULL, NULL, str);
    kernel/kprobes.c:               sym = kallsyms_lookup((unsigned long)p->addr, NULL,
    kernel/lockdep.c:       return kallsyms_lookup((unsigned long)key, NULL, NULL, NULL, str);
    kernel/trace/ftrace.c:  kallsyms_lookup(rec->ip, NULL, NULL, NULL, str);
    kernel/trace/ftrace.c:  kallsyms_lookup(rec->ip, NULL, NULL, NULL, str);
    kernel/trace/ftrace.c:  kallsyms_lookup((unsigned long)rec->ops->func, NULL, NULL, NULL, str);
    kernel/trace/ftrace.c:  kallsyms_lookup(rec->ip, NULL, NULL, NULL, str);
    kernel/trace/ftrace.c:  kallsyms_lookup(rec->ip, NULL, NULL, NULL, str);
    kernel/trace/ftrace.c:  kallsyms_lookup(rec->ip, NULL, NULL, &modname, str);
    kernel/trace/ftrace.c:  kallsyms_lookup(*ptr, NULL, NULL, NULL, str);
    kernel/trace/trace_functions.c: kallsyms_lookup(ip, NULL, NULL, NULL, str);
    kernel/trace/trace_output.c:    kallsyms_lookup(address, NULL, NULL, NULL, str);
    
    Changes in v2:
    
    - Add the explanation of the %pf role for vsnprintf() and bstr_printf()
    
    - Change the comments by dropping the "asm offset" notion and only
      define the %pf against the actual function offset notion.
    Signed-off-by: default avatarFrederic Weisbecker <[email protected]>
    Acked-by: default avatarMike Frysinger <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Zhaolei <[email protected]>
    Cc: Tom Zanussi <[email protected]>
    Cc: Li Zefan <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: Steven Rostedt <[email protected]>
    LKML-Reference: <[email protected]>
    Signed-off-by: default avatarIngo Molnar <[email protected]>
    0c8b946e
vsprintf.c 43.3 KB