All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Tom Zanussi <tom.zanussi@linux.intel.com>,
	Namhyung Kim <namhyung@kernel.org>
Subject: [for-next][PATCH 09/12] tracing: Add an unreg_all() callback to trigger commands
Date: Wed, 09 Mar 2016 09:46:34 -0500	[thread overview]
Message-ID: <20160309144745.573574237@goodmis.org> (raw)
In-Reply-To: 20160309144625.888964064@goodmis.org

[-- Attachment #1: 0009-tracing-Add-an-unreg_all-callback-to-trigger-command.patch --]
[-- Type: text/plain, Size: 3088 bytes --]

From: Tom Zanussi <tom.zanussi@linux.intel.com>

Add a new unreg_all() callback that can be used to remove all
command-specific triggers from an event and arrange to have it called
whenever a trigger file is opened with O_TRUNC set.

Commands that don't want truncate semantics, or existing commands that
don't implement this function simply do nothing and their triggers
remain intact.

Link: http://lkml.kernel.org/r/2b7d62854d01f28c19185e1bbb8f826f385edfba.1449767187.git.tom.zanussi@linux.intel.com

Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Reviewed-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
 kernel/trace/trace.h                |  9 +++++++--
 kernel/trace/trace_events_trigger.c | 13 +++++++++++++
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 8c6aefbb24d2..f4dd0adf71df 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -1298,8 +1298,8 @@ struct event_trigger_ops {
  *	it (filters make a trigger require access to the trace record
  *	but are not always present).
  *
- * All the methods below, except for @set_filter(), must be
- * implemented.
+ * All the methods below, except for @set_filter() and @unreg_all(),
+ * must be implemented.
  *
  * @func: The callback function responsible for parsing and
  *	registering the trigger written to the 'trigger' file by the
@@ -1324,6 +1324,10 @@ struct event_trigger_ops {
  *	This is usually implemented by the generic utility function
  *	@unregister_trigger() (see trace_event_triggers.c).
  *
+ * @unreg_all: An optional function called to remove all the triggers
+ *	from the list of triggers associated with the event.  Called
+ *	when a trigger file is opened in truncate mode.
+ *
  * @set_filter: An optional function called to parse and set a filter
  *	for the trigger.  If no @set_filter() method is set for the
  *	event command, filters set by the user for the command will be
@@ -1350,6 +1354,7 @@ struct event_command {
 					 struct event_trigger_ops *ops,
 					 struct event_trigger_data *data,
 					 struct trace_event_file *file);
+	void			(*unreg_all)(struct trace_event_file *file);
 	int			(*set_filter)(char *filter_str,
 					      struct event_trigger_data *data,
 					      struct trace_event_file *file);
diff --git a/kernel/trace/trace_events_trigger.c b/kernel/trace/trace_events_trigger.c
index a11bb4780f82..cbb7ee531983 100644
--- a/kernel/trace/trace_events_trigger.c
+++ b/kernel/trace/trace_events_trigger.c
@@ -193,6 +193,19 @@ static int event_trigger_regex_open(struct inode *inode, struct file *file)
 		return -ENODEV;
 	}
 
+	if ((file->f_mode & FMODE_WRITE) &&
+	    (file->f_flags & O_TRUNC)) {
+		struct trace_event_file *event_file;
+		struct event_command *p;
+
+		event_file = event_file_data(file);
+
+		list_for_each_entry(p, &trigger_commands, list) {
+			if (p->unreg_all)
+				p->unreg_all(event_file);
+		}
+	}
+
 	if (file->f_mode & FMODE_READ) {
 		ret = seq_open(file, &event_triggers_seq_ops);
 		if (!ret) {
-- 
2.7.0

  parent reply	other threads:[~2016-03-09 14:50 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-09 14:46 [for-next][PATCH 00/12] tracing: Various cleanups and preparation for trace event hist Steven Rostedt
2016-03-09 14:46 ` [for-next][PATCH 01/12] tracing: Make tracer_flags use the right set_flag callback Steven Rostedt
2016-03-09 14:46 ` [for-next][PATCH 02/12] tracing: Remove duplicate checks for online CPUs Steven Rostedt
2016-03-09 14:46 ` [for-next][PATCH 03/12] tracing: Make ftrace_event_field checking functions available Steven Rostedt
2016-03-09 14:46 ` [for-next][PATCH 04/12] tracing: Make event trigger " Steven Rostedt
2016-03-09 14:46 ` [for-next][PATCH 05/12] tracing: Add event record param to trigger_ops.func() Steven Rostedt
2016-03-09 14:46 ` [for-next][PATCH 06/12] tracing: Add get_syscall_name() Steven Rostedt
2016-03-09 14:46 ` [for-next][PATCH 07/12] tracing: Add a per-event-trigger paused field Steven Rostedt
2016-03-09 14:46 ` [for-next][PATCH 08/12] tracing: Add needs_rec flag to event triggers Steven Rostedt
2016-03-09 14:46 ` Steven Rostedt [this message]
2016-03-09 14:46 ` [for-next][PATCH 10/12] tracing: Use flags instead of bool in trigger structure Steven Rostedt
2016-03-09 14:46 ` [for-next][PATCH 11/12] tracing, writeback: Replace cgroup path to cgroup ino Steven Rostedt
2016-03-09 14:46 ` [for-next][PATCH 12/12] tracing: Fix typoes in code comment and printk in trace_nop.c Steven Rostedt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160309144745.573574237@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=tom.zanussi@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.