These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / include / trace / trace_events.h
similarity index 72%
rename from kernel/include/trace/ftrace.h
rename to kernel/include/trace/trace_events.h
index 37d4b10..de996cf 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Override the macros in <trace/trace_events.h> to include the following:
  *
- * struct ftrace_raw_<call> {
+ * struct trace_event_raw_<call> {
  *     struct trace_entry              ent;
  *     <type>                          <item>;
  *     <type2>                         <item2>[<len>];
@@ -16,7 +16,7 @@
  * in the structure.
  */
 
-#include <linux/ftrace_event.h>
+#include <linux/trace_events.h>
 
 #ifndef TRACE_SYSTEM_VAR
 #define TRACE_SYSTEM_VAR TRACE_SYSTEM
@@ -95,17 +95,17 @@ TRACE_MAKE_SYSTEM_STR();
 
 #undef DECLARE_EVENT_CLASS
 #define DECLARE_EVENT_CLASS(name, proto, args, tstruct, assign, print) \
-       struct ftrace_raw_##name {                                      \
+       struct trace_event_raw_##name {                                 \
                struct trace_entry      ent;                            \
                tstruct                                                 \
                char                    __data[0];                      \
        };                                                              \
                                                                        \
-       static struct ftrace_event_class event_class_##name;
+       static struct trace_event_class event_class_##name;
 
 #undef DEFINE_EVENT
 #define DEFINE_EVENT(template, name, proto, args)      \
-       static struct ftrace_event_call __used          \
+       static struct trace_event_call  __used          \
        __attribute__((__aligned__(4))) event_##name
 
 #undef DEFINE_EVENT_FN
@@ -138,7 +138,7 @@ TRACE_MAKE_SYSTEM_STR();
  *
  * Include the following:
  *
- * struct ftrace_data_offsets_<call> {
+ * struct trace_event_data_offsets_<call> {
  *     u32                             <item1>;
  *     u32                             <item2>;
  *     [...]
@@ -178,7 +178,7 @@ TRACE_MAKE_SYSTEM_STR();
 
 #undef DECLARE_EVENT_CLASS
 #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \
-       struct ftrace_data_offsets_##call {                             \
+       struct trace_event_data_offsets_##call {                        \
                tstruct;                                                \
        };
 
@@ -203,10 +203,10 @@ TRACE_MAKE_SYSTEM_STR();
  * Override the macros in <trace/trace_events.h> to include the following:
  *
  * enum print_line_t
- * ftrace_raw_output_<call>(struct trace_iterator *iter, int flags)
+ * trace_raw_output_<call>(struct trace_iterator *iter, int flags)
  * {
  *     struct trace_seq *s = &iter->seq;
- *     struct ftrace_raw_<call> *field; <-- defined in stage 1
+ *     struct trace_event_raw_<call> *field; <-- defined in stage 1
  *     struct trace_entry *entry;
  *     struct trace_seq *p = &iter->tmp_seq;
  *     int ret;
@@ -258,7 +258,7 @@ TRACE_MAKE_SYSTEM_STR();
                void *__bitmask = __get_dynamic_array(field);           \
                unsigned int __bitmask_size;                            \
                __bitmask_size = __get_dynamic_array_len(field);        \
-               ftrace_print_bitmask_seq(p, __bitmask, __bitmask_size); \
+               trace_print_bitmask_seq(p, __bitmask, __bitmask_size);  \
        })
 
 #undef __print_flags
@@ -266,7 +266,7 @@ TRACE_MAKE_SYSTEM_STR();
        ({                                                              \
                static const struct trace_print_flags __flags[] =       \
                        { flag_array, { -1, NULL }};                    \
-               ftrace_print_flags_seq(p, delim, flag, __flags);        \
+               trace_print_flags_seq(p, delim, flag, __flags); \
        })
 
 #undef __print_symbolic
@@ -274,7 +274,7 @@ TRACE_MAKE_SYSTEM_STR();
        ({                                                              \
                static const struct trace_print_flags symbols[] =       \
                        { symbol_array, { -1, NULL }};                  \
-               ftrace_print_symbols_seq(p, value, symbols);            \
+               trace_print_symbols_seq(p, value, symbols);             \
        })
 
 #undef __print_symbolic_u64
@@ -283,7 +283,7 @@ TRACE_MAKE_SYSTEM_STR();
        ({                                                              \
                static const struct trace_print_flags_u64 symbols[] =   \
                        { symbol_array, { -1, NULL } };                 \
-               ftrace_print_symbols_seq_u64(p, value, symbols);        \
+               trace_print_symbols_seq_u64(p, value, symbols); \
        })
 #else
 #define __print_symbolic_u64(value, symbol_array...)                   \
@@ -291,30 +291,30 @@ TRACE_MAKE_SYSTEM_STR();
 #endif
 
 #undef __print_hex
-#define __print_hex(buf, buf_len) ftrace_print_hex_seq(p, buf, buf_len)
+#define __print_hex(buf, buf_len) trace_print_hex_seq(p, buf, buf_len)
 
 #undef __print_array
 #define __print_array(array, count, el_size)                           \
        ({                                                              \
                BUILD_BUG_ON(el_size != 1 && el_size != 2 &&            \
                             el_size != 4 && el_size != 8);             \
-               ftrace_print_array_seq(p, array, count, el_size);       \
+               trace_print_array_seq(p, array, count, el_size);        \
        })
 
 #undef DECLARE_EVENT_CLASS
 #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \
 static notrace enum print_line_t                                       \
-ftrace_raw_output_##call(struct trace_iterator *iter, int flags,       \
-                        struct trace_event *trace_event)               \
+trace_raw_output_##call(struct trace_iterator *iter, int flags,                \
+                       struct trace_event *trace_event)                \
 {                                                                      \
        struct trace_seq *s = &iter->seq;                               \
        struct trace_seq __maybe_unused *p = &iter->tmp_seq;            \
-       struct ftrace_raw_##call *field;                                \
+       struct trace_event_raw_##call *field;                           \
        int ret;                                                        \
                                                                        \
        field = (typeof(field))iter->ent;                               \
                                                                        \
-       ret = ftrace_raw_output_prep(iter, trace_event);                \
+       ret = trace_raw_output_prep(iter, trace_event);                 \
        if (ret != TRACE_TYPE_HANDLED)                                  \
                return ret;                                             \
                                                                        \
@@ -322,17 +322,17 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags,  \
                                                                        \
        return trace_handle_return(s);                                  \
 }                                                                      \
