lkml.org 
[lkml]   [2009]   [Feb]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] tracing/markers: make markers select tracepoints
    On Fri, Feb 20, 2009 at 06:22:41PM +0100, Ingo Molnar wrote:
    >
    > * Randy Dunlap <randy.dunlap@oracle.com> wrote:
    >
    > > > This is what happens on the following build error:
    > > >
    > > > kernel/built-in.o: In function `marker_update_probe_range':
    > > > (.text+0x52f64): undefined reference to `tracepoint_probe_register_noupdate'
    > > > kernel/built-in.o: In function `marker_update_probe_range':
    > > > (.text+0x52f74): undefined reference to `tracepoint_probe_unregister_noupdate'
    > > > kernel/built-in.o: In function `marker_update_probe_range':
    > > > (.text+0x52fb9): undefined reference to `tracepoint_probe_unregister_noupdate'
    > > > kernel/built-in.o: In function `marker_update_probes':
    > > > marker.c:(.text+0x530ba): undefined reference to `tracepoint_probe_update_all'
    > > >
    > > > CONFIG_KVM_TRACE will select CONFIG_MARKER, but the latter
    > > > depends on CONFIG_TRACEPOINTS which will not be selected.
    > > >
    > > > A temporary fix is to make CONFIG_MARKER select
    > > > CONFIG_TRACEPOINTS, though it doesn't fix the source KConfig
    > > > dependency handling problem.
    > > >
    > > > Reported-by: Ingo Molnar <mingo@elte.hu>
    > > > Cc: Roman Zippel <zippel@linux-m68k.org>
    > > > Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
    > > > ---
    > > > init/Kconfig | 2 +-
    > > > 1 files changed, 1 insertions(+), 1 deletions(-)
    > > >
    > > > diff --git a/init/Kconfig b/init/Kconfig
    > > > index b6400a5..a93f957 100644
    > > > --- a/init/Kconfig
    > > > +++ b/init/Kconfig
    > > > @@ -975,7 +975,7 @@ config TRACEPOINTS
    > > >
    > > > config MARKERS
    > > > bool "Activate markers"
    > > > - depends on TRACEPOINTS
    > > > + select TRACEPOINTS
    > > > help
    > > > Place an empty function call at each marker site. Can be
    > > > dynamically changed for a probe function.
    > >
    > > but using "select" instead of "depends on" just causes the
    > > kind of problem that you described, whereas using "depends on"
    > > does follow dependency chains.
    >
    > Well, as long as the secondary selects are 'expanded' along the
    > line of dependencies, it should still be fine. With an
    > increasing number of dependencies it quickly becomes ugly
    > though. This might be one of the cases where it works.
    >
    > Eventually we should eliminate markers, their uses can either be
    > converted to new-style tracepoints, or to ftrace_printk().
    >
    > Ingo

    ftrace_printk adds more overhead if not used since it inconditionally
    send the trace, unless the related TRACE_ITER_PRINTK flag on ftrace is unset.

    I don't know how markers work, but the documentation describes that a single branch
    check is done in case the probe is disabled.

    With ftrace_printk, even if TRACE_ITER_PRINTK is unset, this is still
    one call and one branch check. So for hot callsite it's unappropriate.

    IMHO, tracepoints are more suited to replace markers if they have to.



    \
     
     \ /
      Last update: 2009-02-20 18:33    [W:0.050 / U:2.088 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site