]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - kernel/trace/trace_events.c
Merge tag 'trace-v4.10' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[mirror_ubuntu-zesty-kernel.git] / kernel / trace / trace_events.c
index 03c0a48c3ac4f3daca47a46e401a75f02a826316..93116549a284366a7670bdd82316b049ec72412e 100644 (file)
@@ -283,46 +283,6 @@ void *trace_event_buffer_reserve(struct trace_event_buffer *fbuffer,
 }
 EXPORT_SYMBOL_GPL(trace_event_buffer_reserve);
 
-static DEFINE_SPINLOCK(tracepoint_iter_lock);
-
-static void output_printk(struct trace_event_buffer *fbuffer)
-{
-       struct trace_event_call *event_call;
-       struct trace_event *event;
-       unsigned long flags;
-       struct trace_iterator *iter = tracepoint_print_iter;
-
-       if (!iter)
-               return;
-
-       event_call = fbuffer->trace_file->event_call;
-       if (!event_call || !event_call->event.funcs ||
-           !event_call->event.funcs->trace)
-               return;
-
-       event = &fbuffer->trace_file->event_call->event;
-
-       spin_lock_irqsave(&tracepoint_iter_lock, flags);
-       trace_seq_init(&iter->seq);
-       iter->ent = fbuffer->entry;
-       event_call->event.funcs->trace(iter, 0, event);
-       trace_seq_putc(&iter->seq, 0);
-       printk("%s", iter->seq.buffer);
-
-       spin_unlock_irqrestore(&tracepoint_iter_lock, flags);
-}
-
-void trace_event_buffer_commit(struct trace_event_buffer *fbuffer)
-{
-       if (tracepoint_printk)
-               output_printk(fbuffer);
-
-       event_trigger_unlock_commit(fbuffer->trace_file, fbuffer->buffer,
-                                   fbuffer->event, fbuffer->entry,
-                                   fbuffer->flags, fbuffer->pc);
-}
-EXPORT_SYMBOL_GPL(trace_event_buffer_commit);
-
 int trace_event_reg(struct trace_event_call *call,
                    enum trace_reg type, void *data)
 {
@@ -742,6 +702,7 @@ __ftrace_set_clr_event_nolock(struct trace_array *tr, const char *match,
        struct trace_event_call *call;
        const char *name;
        int ret = -EINVAL;
+       int eret = 0;
 
        list_for_each_entry(file, &tr->events, list) {
 
@@ -765,9 +726,17 @@ __ftrace_set_clr_event_nolock(struct trace_array *tr, const char *match,
                if (event && strcmp(event, name) != 0)
                        continue;
 
-               ftrace_event_enable_disable(file, set);
+               ret = ftrace_event_enable_disable(file, set);
 
-               ret = 0;
+               /*
+                * Save the first error and return that. Some events
+                * may still have been enabled, but let the user
+                * know that something went wrong.
+                */
+               if (ret && !eret)
+                       eret = ret;
+
+               ret = eret;
        }
 
        return ret;
@@ -2843,20 +2812,32 @@ create_event_toplevel_files(struct dentry *parent, struct trace_array *tr)
                return -ENOMEM;
        }
 
+       entry = trace_create_file("enable", 0644, d_events,
+                                 tr, &ftrace_tr_enable_fops);
+       if (!entry) {
+               pr_warn("Could not create tracefs 'enable' entry\n");
+               return -ENOMEM;
+       }
+
+       /* There are not as crucial, just warn if they are not created */
+
        entry = tracefs_create_file("set_event_pid", 0644, parent,
                                    tr, &ftrace_set_event_pid_fops);
+       if (!entry)
+               pr_warn("Could not create tracefs 'set_event_pid' entry\n");
 
        /* ring buffer internal formats */
-       trace_create_file("header_page", 0444, d_events,
-                         ring_buffer_print_page_header,
-                         &ftrace_show_header_fops);
-
-       trace_create_file("header_event", 0444, d_events,
-                         ring_buffer_print_entry_header,
-                         &ftrace_show_header_fops);
+       entry = trace_create_file("header_page", 0444, d_events,
+                                 ring_buffer_print_page_header,
+                                 &ftrace_show_header_fops);
+       if (!entry)
+               pr_warn("Could not create tracefs 'header_page' entry\n");
 
-       trace_create_file("enable", 0644, d_events,
-                         tr, &ftrace_tr_enable_fops);
+       entry = trace_create_file("header_event", 0444, d_events,
+                                 ring_buffer_print_entry_header,
+                                 &ftrace_show_header_fops);
+       if (!entry)
+               pr_warn("Could not create tracefs 'header_event' entry\n");
 
        tr->event_dir = d_events;