From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Thomas Gleixner <tglx@linutronix.de>
Subject: [PATCH 19/19] tracing: Add trace_options kernel command line parameter
Date: Fri, 02 Nov 2012 14:13:50 -0400 [thread overview]
Message-ID: <20121102181433.245792017@goodmis.org> (raw)
In-Reply-To: 20121102181331.513782854@goodmis.org
[-- Attachment #1: Type: text/plain, Size: 4004 bytes --]
From: Steven Rostedt <srostedt@redhat.com>
Add trace_options to the kernel command line parameter to be able to
set options at early boot. For example, to enable stack dumps of
events, add the following:
trace_options=stacktrace
This along with the trace_event option, you can get not only
traces of the events but also the stack dumps with them.
Requested-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
Documentation/kernel-parameters.txt | 16 +++++++++++
kernel/trace/trace.c | 54 +++++++++++++++++++++++++----------
2 files changed, 55 insertions(+), 15 deletions(-)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 9776f06..2b48c52 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -2859,6 +2859,22 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
to facilitate early boot debugging.
See also Documentation/trace/events.txt
+ trace_options=[option-list]
+ [FTRACE] Enable or disable tracer options at boot.
+ The option-list is a comma delimited list of options
+ that can be enabled or disabled just as if you were
+ to echo the option name into
+
+ /sys/kernel/debug/tracing/trace_options
+
+ For example, to enable stacktrace option (to dump the
+ stack trace of each event), add to the command line:
+
+ trace_options=stacktrace
+
+ See also Documentation/trace/ftrace.txt "trace options"
+ section.
+
transparent_hugepage=
[KNL]
Format: [always|madvise|never]
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 37d1c70..c1434b5 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -155,6 +155,18 @@ static int __init set_ftrace_dump_on_oops(char *str)
}
__setup("ftrace_dump_on_oops", set_ftrace_dump_on_oops);
+
+static char trace_boot_options_buf[MAX_TRACER_SIZE] __initdata;
+static char *trace_boot_options __initdata;
+
+static int __init set_trace_boot_options(char *str)
+{
+ strncpy(trace_boot_options_buf, str, MAX_TRACER_SIZE);
+ trace_boot_options = trace_boot_options_buf;
+ return 0;
+}
+__setup("trace_options=", set_trace_boot_options);
+
unsigned long long ns2usecs(cycle_t nsec)
{
nsec += 500;
@@ -2838,24 +2850,14 @@ static void set_tracer_flags(unsigned int mask, int enabled)
trace_printk_start_stop_comm(enabled);
}
-static ssize_t
-tracing_trace_options_write(struct file *filp, const char __user *ubuf,
- size_t cnt, loff_t *ppos)
+static int trace_set_options(char *option)
{
- char buf[64];
char *cmp;
int neg = 0;
- int ret;
+ int ret = 0;
int i;
- if (cnt >= sizeof(buf))
- return -EINVAL;
-
- if (copy_from_user(&buf, ubuf, cnt))
- return -EFAULT;
-
- buf[cnt] = 0;
- cmp = strstrip(buf);
+ cmp = strstrip(option);
if (strncmp(cmp, "no", 2) == 0) {
neg = 1;
@@ -2874,10 +2876,25 @@ tracing_trace_options_write(struct file *filp, const char __user *ubuf,
mutex_lock(&trace_types_lock);
ret = set_tracer_option(current_trace, cmp, neg);
mutex_unlock(&trace_types_lock);
- if (ret)
- return ret;
}
+ return ret;
+}
+
+static ssize_t
+tracing_trace_options_write(struct file *filp, const char __user *ubuf,
+ size_t cnt, loff_t *ppos)
+{
+ char buf[64];
+
+ if (cnt >= sizeof(buf))
+ return -EINVAL;
+
+ if (copy_from_user(&buf, ubuf, cnt))
+ return -EFAULT;
+
+ trace_set_options(buf);
+
*ppos += cnt;
return cnt;
@@ -5133,6 +5150,13 @@ __init static int tracer_alloc_buffers(void)
register_die_notifier(&trace_die_notifier);
+ while (trace_boot_options) {
+ char *option;
+
+ option = strsep(&trace_boot_options, ",");
+ trace_set_options(option);
+ }
+
return 0;
out_free_cpumask:
--
1.7.10.4
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
next prev parent reply other threads:[~2012-11-02 18:16 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-02 18:13 [PATCH 00/19] [GIT PULL][3.8] tracing: updates (v2) Steven Rostedt
2012-11-02 18:13 ` [PATCH 01/19] tracing: Replace strict_strto* with kstrto* Steven Rostedt
2012-11-02 18:13 ` [PATCH 02/19] tracing: Allow tracers to start at core initcall Steven Rostedt
2012-11-02 18:13 ` [PATCH 03/19] tracing: Change tracers integer flags to bool Steven Rostedt
2012-11-02 18:13 ` [PATCH 04/19] ring-buffer: Add a dropped events counter Steven Rostedt
2012-11-02 18:13 ` [PATCH 05/19] tracing: Expand ring buffer when trace_printk() is used Steven Rostedt
2012-11-02 18:13 ` [PATCH 06/19] tracing: Enable comm recording if " Steven Rostedt
2012-11-02 18:13 ` [PATCH 07/19] tracing: Have tracing_sched_wakeup_trace() use standard unlock_commit Steven Rostedt
2012-11-02 18:13 ` [PATCH 08/19] tracing: Cache comms only after an event occurred Steven Rostedt
2012-11-02 18:13 ` [PATCH 09/19] tracing: Trivial cleanup Steven Rostedt
2012-11-02 18:13 ` [PATCH 10/19] tracing: Cleanup unnecessary function declarations Steven Rostedt
2012-11-02 18:13 ` [PATCH 11/19] linux/kernel.h: Remove duplicate trace_printk declaration Steven Rostedt
2012-11-02 18:13 ` [PATCH 12/19] tracing: Reset ring buffer when changing trace_clocks Steven Rostedt
2012-11-02 18:13 ` [PATCH 13/19] ring-buffer: Change unsigned long type of ring_buffer_oldest_event_ts() to u64 Steven Rostedt
2012-11-02 18:13 ` [PATCH 14/19] tracing: Separate open function from set_event and available_events Steven Rostedt
2012-11-02 18:13 ` [PATCH 15/19] tracing: Remove unused function unregister_tracer() Steven Rostedt
2012-11-02 18:13 ` [PATCH 16/19] tracing: Make tracing_enabled be equal to tracing_on Steven Rostedt
2012-11-02 18:13 ` [PATCH 17/19] tracing: Remove deprecated tracing_enabled file Steven Rostedt
2012-11-02 18:13 ` [PATCH 18/19] tracing: Use irq_work for wake ups and remove *_nowake_*() functions Steven Rostedt
2012-11-02 18:13 ` Steven Rostedt [this message]
2012-11-09 12:16 ` [PATCH 00/19] [GIT PULL][3.8] tracing: updates (v2) Steven Rostedt
2012-11-14 6:18 ` Ingo Molnar
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=20121102181433.245792017@goodmis.org \
--to=rostedt@goodmis.org \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=tglx@linutronix.de \
/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.