lkml.org 
[lkml]   [2010]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 02/10][RFC] tracing: Let tracepoints have data passed to tracepoint callbacks
    Steven Rostedt wrote:
    > From: Steven Rostedt <srostedt@redhat.com>
    >
    > This patch allows data to be passed to the tracepoint callbacks
    > if the tracepoint was created to do so.
    >
    > If a tracepoint is defined with:
    >
    > DECLARE_TRACE_DATA(name, proto, args)
    >
    > Then a registered function can also register data to be passed
    > to the tracepoint as such:
    >
    > DECLARE_TRACE_DATA(mytracepoint, TP_PROTO(int status), TP_ARGS(status));
    >
    > /* In the C file */
    >
    > DEFINE_TRACE(mytracepoint, TP_PROTO(int status), TP_ARGS(status));
    >
    > [...]
    >
    > trace_mytacepoint(status);
    >
    > /* In a file registering this tracepoint */
    >
    > int my_callback(int status, void *data)
    > {
    > struct my_struct my_data = data;
    > [...]
    > }
    >
    > [...]
    > my_data = kmalloc(sizeof(*my_data), GFP_KERNEL);
    > init_my_data(my_data);
    > register_trace_mytracepoint_data(my_callback, my_data);
    >
    > The same callback can also be registered to the same tracepoint as long
    > as the data registered is the same. Note, the data must also be used
    > to unregister the callback:
    >
    > unregister_trace_mytracepoint_data(my_callback, my_data);
    >
    > Because of the data parameter, tracepoints declared this way can not have
    > no args. That is:
    >
    > DECLARE_TRACE_DATA(mytracepoint, TP_PROTO(void), TP_ARGS());
    >
    > will cause an error, but the original DECLARE_TRACE still allows for this.
    >
    > The DECLARE_TRACE_DATA() will be used by TRACE_EVENT() so that it
    > can reuse code and bring the size of the tracepoint footprint down.
    > This means that TRACE_EVENT()s must have at least one argument defined.

    We have to define at least on argument in TRACE_EVENT() even without
    this patch, otherwise it'll cause compile error while expanding the
    macros.

    > This should not be a problem since we should never have a static
    > tracepoint in the kernel that simply says "Look I'm here!".
    >

    We do have such a tracepoint. ;)

    That is trace_power_end, and it uses a dummy argument merely for
    passing compilation.



    \
     
     \ /
      Last update: 2010-04-27 11:09    [W:0.028 / U:30.404 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site