tracing: pass around ring buffer instead of tracer
[deliverable/linux.git] / kernel / trace / trace_events.c
index 9c7ecfb3416f4d7ad503a89bf41395696824a997..78b1ed230177246349d10ba83615b99f3adcbde3 100644 (file)
@@ -27,8 +27,9 @@ DEFINE_MUTEX(event_mutex);
 
 LIST_HEAD(ftrace_events);
 
-int trace_define_field(struct ftrace_event_call *call, char *type,
-                      char *name, int offset, int size, int is_signed)
+int trace_define_field(struct ftrace_event_call *call, const char *type,
+                      const char *name, int offset, int size, int is_signed,
+                      int filter_type)
 {
        struct ftrace_event_field *field;
 
@@ -44,9 +45,15 @@ int trace_define_field(struct ftrace_event_call *call, char *type,
        if (!field->type)
                goto err;
 
+       if (filter_type == FILTER_OTHER)
+               field->filter_type = filter_assign_type(type);
+       else
+               field->filter_type = filter_type;
+
        field->offset = offset;
        field->size = size;
        field->is_signed = is_signed;
+
        list_add(&field->link, &call->fields);
 
        return 0;
@@ -66,7 +73,7 @@ EXPORT_SYMBOL_GPL(trace_define_field);
        ret = trace_define_field(call, #type, "common_" #item,          \
                                 offsetof(typeof(ent), item),           \
                                 sizeof(ent.item),                      \
-                                is_signed_type(type));                 \
+                                is_signed_type(type), FILTER_OTHER);   \
        if (ret)                                                        \
                return ret;
 
@@ -83,6 +90,7 @@ int trace_define_common_fields(struct ftrace_event_call *call)
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(trace_define_common_fields);
 
 #ifdef CONFIG_MODULES
 
@@ -1430,6 +1438,7 @@ static void
 function_test_events_call(unsigned long ip, unsigned long parent_ip)
 {
        struct ring_buffer_event *event;
+       struct ring_buffer *buffer;
        struct ftrace_entry *entry;
        unsigned long flags;
        long disabled;
@@ -1447,7 +1456,8 @@ function_test_events_call(unsigned long ip, unsigned long parent_ip)
 
        local_save_flags(flags);
 
-       event = trace_current_buffer_lock_reserve(TRACE_FN, sizeof(*entry),
+       event = trace_current_buffer_lock_reserve(&buffer,
+                                                 TRACE_FN, sizeof(*entry),
                                                  flags, pc);
        if (!event)
                goto out;
@@ -1455,7 +1465,7 @@ function_test_events_call(unsigned long ip, unsigned long parent_ip)
        entry->ip                       = ip;
        entry->parent_ip                = parent_ip;
 
-       trace_nowake_buffer_unlock_commit(event, flags, pc);
+       trace_nowake_buffer_unlock_commit(buffer, event, flags, pc);
 
  out:
        atomic_dec(&per_cpu(test_event_disable, cpu));
This page took 0.028633 seconds and 5 git commands to generate.