net: Make sure BHs are disabled in sock_prot_inuse_add()
[safe/jmp/linux-2.6] / kernel / trace / trace_boot.c
index 7c15f3e..d0a5e50 100644 (file)
@@ -8,6 +8,7 @@
 #include <linux/init.h>
 #include <linux/debugfs.h>
 #include <linux/ftrace.h>
+#include <linux/kallsyms.h>
 
 #include "trace.h"
 
@@ -21,11 +22,16 @@ void start_boot_trace(void)
        trace_boot_enabled = 1;
 }
 
-void stop_boot_trace(struct trace_array *tr)
+void stop_boot_trace(void)
 {
        trace_boot_enabled = 0;
 }
 
+void reset_boot_trace(struct trace_array *tr)
+{
+       stop_boot_trace();
+}
+
 static void boot_trace_init(struct trace_array *tr)
 {
        int cpu;
@@ -42,7 +48,7 @@ static void boot_trace_ctrl_update(struct trace_array *tr)
        if (tr->ctrl)
                start_boot_trace();
        else
-               stop_boot_trace(tr);
+               stop_boot_trace();
 }
 
 static enum print_line_t initcall_print_line(struct trace_iterator *iter)
@@ -56,17 +62,19 @@ static enum print_line_t initcall_print_line(struct trace_iterator *iter)
        struct timespec rettime = ktime_to_timespec(it->rettime);
 
        if (entry->type == TRACE_BOOT) {
-               ret = trace_seq_printf(s, "[%5ld.%06ld] calling  %pF @ %i\n",
+               ret = trace_seq_printf(s, "[%5ld.%09ld] calling  %s @ %i\n",
                                          calltime.tv_sec,
                                          calltime.tv_nsec,
                                          it->func, it->caller);
                if (!ret)
                        return TRACE_TYPE_PARTIAL_LINE;
-               ret = trace_seq_printf(s, "[%5ld.%06ld] initcall %pF "
+
+               ret = trace_seq_printf(s, "[%5ld.%09ld] initcall %s "
                                          "returned %d after %lld msecs\n",
                                          rettime.tv_sec,
                                          rettime.tv_nsec,
                                          it->func, it->result, it->duration);
+
                if (!ret)
                        return TRACE_TYPE_PARTIAL_LINE;
                return TRACE_TYPE_HANDLED;
@@ -78,13 +86,12 @@ struct tracer boot_tracer __read_mostly =
 {
        .name           = "initcall",
        .init           = boot_trace_init,
-       .reset          = stop_boot_trace,
+       .reset          = reset_boot_trace,
        .ctrl_update    = boot_trace_ctrl_update,
        .print_line     = initcall_print_line,
 };
 
-
-void trace_boot(struct boot_trace *it)
+void trace_boot(struct boot_trace *it, initcall_t fn)
 {
        struct ring_buffer_event *event;
        struct trace_boot *entry;
@@ -95,6 +102,10 @@ void trace_boot(struct boot_trace *it)
        if (!trace_boot_enabled)
                return;
 
+       /* Get its name now since this function could
+        * disappear because it is in the .init section.
+        */
+       sprint_symbol(it->func, (unsigned long)fn);
        preempt_disable();
        data = tr->data[smp_processor_id()];