X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=instrumentation%2Fevents%2Flttng-module%2Fpower.h;h=2146a377b09405c9943e5a254e3912b6dfaf9a38;hb=9f36eaed6f91d5897924b551b44d1edd8cee00e2;hp=f2e3f54746c62c5349ba40205713a7b8ee0fc3ad;hpb=d3ac4d63d21c643df5b09d9d7888eb0c4122379c;p=lttng-modules.git diff --git a/instrumentation/events/lttng-module/power.h b/instrumentation/events/lttng-module/power.h index f2e3f547..2146a377 100644 --- a/instrumentation/events/lttng-module/power.h +++ b/instrumentation/events/lttng-module/power.h @@ -1,33 +1,30 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #undef TRACE_SYSTEM #define TRACE_SYSTEM power -#if !defined(_TRACE_POWER_H) || defined(TRACE_HEADER_MULTI_READ) -#define _TRACE_POWER_H +#if !defined(LTTNG_TRACE_POWER_H) || defined(TRACE_HEADER_MULTI_READ) +#define LTTNG_TRACE_POWER_H +#include #include -#include +#include -DECLARE_EVENT_CLASS(cpu, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) +LTTNG_TRACEPOINT_EVENT_CLASS(power_cpu, TP_PROTO(unsigned int state, unsigned int cpu_id), TP_ARGS(state, cpu_id), - TP_STRUCT__entry( - __field( u32, state ) - __field( u32, cpu_id ) - ), - - TP_fast_assign( - tp_assign(state, state) - tp_assign(cpu_id, cpu_id) - ), - - TP_printk("state=%lu cpu_id=%lu", (unsigned long)__entry->state, - (unsigned long)__entry->cpu_id) + TP_FIELDS( + ctf_integer(u32, state, state) + ctf_integer(u32, cpu_id, cpu_id) + ) ) -DEFINE_EVENT(cpu, cpu_idle, +LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_cpu, cpu_idle, + + power_cpu_idle, TP_PROTO(unsigned int state, unsigned int cpu_id), @@ -41,89 +38,139 @@ DEFINE_EVENT(cpu, cpu_idle, #define PWR_EVENT_EXIT -1 #endif -DEFINE_EVENT(cpu, cpu_frequency, +LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_cpu, cpu_frequency, + + power_cpu_frequency, TP_PROTO(unsigned int frequency, unsigned int cpu_id), TP_ARGS(frequency, cpu_id) ) -TRACE_EVENT(machine_suspend, +LTTNG_TRACEPOINT_EVENT_MAP(machine_suspend, + + power_machine_suspend, TP_PROTO(unsigned int state), TP_ARGS(state), - TP_STRUCT__entry( - __field( u32, state ) - ), + TP_FIELDS( + ctf_integer(u32, state, state) + ) +) +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)) +LTTNG_TRACEPOINT_EVENT_CLASS(power_wakeup_source, + + TP_PROTO(const char *name, unsigned int state), + + TP_ARGS(name, state), + + TP_FIELDS( + ctf_string(name, name) + ctf_integer(u64, state, state) + ) +) + +LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_wakeup_source, wakeup_source_activate, + + power_wakeup_source_activate, - TP_fast_assign( - tp_assign(state, state) - ), + TP_PROTO(const char *name, unsigned int state), - TP_printk("state=%lu", (unsigned long)__entry->state) + TP_ARGS(name, state) ) -/* This code will be removed after deprecation time exceeded (2.6.41) */ +LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_wakeup_source, wakeup_source_deactivate, + + power_wakeup_source_deactivate, + + TP_PROTO(const char *name, unsigned int state), + + TP_ARGS(name, state) +) +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38)) +#undef CONFIG_EVENT_POWER_TRACING_DEPRECATED +#define CONFIG_EVENT_POWER_TRACING_DEPRECATED +#define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED +#endif + #ifdef CONFIG_EVENT_POWER_TRACING_DEPRECATED /* * The power events are used for cpuidle & suspend (power_start, power_end) * and for cpufreq (power_frequency) */ -DECLARE_EVENT_CLASS(power, +LTTNG_TRACEPOINT_EVENT_CLASS(power, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id), TP_ARGS(type, state, cpu_id), +#else + TP_PROTO(unsigned int type, unsigned int state), - TP_STRUCT__entry( - __field( u64, type ) - __field( u64, state ) - __field( u64, cpu_id ) - ), - - TP_fast_assign( - tp_assign(type, type) - tp_assign(state, state) - tp_assign(cpu_id, cpu_id) - ), + TP_ARGS(type, state), +#endif - TP_printk("type=%lu state=%lu cpu_id=%lu", (unsigned long)__entry->type, - (unsigned long)__entry->state, (unsigned long)__entry->cpu_id) + TP_FIELDS( + ctf_integer(u64, type, type) + ctf_integer(u64, state, state) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) + ctf_integer(u64, cpu_id, cpu_id) +#endif + ) ) -DEFINE_EVENT(power, power_start, +LTTNG_TRACEPOINT_EVENT_INSTANCE(power, power_start, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id), TP_ARGS(type, state, cpu_id) +#else + TP_PROTO(unsigned int type, unsigned int state), + + TP_ARGS(type, state) +#endif ) -DEFINE_EVENT(power, power_frequency, +LTTNG_TRACEPOINT_EVENT_INSTANCE(power, power_frequency, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id), TP_ARGS(type, state, cpu_id) +#else + TP_PROTO(unsigned int type, unsigned int state), + + TP_ARGS(type, state) +#endif ) -TRACE_EVENT(power_end, +LTTNG_TRACEPOINT_EVENT(power_end, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) TP_PROTO(unsigned int cpu_id), TP_ARGS(cpu_id), +#else + TP_PROTO(int dummy), - TP_STRUCT__entry( - __field( u64, cpu_id ) - ), - - TP_fast_assign( - tp_assign(cpu_id, cpu_id) - ), - - TP_printk("cpu_id=%lu", (unsigned long)__entry->cpu_id) + TP_ARGS(dummy), +#endif + TP_FIELDS( +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) + ctf_integer(u64, cpu_id, cpu_id) +#else + ctf_integer(u64, dummy, 0xffff) +#endif + ) ) /* Deprecated dummy functions must be protected against multi-declartion */ @@ -151,52 +198,54 @@ enum { events get removed */ static inline void trace_power_start(u64 type, u64 state, u64 cpuid) {}; static inline void trace_power_end(u64 cpuid) {}; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) +static inline void trace_power_start_rcuidle(u64 type, u64 state, u64 cpuid) {}; +static inline void trace_power_end_rcuidle(u64 cpuid) {}; +#endif static inline void trace_power_frequency(u64 type, u64 state, u64 cpuid) {}; #endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */ #endif /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) /* * The clock events are used for clock enable/disable and for * clock rate change */ -DECLARE_EVENT_CLASS(clock, +LTTNG_TRACEPOINT_EVENT_CLASS(power_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( - tp_strcpy(name, name) - tp_assign(state, state) - tp_assign(cpu_id, cpu_id) - ), - - TP_printk("%s state=%lu cpu_id=%lu", __get_str(name), - (unsigned long)__entry->state, (unsigned long)__entry->cpu_id) + TP_FIELDS( + ctf_string(name, name) + ctf_integer(u64, state, state) + ctf_integer(u64, cpu_id, cpu_id) + ) ) -DEFINE_EVENT(clock, clock_enable, +LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock, clock_enable, + + power_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, +LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock, clock_disable, + + power_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, +LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(power_clock, clock_set_rate, + + power_clock_set_rate, TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), @@ -206,35 +255,28 @@ DEFINE_EVENT(clock, clock_set_rate, /* * The power domain events are used for power domains transitions */ -DECLARE_EVENT_CLASS(power_domain, +LTTNG_TRACEPOINT_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( - tp_strcpy(name, name) - tp_assign(state, state) - tp_assign(cpu_id, cpu_id) -), - - TP_printk("%s state=%lu cpu_id=%lu", __get_str(name), - (unsigned long)__entry->state, (unsigned long)__entry->cpu_id) + TP_FIELDS( + ctf_string(name, name) + ctf_integer(u64, state, state) + ctf_integer(u64, cpu_id, cpu_id) + ) ) -DEFINE_EVENT(power_domain, power_domain_target, +LTTNG_TRACEPOINT_EVENT_INSTANCE(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 */ +#endif + +#endif /* LTTNG_TRACE_POWER_H */ /* This part must be outside protection */ -#include "../../../probes/define_trace.h" +#include