summaryrefslogtreecommitdiffstats
path: root/include/trace/events/power.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/trace/events/power.h')
-rw-r--r--include/trace/events/power.h117
1 files changed, 102 insertions, 15 deletions
diff --git a/include/trace/events/power.h b/include/trace/events/power.h
index c4efe9b8280d..286784d69b8f 100644
--- a/include/trace/events/power.h
+++ b/include/trace/events/power.h
@@ -10,63 +10,150 @@
#ifndef _TRACE_POWER_ENUM_
#define _TRACE_POWER_ENUM_
enum {
- POWER_NONE = 0,
- POWER_CSTATE = 1,
- POWER_PSTATE = 2,
+ POWER_NONE = 0,
+ POWER_CSTATE = 1, /* C-State */
+ POWER_PSTATE = 2, /* Fequency change or DVFS */
+ POWER_SSTATE = 3, /* Suspend */
};
#endif
+/*
+ * The power events are used for cpuidle & suspend (power_start, power_end)
+ * and for cpufreq (power_frequency)
+ */
DECLARE_EVENT_CLASS(power,
- TP_PROTO(unsigned int type, unsigned int state),
+ TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
- TP_ARGS(type, state),
+ TP_ARGS(type, state, cpu_id),
TP_STRUCT__entry(
__field( u64, type )
__field( u64, state )
+ __field( u64, cpu_id )
),
TP_fast_assign(
__entry->type = type;
__entry->state = state;
+ __entry->cpu_id = cpu_id;
),
- TP_printk("type=%lu state=%lu", (unsigned long)__entry->type, (unsigned long)__entry->state)
+ TP_printk("type=%lu state=%lu cpu_id=%lu", (unsigned long)__entry->type,
+ (unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
);
DEFINE_EVENT(power, power_start,
- TP_PROTO(unsigned int type, unsigned int state),
+ TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
- TP_ARGS(type, state)
+ TP_ARGS(type, state, cpu_id)
);
DEFINE_EVENT(power, power_frequency,
- TP_PROTO(unsigned int type, unsigned int state),
+ TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
- TP_ARGS(type, state)
+ TP_ARGS(type, state, cpu_id)
);
TRACE_EVENT(power_end,
- TP_PROTO(int dummy),
+ TP_PROTO(unsigned int cpu_id),
- TP_ARGS(dummy),
+ TP_ARGS(cpu_id),
TP_STRUCT__entry(
- __field( u64, dummy )
+ __field( u64, cpu_id )
),
TP_fast_assign(
- __entry->dummy = 0xffff;
+ __entry->cpu_id = cpu_id;
),
- TP_printk("dummy=%lu", (unsigned long)__entry->dummy)
+ TP_printk("cpu_id=%lu", (unsigned long)__entry->cpu_id)
);
+/*
+ * The clock events are used for clock enable/disable and for
+ * clock rate change
+ */
+DECLARE_EVENT_CLASS(clock,
+
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
+
+ TP_ARGS(name, state, cpu_id),
+
+ TP_STRUCT__entry(
+ __string( name, name )
+ __field( u64, state )
+ __field( u64, cpu_id )
+ ),
+
+ TP_fast_assign(
+ __assign_str(name, name);
+ __entry->state = state;
+ __entry->cpu_id = cpu_id;
+ ),
+
+ TP_printk("%s state=%lu cpu_id=%lu", __get_str(name),
+ (unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
+);
+
+DEFINE_EVENT(clock, clock_enable,
+
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
+
+ TP_ARGS(name, state, cpu_id)
+);
+
+DEFINE_EVENT(clock, clock_disable,
+
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
+
+ TP_ARGS(name, state, cpu_id)
+);
+
+DEFINE_EVENT(clock, clock_set_rate,
+
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
+
+ TP_ARGS(name, state, cpu_id)
+);
+
+/*
+ * The power domain events are used for power domains transitions
+ */
+DECLARE_EVENT_CLASS(power_domain,
+
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
+
+ TP_ARGS(name, state, cpu_id),
+
+ TP_STRUCT__entry(
+ __string( name, name )
+ __field( u64, state )
+ __field( u64, cpu_id )
+ ),
+
+ TP_fast_assign(
+ __assign_str(name, name);
+ __entry->state = state;
+ __entry->cpu_id = cpu_id;
+),
+
+ TP_printk("%s state=%lu cpu_id=%lu", __get_str(name),
+ (unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
+);
+
+DEFINE_EVENT(power_domain, power_domain_target,
+
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
+
+ TP_ARGS(name, state, cpu_id)
+);
+
#endif /* _TRACE_POWER_H */
/* This part must be outside protection */