]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - include/linux/ftrace_event.h
perf, trace: Optimize tracepoints by removing IRQ-disable from perf/tracepoint intera...
[net-next-2.6.git] / include / linux / ftrace_event.h
index 39e71b0a3bfdb0aeaf9b546c111f19726a954136..126071bc90abf0253ef70a0f873f8ccde9affe15 100644 (file)
@@ -133,6 +133,7 @@ struct ftrace_event_call {
        void                    *data;
 
        int                     perf_refcount;
+       void                    *perf_data;
        int                     (*perf_event_enable)(struct ftrace_event_call *);
        void                    (*perf_event_disable)(struct ftrace_event_call *);
 };
@@ -191,24 +192,22 @@ struct perf_event;
 
 DECLARE_PER_CPU(struct pt_regs, perf_trace_regs);
 
-extern int perf_trace_enable(int event_id);
+extern int perf_trace_enable(int event_id, void *data);
 extern void perf_trace_disable(int event_id);
 extern int ftrace_profile_set_filter(struct perf_event *event, int event_id,
                                     char *filter_str);
 extern void ftrace_profile_free_filter(struct perf_event *event);
-extern void *
-perf_trace_buf_prepare(int size, unsigned short type, int *rctxp,
-                        unsigned long *irq_flags);
+extern void *perf_trace_buf_prepare(int size, unsigned short type,
+                                   struct pt_regs *regs, int *rctxp);
 
 static inline void
 perf_trace_buf_submit(void *raw_data, int size, int rctx, u64 addr,
-                      u64 count, unsigned long irq_flags, struct pt_regs *regs)
+                      u64 count, struct pt_regs *regs, void *event)
 {
        struct trace_entry *entry = raw_data;
 
-       perf_tp_event(entry->type, addr, count, raw_data, size, regs);
+       perf_tp_event(entry->type, addr, count, raw_data, size, regs, event);
        perf_swevent_put_recursion_context(rctx);
-       local_irq_restore(irq_flags);
 }
 #endif