Merge tag 'clk-for-linus-3.14-part1' of git://git.linaro.org/people/mike.turquette...
[firefly-linux-kernel-4.4.55.git] / include / trace / ftrace.h
index 5c38606613d89a06c361a56054e97031c391c2d3..1a8b28db37752707cb130566b6295eb3f8bc4b90 100644 (file)
@@ -418,6 +418,8 @@ static inline notrace int ftrace_get_offsets_##call(                        \
  *     struct ftrace_event_file *ftrace_file = __data;
  *     struct ftrace_event_call *event_call = ftrace_file->event_call;
  *     struct ftrace_data_offsets_<call> __maybe_unused __data_offsets;
+ *     unsigned long eflags = ftrace_file->flags;
+ *     enum event_trigger_type __tt = ETT_NONE;
  *     struct ring_buffer_event *event;
  *     struct ftrace_raw_<call> *entry; <-- defined in stage 1
  *     struct ring_buffer *buffer;
@@ -425,9 +427,12 @@ static inline notrace int ftrace_get_offsets_##call(                       \
  *     int __data_size;
  *     int pc;
  *
- *     if (test_bit(FTRACE_EVENT_FL_SOFT_DISABLED_BIT,
- *                  &ftrace_file->flags))
- *             return;
+ *     if (!(eflags & FTRACE_EVENT_FL_TRIGGER_COND)) {
+ *             if (eflags & FTRACE_EVENT_FL_TRIGGER_MODE)
+ *                     event_triggers_call(ftrace_file, NULL);
+ *             if (eflags & FTRACE_EVENT_FL_SOFT_DISABLED)
+ *                     return;
+ *     }
  *
  *     local_save_flags(irq_flags);
  *     pc = preempt_count();
@@ -445,8 +450,17 @@ static inline notrace int ftrace_get_offsets_##call(                       \
  *     { <assign>; }  <-- Here we assign the entries by the __field and
  *                        __array macros.
  *
- *     if (!filter_check_discard(ftrace_file, entry, buffer, event))
+ *     if (eflags & FTRACE_EVENT_FL_TRIGGER_COND)
+ *             __tt = event_triggers_call(ftrace_file, entry);
+ *
+ *     if (test_bit(FTRACE_EVENT_FL_SOFT_DISABLED_BIT,
+ *                  &ftrace_file->flags))
+ *             ring_buffer_discard_commit(buffer, event);
+ *     else if (!filter_check_discard(ftrace_file, entry, buffer, event))
  *             trace_buffer_unlock_commit(buffer, event, irq_flags, pc);
+ *
+ *     if (__tt)
+ *             event_triggers_post_call(ftrace_file, __tt);
  * }
  *
  * static struct trace_event ftrace_event_type_<call> = {
@@ -539,8 +553,7 @@ ftrace_raw_event_##call(void *__data, proto)                                \
        int __data_size;                                                \
        int pc;                                                         \
                                                                        \
-       if (test_bit(FTRACE_EVENT_FL_SOFT_DISABLED_BIT,                 \
-                    &ftrace_file->flags))                              \
+       if (ftrace_trigger_soft_disabled(ftrace_file))                  \
                return;                                                 \
                                                                        \
        local_save_flags(irq_flags);                                    \
@@ -560,8 +573,8 @@ ftrace_raw_event_##call(void *__data, proto)                                \
                                                                        \
        { assign; }                                                     \
                                                                        \
-       if (!filter_check_discard(ftrace_file, entry, buffer, event))   \
-               trace_buffer_unlock_commit(buffer, event, irq_flags, pc); \
+       event_trigger_unlock_commit(ftrace_file, buffer, event, entry, \
+                                   irq_flags, pc);                    \
 }
 /*
  * The ftrace_test_probe is compiled out, it is only here as a build time check