All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Frédéric Weisbecker" <fweisbec@gmail.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Linux Kernel <linux-kernel@vger.kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Steven Noonan <steven@uplinklabs.net>
Subject: [Patch 3/3] Tracing/ftrace: Replace none tracer by nop tracer
Date: Sun, 21 Sep 2008 20:16:30 +0200	[thread overview]
Message-ID: <48D68F7E.5020609@gmail.com> (raw)

Replace "none" tracer by the recently created "nop" tracer. Both are pretty similar except that nop accepts TRACE_PRINT or TRACE_SPECIAL entries.
And as a consequence, changing the size of the ring buffer now requires that tracing has already been disabled.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
---
diff -rup linux-2.6-tip (2)/kernel/trace/trace.c linux-2.6-tip/kernel/trace/trace.c
--- linux-2.6-tip (2)/kernel/trace/trace.c	2008-09-18 18:40:00.000000000 +0200
+++ linux-2.6-tip/kernel/trace/trace.c	2008-09-20 17:13:08.000000000 +0200
@@ -142,24 +142,6 @@ static DECLARE_WAIT_QUEUE_HEAD(trace_wai
 /* trace_flags holds iter_ctrl options */

 unsigned long trace_flags = TRACE_ITER_PRINT_PARENT;

 

-static notrace void no_trace_init(struct trace_array *tr)

-{

-	int cpu;

-

-	ftrace_function_enabled = 0;

-	if(tr->ctrl)

-		for_each_online_cpu(cpu)

-			tracing_reset(tr->data[cpu]);

-	tracer_enabled = 0;

-}

-

-/* dummy trace to disable tracing */

-static struct tracer no_tracer __read_mostly = {

-	.name		= "none",

-	.init		= no_trace_init

-};

-

-

 /**

  * trace_wake_up - wake up tasks waiting for trace input

  *

@@ -962,7 +944,7 @@ ftrace_special(unsigned long arg1, unsig
 	long disabled;

 	int cpu;

 

-	if (tracing_disabled || current_trace == &no_tracer || !tr->ctrl)

+	if (tracing_disabled || !tr->ctrl)

 		return;

 

 	local_irq_save(flags);

@@ -2794,7 +2776,8 @@ tracing_entries_write(struct file *filp,
 {

 	unsigned long val;

 	char buf[64];

-	int i, ret;

+	int i, ret;
+	struct trace_array *tr = filp->private_data;

 

 	if (cnt >= sizeof(buf))

 		return -EINVAL;

@@ -2814,9 +2797,9 @@ tracing_entries_write(struct file *filp,
 

 	mutex_lock(&trace_types_lock);

 

-	if (current_trace != &no_tracer) {

+	if (tr->ctrl) {

 		cnt = -EBUSY;

-		pr_info("ftrace: set current_tracer to none"

+		pr_info("ftrace: please disable tracing"

 			" before modifying buffer size\n");

 		goto out;

 	}

@@ -2879,20 +2862,6 @@ tracing_entries_write(struct file *filp,
 	return cnt;

 }

 

-static int tracing_open_mark(struct inode *inode, struct file *filp)

-{

-	int ret;

-

-	ret = tracing_open_generic(inode, filp);

-	if (ret)

-		return ret;

-

-	if (current_trace == &no_tracer)

-		return -ENODEV;

-

-	return 0;

-}

-

 static int mark_printk(const char *fmt, ...)

 {

 	int ret;

@@ -2911,7 +2880,7 @@ tracing_mark_write(struct file *filp, co
 	char *end;

 	struct trace_array *tr = &global_trace;

 

-	if (current_trace == &no_tracer || !tr->ctrl || tracing_disabled)

+	if (!tr->ctrl || tracing_disabled)

 		return -EINVAL;

 

 	if (cnt > TRACE_BUF_SIZE)

@@ -2971,7 +2940,7 @@ static struct file_operations tracing_en
 };

 

 static struct file_operations tracing_mark_fops = {

-	.open		= tracing_open_mark,

+	.open		= tracing_open_generic,

 	.write		= tracing_mark_write,

 };

 

@@ -3123,7 +3092,7 @@ int trace_vprintk(unsigned long ip, cons
 	long disabled;

 	int cpu, len = 0, write, written = 0;

 

-	if (current_trace == &no_tracer || !tr->ctrl || tracing_disabled)

+	if (!tr->ctrl || tracing_disabled)

 		return 0;

 

 	local_irq_save(flags);

@@ -3539,8 +3508,8 @@ __init static int tracer_alloc_buffers(v
 

 	trace_init_cmdlines();

 

-	register_tracer(&no_tracer);

-	current_trace = &no_tracer;

+	register_tracer(&nop_trace);

+	current_trace = &nop_trace;

 

 	/* All seems OK, enable tracing */

 	global_trace.ctrl = tracer_enabled;

diff -rup linux-2.6-tip (2)/kernel/trace/trace.h linux-2.6-tip/kernel/trace/trace.h
--- linux-2.6-tip (2)/kernel/trace/trace.h	2008-09-19 18:01:26.000000000 +0200
+++ linux-2.6-tip/kernel/trace/trace.h	2008-09-20 17:23:36.000000000 +0200
@@ -384,5 +384,7 @@ enum trace_iterator_flags {

 	TRACE_ITER_SCHED_TREE		= 0x200,

 	TRACE_ITER_PRINTK		= 0x400,

 };

+
+extern struct tracer nop_trace;
 

 #endif /* _LINUX_KERNEL_TRACE_H */

diff -rup linux-2.6-tip (2)/kernel/trace/trace_nop.c linux-2.6-tip/kernel/trace/trace_nop.c
--- linux-2.6-tip (2)/kernel/trace/trace_nop.c	2008-09-19 18:01:26.000000000 +0200
+++ linux-2.6-tip/kernel/trace/trace_nop.c	2008-09-21 00:44:47.000000000 +0200

@@ -47,7 +51,7 @@ static void nop_trace_ctrl_update(struct
 		stop_nop_trace(tr);

 }

 

-static struct tracer nop_trace __read_mostly =

+struct tracer nop_trace __read_mostly =

 {

 	.name		= "nop",

 	.init		= nop_trace_init,

@@ -57,9 +61,4 @@ static struct tracer nop_trace __read_mo
 	.selftest	= trace_selftest_startup_nop,

 #endif

 };

-

-__init static int init_nop_trace(void)

-{

-	return register_tracer(&nop_trace);

-}

-device_initcall(init_nop_trace);

+

             reply	other threads:[~2008-09-21 18:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-21 18:16 Frédéric Weisbecker [this message]
2008-09-22  9:43 ` [Patch 3/3] Tracing/ftrace: Replace none tracer by nop tracer Ingo Molnar
2008-09-22 12:30   ` Frédéric Weisbecker

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=48D68F7E.5020609@gmail.com \
    --to=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    --cc=steven@uplinklabs.net \
    /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.