aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace.h
diff options
context:
space:
mode:
authorArjan van de Ven <arjan@infradead.org>2008-11-23 19:49:58 -0500
committerIngo Molnar <mingo@elte.hu>2008-11-26 02:29:32 -0500
commitf3f47a6768a29448866da4422b6f6bee485c947f (patch)
treeba4bf1b79cbd13412871eec50250294d7140fd09 /kernel/trace/trace.h
parent509dceef6470442d8c7b8a43ec34125205840b3c (diff)
tracing: add "power-tracer": C/P state tracer to help power optimization
Impact: new "power-tracer" ftrace plugin This patch adds a C/P-state ftrace plugin that will generate detailed statistics about the C/P-states that are being used, so that we can look at detailed decisions that the C/P-state code is making, rather than the too high level "average" that we have today. An example way of using this is: mount -t debugfs none /sys/kernel/debug echo cstate > /sys/kernel/debug/tracing/current_tracer echo 1 > /sys/kernel/debug/tracing/tracing_enabled sleep 1 echo 0 > /sys/kernel/debug/tracing/tracing_enabled cat /sys/kernel/debug/tracing/trace | perl scripts/trace/cstate.pl > out.svg Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r--kernel/trace/trace.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 3abd645e8af2..4c453778a6ab 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -28,6 +28,7 @@ enum trace_type {
28 TRACE_FN_RET, 28 TRACE_FN_RET,
29 TRACE_USER_STACK, 29 TRACE_USER_STACK,
30 TRACE_BTS, 30 TRACE_BTS,
31 TRACE_POWER,
31 32
32 __TRACE_LAST_TYPE 33 __TRACE_LAST_TYPE
33}; 34};
@@ -160,6 +161,11 @@ struct bts_entry {
160 unsigned long to; 161 unsigned long to;
161}; 162};
162 163
164struct trace_power {
165 struct trace_entry ent;
166 struct power_trace state_data;
167};
168
163/* 169/*
164 * trace_flag_type is an enumeration that holds different 170 * trace_flag_type is an enumeration that holds different
165 * states when a trace occurs. These are: 171 * states when a trace occurs. These are:
@@ -266,6 +272,7 @@ extern void __ftrace_bad_type(void);
266 IF_ASSIGN(var, ent, struct trace_branch, TRACE_BRANCH); \ 272 IF_ASSIGN(var, ent, struct trace_branch, TRACE_BRANCH); \
267 IF_ASSIGN(var, ent, struct ftrace_ret_entry, TRACE_FN_RET);\ 273 IF_ASSIGN(var, ent, struct ftrace_ret_entry, TRACE_FN_RET);\
268 IF_ASSIGN(var, ent, struct bts_entry, TRACE_BTS);\ 274 IF_ASSIGN(var, ent, struct bts_entry, TRACE_BTS);\
275 IF_ASSIGN(var, ent, struct trace_power, TRACE_POWER); \
269 __ftrace_bad_type(); \ 276 __ftrace_bad_type(); \
270 } while (0) 277 } while (0)
271 278