static int tracing_disabled = 1;
 
-static long
+long
 ns2usecs(cycle_t nsec)
 {
        nsec += 500;
        return nsecs / 1000;
 }
 
-enum trace_type {
-       __TRACE_FIRST_TYPE = 0,
-
-       TRACE_FN,
-       TRACE_CTX,
-       TRACE_WAKE,
-       TRACE_STACK,
-       TRACE_SPECIAL,
-
-       __TRACE_LAST_TYPE
-};
-
 enum trace_flag_type {
        TRACE_FLAG_IRQS_OFF             = 0x01,
        TRACE_FLAG_NEED_RESCHED         = 0x02,
        return page_address(page);
 }
 
-static int
+int
 trace_seq_printf(struct trace_seq *s, const char *fmt, ...)
 {
        int len = (PAGE_SIZE - 1) - s->len;
        va_end(ap);
 
        /* If we can't write it all, don't bother writing anything */
-       if (ret > len)
+       if (ret >= len)
                return 0;
 
        s->len += ret;
        pc = preempt_count();
 
        entry->preempt_count    = pc & 0xff;
-       entry->pid              = tsk->pid;
+       entry->pid              = (tsk) ? tsk->pid : 0;
        entry->t                = ftrace_now(raw_smp_processor_id());
        entry->flags = (irqs_disabled_flags(flags) ? TRACE_FLAG_IRQS_OFF : 0) |
                ((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) |
 
 static int print_trace_line(struct trace_iterator *iter)
 {
+       if (iter->trace && iter->trace->print_line)
+               return iter->trace->print_line(iter);
+
        if (trace_flags & TRACE_ITER_BIN)
                return print_bin_fmt(iter);
 
                return -ENOMEM;
 
        iter->tr = &global_trace;
+       iter->trace = current_trace;
 
        filp->private_data = iter;
 
 
 #include <linux/sched.h>
 #include <linux/clocksource.h>
 
+enum trace_type {
+       __TRACE_FIRST_TYPE = 0,
+
+       TRACE_FN,
+       TRACE_CTX,
+       TRACE_WAKE,
+       TRACE_STACK,
+       TRACE_SPECIAL,
+
+       __TRACE_LAST_TYPE
+};
+
 /*
  * Function trace entry - function address and parent function addres:
  */
        int                     (*selftest)(struct tracer *trace,
                                            struct trace_array *tr);
 #endif
+       int                     (*print_line)(struct trace_iterator *iter);
        struct tracer           *next;
        int                     print_max;
 };
 #endif /* CONFIG_FTRACE_STARTUP_TEST */
 
 extern void *head_page(struct trace_array_cpu *data);
+extern int trace_seq_printf(struct trace_seq *s, const char *fmt, ...);
+extern long ns2usecs(cycle_t nsec);
 
 extern unsigned long trace_flags;