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);
+
next 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.