lkml.org 
[lkml]   [2009]   [Mar]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[RFC][PATCH 04/11] ftrace: provide an id file for each event
    Since not every event has a format file to read the id from, expose it
    explicitly in a separate file.

    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    ---
    kernel/trace/trace_events.c | 36 ++++++++++++++++++++++++++++++++++++
    1 file changed, 36 insertions(+)

    Index: linux-2.6/kernel/trace/trace_events.c
    ===================================================================
    --- linux-2.6.orig/kernel/trace/trace_events.c
    +++ linux-2.6/kernel/trace/trace_events.c
    @@ -414,6 +414,29 @@ event_format_read(struct file *filp, cha
    return r;
    }

    +static ssize_t
    +event_id_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos)
    +{
    + struct ftrace_event_call *call = filp->private_data;
    + struct trace_seq *s;
    + int r;
    +
    + if (*ppos)
    + return 0;
    +
    + s = kmalloc(sizeof(*s), GFP_KERNEL);
    + if (!s)
    + return -ENOMEM;
    +
    + trace_seq_init(s);
    + trace_seq_printf(s, "%d\n", call->id);
    +
    + r = simple_read_from_buffer(ubuf, cnt, ppos,
    + s->buffer, s->len);
    + kfree(s);
    + return r;
    +}
    +
    static const struct seq_operations show_event_seq_ops = {
    .start = t_start,
    .next = t_next,
    @@ -454,6 +477,11 @@ static const struct file_operations ftra
    .read = event_format_read,
    };

    +static const struct file_operations ftrace_event_id_fops = {
    + .open = tracing_open_generic,
    + .read = event_id_read,
    +};
    +
    static struct dentry *event_trace_events_dir(void)
    {
    static struct dentry *d_tracer;
    @@ -552,6 +580,14 @@ event_create_dir(struct ftrace_event_cal
    "'%s/enable' entry\n", call->name);
    }

    + if (call->id) {
    + entry = debugfs_create_file("id", 0444, call->dir, call,
    + &ftrace_event_id_fops);
    + if (!entry)
    + pr_warning("Could not create debugfs '%s/id' entry\n",
    + call->name);
    + }
    +
    /* A trace may not want to export its format */
    if (!call->show_format)
    return 0;
    --



    \
     
     \ /
      Last update: 2009-03-17 23:13    [W:0.026 / U:92.972 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site