[lkml]   [2009]   [Jun]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subject[PATCH v3] mips-specific ftrace support
    From: Wu Zhangjin <>

    ftrace is a mcount based kernel tracing tool/framework, which is originally
    from RT_PREEMPT(

    ftrace is short for function tracer, this is its original name, but now, it
    becomes a kernel tracing framework, lots of kernel tracers are built on it,
    such as irqoff tracer, wakeup tracer and so forth. these tracers are
    arch-independent(?), but some of them are arch-dependent, such as the original
    ftrace: function tracer, and dynamic function tracer, function graph tracer,
    and also, system call tracer.

    here is the mips porting of these four arch-dependent tracers, it will enable
    the following new kernel config options in linux-mips system.

    kernel hacking --->
    Tracers -->
    [*] Kernel Function Tracer
    [*] Kernel Function Graph Tracer
    [*] Trace syscalls
    [*] enable/disable ftrace tracepoints dynamically

    in reality, because the timestamp getting function are arch-dependent, lots of
    the tracers are arch-dependent. the arch-dependent part is that: sched_clock().
    the original sched_clock() in mips is jiffes based, only give 10ms precision in
    1000HZ, which is not enough for ftrace. to get high-precise timestamp, we must
    implement a new native_sched_clock() via reading the MIPS clock counter, but
    since it is only 32bit long, so, overflow should be handled carefully.

    this -v3 patch series is based on the -v2 patch series and incorporates the
    feedback from Steven Rostedt and Thomas Gleixner.


    this -v3 not support modules yet, really hope this can be fixed in -v4 patch.

    read the following document, and play with it:

    Wu Zhangjin (7):
    mips static function tracer support
    add an endian argument to scripts/
    mips dynamic function tracer support
    filter local function prefixed by $L
    mips function graph tracer support
    mips specific clock function to get precise timestamp
    mips specific system call tracer

    arch/mips/Kconfig | 7 +
    arch/mips/Makefile | 2 +
    arch/mips/include/asm/ftrace.h | 35 ++++-
    arch/mips/include/asm/ptrace.h | 2 +
    arch/mips/include/asm/reg.h | 5 +
    arch/mips/include/asm/syscall.h | 84 +++++++++
    arch/mips/include/asm/thread_info.h | 5 +-
    arch/mips/kernel/Makefile | 12 ++
    arch/mips/kernel/csrc-r4k.c | 2 +-
    arch/mips/kernel/entry.S | 2 +-
    arch/mips/kernel/ftrace.c | 344 +++++++++++++++++++++++++++++++++++
    arch/mips/kernel/ftrace_clock.c | 71 +++++++
    arch/mips/kernel/mcount.S | 184 +++++++++++++++++++
    arch/mips/kernel/mips_ksyms.c | 5 +
    arch/mips/kernel/ptrace.c | 14 ++-
    arch/mips/kernel/scall64-o32.S | 2 +-
    arch/mips/kernel/ | 1 +
    kernel/trace/trace_clock.c | 2 +-
    scripts/ | 1 +
    scripts/ | 30 +++-
    20 files changed, 799 insertions(+), 11 deletions(-)
    create mode 100644 arch/mips/include/asm/syscall.h
    create mode 100644 arch/mips/kernel/ftrace.c
    create mode 100644 arch/mips/kernel/ftrace_clock.c
    create mode 100644 arch/mips/kernel/mcount.S

     \ /
      Last update: 2009-06-14 17:53    [W:0.026 / U:40.992 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site