#undef TRACE_SYSTEM #define TRACE_SYSTEM power #if !defined(_TRACE_POWER_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_POWER_H #include #include #ifndef _TRACE_POWER_ENUM_ #define _TRACE_POWER_ENUM_ enum { 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, unsigned int cpu_id), 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 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, unsigned int cpu_id), TP_ARGS(type, state, cpu_id) ); DEFINE_EVENT(power, power_frequency, TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id), TP_ARGS(type, state, cpu_id) ); TRACE_EVENT(power_end, TP_PROTO(unsigned int cpu_id), TP_ARGS(cpu_id), TP_STRUCT__entry( __field( u64, cpu_id ) ), TP_fast_assign( __entry->cpu_id = cpu_id; ), 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 */ #include