-static struct trace_event_functions ftrace_event_type_funcs_##call = { \
-       .trace                  = ftrace_raw_output_##call,             \
+static struct trace_event_functions trace_event_type_funcs_##call = {  \
+       .trace                  = trace_raw_output_##call,              \
 };
 
 #undef DEFINE_EVENT_PRINT
 #define DEFINE_EVENT_PRINT(template, call, proto, args, print)         \
 static notrace enum print_line_t                                       \
-ftrace_raw_output_##call(struct trace_iterator *iter, int flags,       \
+trace_raw_output_##call(struct trace_iterator *iter, int flags,                \
                         struct trace_event *event)                     \
 {                                                                      \
-       struct ftrace_raw_##template *field;                            \
+       struct trace_event_raw_##template *field;                       \
        struct trace_entry *entry;                                      \
        struct trace_seq *p = &iter->tmp_seq;                           \
                                                                        \
@@ -346,10 +346,10 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags,  \
        field = (typeof(field))entry;                                   \
                                                                        \
        trace_seq_init(p);                                              \
-       return ftrace_output_call(iter, #call, print);                  \
+       return trace_output_call(iter, #call, print);                   \
 }                                                                      \
-static struct trace_event_functions ftrace_event_type_funcs_##call = { \
-       .trace                  = ftrace_raw_output_##call,             \
+static struct trace_event_functions trace_event_type_funcs_##call = {  \
+       .trace                  = trace_raw_output_##call,              \
 };
 
 #include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
@@ -407,9 +407,9 @@ static struct trace_event_functions ftrace_event_type_funcs_##call = {      \
 #undef DECLARE_EVENT_CLASS
 #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, func, print)   \
 static int notrace __init                                              \
-ftrace_define_fields_##call(struct ftrace_event_call *event_call)      \
+trace_event_define_fields_##call(struct trace_event_call *event_call)  \
 {                                                                      \
-       struct ftrace_raw_##call field;                                 \
+       struct trace_event_raw_##call field;                            \
        int ret;                                                        \
                                                                        \
        tstruct;                                                        \
@@ -485,12 +485,12 @@ ftrace_define_fields_##call(struct ftrace_event_call *event_call) \
 
 #undef DECLARE_EVENT_CLASS
 #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \
-static inline notrace int ftrace_get_offsets_##call(                   \
-       struct ftrace_data_offsets_##call *__data_offsets, proto)       \
+static inline notrace int trace_event_get_offsets_##call(              \
+       struct trace_event_data_offsets_##call *__data_offsets, proto)  \
 {                                                                      \
        int __data_size = 0;                                            \
        int __maybe_unused __item_length;                               \
-       struct ftrace_raw_##call __maybe_unused *entry;                 \
+       struct trace_event_raw_##call __maybe_unused *entry;            \
                                                                        \
        tstruct;                                                        \
                                                                        \
@@ -513,35 +513,35 @@ static inline notrace int ftrace_get_offsets_##call(                      \
  *
  * For those macros defined with TRACE_EVENT:
  *
- * static struct ftrace_event_call event_<call>;
+ * static struct trace_event_call event_<call>;
  *
- * static void ftrace_raw_event_<call>(void *__data, proto)
+ * static void trace_event_raw_event_<call>(void *__data, proto)
  * {
- *     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;
+ *     struct trace_event_file *trace_file = __data;
+ *     struct trace_event_call *event_call = trace_file->event_call;
+ *     struct trace_event_data_offsets_<call> __maybe_unused __data_offsets;
+ *     unsigned long eflags = trace_file->flags;
  *     enum event_trigger_type __tt = ETT_NONE;
  *     struct ring_buffer_event *event;
- *     struct ftrace_raw_<call> *entry; <-- defined in stage 1
+ *     struct trace_event_raw_<call> *entry; <-- defined in stage 1
  *     struct ring_buffer *buffer;
  *     unsigned long irq_flags;
  *     int __data_size;
  *     int pc;
  *
- *     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)
+ *     if (!(eflags & EVENT_FILE_FL_TRIGGER_COND)) {
+ *             if (eflags & EVENT_FILE_FL_TRIGGER_MODE)
+ *                     event_triggers_call(trace_file, NULL);
+ *             if (eflags & EVENT_FILE_FL_SOFT_DISABLED)
  *                     return;
  *     }
  *
  *     local_save_flags(irq_flags);
  *     pc = preempt_count();
  *
- *     __data_size = ftrace_get_offsets_<call>(&__data_offsets, args);
+ *     __data_size = trace_event_get_offsets_<call>(&__data_offsets, args);
  *
- *     event = trace_event_buffer_lock_reserve(&buffer, ftrace_file,
+ *     event = trace_event_buffer_lock_reserve(&buffer, trace_file,
  *                               event_<call>->event.type,
  *                               sizeof(*entry) + __data_size,
  *                               irq_flags, pc);
@@ -552,35 +552,35 @@ static inline notrace int ftrace_get_offsets_##call(                      \
  *     { <assign>; }  <-- Here we assign the entries by the __field and
  *                        __array macros.
  *
- *     if (eflags & FTRACE_EVENT_FL_TRIGGER_COND)
- *             __tt = event_triggers_call(ftrace_file, entry);
+ *     if (eflags & EVENT_FILE_FL_TRIGGER_COND)
+ *             __tt = event_triggers_call(trace_file, entry);
  *
- *     if (test_bit(FTRACE_EVENT_FL_SOFT_DISABLED_BIT,
- *                  &ftrace_file->flags))
+ *     if (test_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT,
+ *                  &trace_file->flags))
  *             ring_buffer_discard_commit(buffer, event);
- *     else if (!filter_check_discard(ftrace_file, entry, buffer, event))
+ *     else if (!filter_check_discard(trace_file, entry, buffer, event))
  *             trace_buffer_unlock_commit(buffer, event, irq_flags, pc);
  *
  *     if (__tt)
- *             event_triggers_post_call(ftrace_file, __tt);
+ *             event_triggers_post_call(trace_file, __tt);
  * }
  *
  * static struct trace_event ftrace_event_type_<call> = {
- *     .trace                  = ftrace_raw_output_<call>, <-- stage 2
+ *     .trace                  = trace_raw_output_<call>, <-- stage 2
  * };
  *
  * static char print_fmt_<call>[] = <TP_printk>;
  *
- * static struct ftrace_event_class __used event_class_<template> = {
+ * static struct trace_event_class __used event_class_<template> = {
  *     .system                 = "<system>",
- *     .define_fields          = ftrace_define_fields_<call>,
+ *     .define_fields          = trace_event_define_fields_<call>,
  *     .fields                 = LIST_HEAD_INIT(event_class_##call.fields),
  *     .raw_init               = trace_event_raw_init,
- *     .probe                  = ftrace_raw_event_##call,
- *     .reg                    = ftrace_event_reg,
+ *     .probe                  = trace_event_raw_event_##call,
+ *     .reg                    = trace_event_reg,
  * };
  *
- * static struct ftrace_event_call event_<call> = {
+ * static struct trace_event_call event_<call> = {
  *     .class                  = event_class_<template>,
  *     {
  *             .tp                     = &__tracepoint_<call>,
@@ -591,7 +591,7 @@ static inline notrace int ftrace_get_offsets_##call(                        \
  * };
  * // its only safe to use pointers when doing linker tricks to
  * // create an array.
- * static struct ftrace_event_call __used
+ * static struct trace_event_call __used
  * __attribute__((section("_ftrace_events"))) *__event_<call> = &event_<call>;
  *
  */
@@ -659,20 +659,20 @@ static inline notrace int ftrace_get_offsets_##call(                      \
 #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \
                                                                        \
 static notrace void                                                    \
-ftrace_raw_event_##call(void *__data, proto)                           \
+trace_event_raw_event_##call(void *__data, proto)                      \
 {                                                                      \
-       struct ftrace_event_file *ftrace_file = __data;                 \
-       struct ftrace_data_offsets_##call __maybe_unused __data_offsets;\
-       struct ftrace_event_buffer fbuffer;                             \
-       struct ftrace_raw_##call *entry;                                \
+       struct trace_event_file *trace_file = __data;                   \
+       struct trace_event_data_offsets_##call __maybe_unused __data_offsets;\
+       struct trace_event_buffer fbuffer;                              \
+       struct trace_event_raw_##call *entry;                           \
        int __data_size;                                                \
                                                                        \
-       if (ftrace_trigger_soft_disabled(ftrace_file))                  \
+       if (trace_trigger_soft_disabled(trace_file))                    \
                return;                                                 \
                                                                        \
-       __data_size = ftrace_get_offsets_##call(&__data_offsets, args); \
+       __data_size = trace_event_get_offsets_##call(&__data_offsets, args); \
                                                                        \
-       entry = ftrace_event_buffer_reserve(&fbuffer, ftrace_file,      \
+       entry = trace_event_buffer_reserve(&fbuffer, trace_file,        \
                                 sizeof(*entry) + __data_size);         \
                                                                        \
        if (!entry)                                                     \
@@ -682,7 +682,7 @@ ftrace_raw_event_##call(void *__data, proto)                                \
                                                                        \
        { assign; }                                                     \
                                                                        \
-       ftrace_event_buffer_commit(&fbuffer);                           \
+       trace_event_buffer_commit(&fbuffer);                            \
 }
 /*
  * The ftrace_test_probe is compiled out, it is only here as a build time check
@@ -694,7 +694,7 @@ ftrace_raw_event_##call(void *__data, proto)                                \
 #define DEFINE_EVENT(template, call, proto, args)                      \
 static inline void ftrace_test_probe_##call(void)                      \
 {                                                                      \
-       check_trace_callback_type_##call(ftrace_raw_event_##template);  \
+       check_trace_callback_type_##call(trace_event_raw_event_##template); \
 }
 
 #undef DEFINE_EVENT_PRINT
@@ -721,29 +721,29 @@ static inline void ftrace_test_probe_##call(void)                 \
 #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \
 _TRACE_PERF_PROTO(call, PARAMS(proto));                                        \
 static char print_fmt_##call[] = print;                                        \
-static struct ftrace_event_class __used __refdata event_class_##call = { \
+static struct trace_event_class __used __refdata event_class_##call = { \
        .system                 = TRACE_SYSTEM_STRING,                  \
-       .define_fields          = ftrace_define_fields_##call,          \
+       .define_fields          = trace_event_define_fields_##call,     \
        .fields                 = LIST_HEAD_INIT(event_class_##call.fields),\
        .raw_init               = trace_event_raw_init,                 \
-       .probe                  = ftrace_raw_event_##call,              \
-       .reg                    = ftrace_event_reg,                     \
+       .probe                  = trace_event_raw_event_##call,         \
+       .reg                    = trace_event_reg,                      \
        _TRACE_PERF_INIT(call)                                          \
 };
 
 #undef DEFINE_EVENT
 #define DEFINE_EVENT(template, call, proto, args)                      \
                                                                        \
-static struct ftrace_event_call __used event_##call = {                        \
+static struct trace_event_call __used event_##call = {                 \
        .class                  = &event_class_##template,              \
        {                                                               \
                .tp                     = &__tracepoint_##call,         \
        },                                                              \
-       .event.funcs            = &ftrace_event_type_funcs_##template,  \
+       .event.funcs            = &trace_event_type_funcs_##template,   \
        .print_fmt              = print_fmt_##template,                 \
        .flags                  = TRACE_EVENT_FL_TRACEPOINT,            \
 };                                                                     \
-static struct ftrace_event_call __used                                 \
+static struct trace_event_call __used                                  \
 __attribute__((section("_ftrace_events"))) *__event_##call = &event_##call
 
 #undef DEFINE_EVENT_PRINT
@@ -751,109 +751,16 @@ __attribute__((section("_ftrace_events"))) *__event_##call = &event_##call
                                                                        \
 static char print_fmt_##call[] = print;                                        \
                                                                        \
-static struct ftrace_event_call __used event_##call = {                        \
+static struct trace_event_call __used event_##call = {                 \
        .class                  = &event_class_##template,              \
        {                                                               \
                .tp                     = &__tracepoint_##call,         \
        },                                                              \
-       .event.funcs            = &ftrace_event_type_funcs_##call,      \
+       .event.funcs            = &trace_event_type_funcs_##call,       \
        .print_fmt              = print_fmt_##call,                     \
        .flags                  = TRACE_EVENT_FL_TRACEPOINT,            \
 };                                                                     \
-static struct ftrace_event_call __used                                 \
+static struct trace_event_call __used                                  \
 __attribute__((section("_ftrace_events"))) *__event_##call = &event_##call
 
 #include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
-
-#undef TRACE_SYSTEM_VAR
-
-#ifdef CONFIG_PERF_EVENTS
-
-#undef __entry
-#define __entry entry
-
-#undef __get_dynamic_array
-#define __get_dynamic_array(field)     \
-               ((void *)__entry + (__entry->__data_loc_##field & 0xffff))
-
-#undef __get_dynamic_array_len
-#define __get_dynamic_array_len(field) \
-               ((__entry->__data_loc_##field >> 16) & 0xffff)
-
-#undef __get_str
-#define __get_str(field) (char *)__get_dynamic_array(field)
-
-#undef __get_bitmask
-#define __get_bitmask(field) (char *)__get_dynamic_array(field)
-
-#undef __perf_addr
-#define __perf_addr(a) (__addr = (a))
-
-#undef __perf_count
-#define __perf_count(c)        (__count = (c))
-
-#undef __perf_task
-#define __perf_task(t) (__task = (t))
-
-#undef DECLARE_EVENT_CLASS
-#define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \
-static notrace void                                                    \
-perf_trace_##call(void *__data, proto)                                 \
-{                                                                      \
-       struct ftrace_event_call *event_call = __data;                  \
-       struct ftrace_data_offsets_##call __maybe_unused __data_offsets;\
-       struct ftrace_raw_##call *entry;                                \
-       struct pt_regs *__regs;                                         \
-       u64 __addr = 0, __count = 1;                                    \
-       struct task_struct *__task = NULL;                              \
-       struct hlist_head *head;                                        \
-       int __entry_size;                                               \
-       int __data_size;                                                \
-       int rctx;                                                       \
-                                                                       \
-       __data_size = ftrace_get_offsets_##call(&__data_offsets, args); \
-                                                                       \
-       head = this_cpu_ptr(event_call->perf_events);                   \
-       if (__builtin_constant_p(!__task) && !__task &&                 \
-                               hlist_empty(head))                      \
-               return;                                                 \
-                                                                       \
-       __entry_size = ALIGN(__data_size + sizeof(*entry) + sizeof(u32),\
-                            sizeof(u64));                              \
-       __entry_size -= sizeof(u32);                                    \
-                                                                       \
-       entry = perf_trace_buf_prepare(__entry_size,                    \
-                       event_call->event.type, &__regs, &rctx);        \
-       if (!entry)                                                     \
-               return;                                                 \
-                                                                       \
-       perf_fetch_caller_regs(__regs);                                 \
-                                                                       \
-       tstruct                                                         \
-                                                                       \
-       { assign; }                                                     \
-                                                                       \
-       perf_trace_buf_submit(entry, __entry_size, rctx, __addr,        \
-               __count, __regs, head, __task);                         \
-}
-
-/*
- * This part is compiled out, it is only here as a build time check
- * to make sure that if the tracepoint handling changes, the
- * perf probe will fail to compile unless it too is updated.
- */
-#undef DEFINE_EVENT
-#define DEFINE_EVENT(template, call, proto, args)                      \
-static inline void perf_test_probe_##call(void)                                \
-{                                                                      \
-       check_trace_callback_type_##call(perf_trace_##template);        \
-}
-
-
-#undef DEFINE_EVENT_PRINT
-#define DEFINE_EVENT_PRINT(template, name, proto, args, print) \
-       DEFINE_EVENT(template, name, PARAMS(proto), PARAMS(args))
-
-#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
-#endif /* CONFIG_PERF_EVENTS */
-