tracing: Add ftrace event call parameter to its field descriptor handler
[safe/jmp/linux-2.6] / kernel / trace / trace_power.c
index 91ce672..8a30d98 100644 (file)
@@ -36,6 +36,7 @@ static void probe_power_start(struct power_trace *it, unsigned int type,
 
 static void probe_power_end(struct power_trace *it)
 {
+       struct ftrace_event_call *call = &event_power;
        struct ring_buffer_event *event;
        struct trace_power *entry;
        struct trace_array_cpu *data;
@@ -54,7 +55,8 @@ static void probe_power_end(struct power_trace *it)
                goto out;
        entry   = ring_buffer_event_data(event);
        entry->state_data = *it;
-       trace_buffer_unlock_commit(tr, event, 0, 0);
+       if (!filter_check_discard(call, entry, tr->buffer, event))
+               trace_buffer_unlock_commit(tr, event, 0, 0);
  out:
        preempt_enable();
 }
@@ -62,6 +64,7 @@ static void probe_power_end(struct power_trace *it)
 static void probe_power_mark(struct power_trace *it, unsigned int type,
                                unsigned int level)
 {
+       struct ftrace_event_call *call = &event_power;
        struct ring_buffer_event *event;
        struct trace_power *entry;
        struct trace_array_cpu *data;
@@ -84,7 +87,8 @@ static void probe_power_mark(struct power_trace *it, unsigned int type,
                goto out;
        entry   = ring_buffer_event_data(event);
        entry->state_data = *it;
-       trace_buffer_unlock_commit(tr, event, 0, 0);
+       if (!filter_check_discard(call, entry, tr->buffer, event))
+               trace_buffer_unlock_commit(tr, event, 0, 0);
  out:
        preempt_enable();
 }
@@ -122,12 +126,16 @@ fail_start:
 static void start_power_trace(struct trace_array *tr)
 {
        trace_power_enabled = 1;
-       tracing_power_register();
 }
 
 static void stop_power_trace(struct trace_array *tr)
 {
        trace_power_enabled = 0;
+}
+
+static void power_trace_reset(struct trace_array *tr)
+{
+       trace_power_enabled = 0;
        unregister_trace_power_start(probe_power_start);
        unregister_trace_power_end(probe_power_end);
        unregister_trace_power_mark(probe_power_mark);
@@ -182,14 +190,21 @@ static enum print_line_t power_print_line(struct trace_iterator *iter)
        return TRACE_TYPE_UNHANDLED;
 }
 
+static void power_print_header(struct seq_file *s)
+{
+       seq_puts(s, "#   TIMESTAMP      STATE  EVENT\n");
+       seq_puts(s, "#       |            |      |\n");
+}
+
 static struct tracer power_tracer __read_mostly =
 {
        .name           = "power",
        .init           = power_trace_init,
        .start          = start_power_trace,
        .stop           = stop_power_trace,
-       .reset          = stop_power_trace,
+       .reset          = power_trace_reset,
        .print_line     = power_print_line,
+       .print_header   = power_print_header,
 };
 
 static int init_power_trace(void)