diff options
-rw-r--r-- | drivers/cpuidle/governors/menu.c | 4 | ||||
-rw-r--r-- | include/trace/events/idle.h | 29 |
2 files changed, 33 insertions, 0 deletions
diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c index cbbb73b37a6d..1657658c5e22 100644 --- a/drivers/cpuidle/governors/menu.c +++ b/drivers/cpuidle/governors/menu.c @@ -21,6 +21,9 @@ #include <linux/math64.h> #include <linux/module.h> +#define CREATE_TRACE_POINTS +#include <trace/events/idle.h> + #define BUCKETS 12 #define INTERVALS 8 #define RESOLUTION 1024 @@ -297,6 +300,7 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev) data->predicted_us = div_round64(data->expected_us * data->correction_factor[data->bucket], RESOLUTION * DECAY); + trace_idle_entry(data->predicted_us); get_typical_interval(data); /* diff --git a/include/trace/events/idle.h b/include/trace/events/idle.h new file mode 100644 index 000000000000..e5381d207bf9 --- /dev/null +++ b/include/trace/events/idle.h @@ -0,0 +1,29 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM idle + +#if !defined(_TRACE_IDLE_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_IDLE_H + +#include <linux/tracepoint.h> + +TRACE_EVENT(idle_entry, + + TP_PROTO(u64 predicted_residency), + + TP_ARGS(predicted_residency), + + TP_STRUCT__entry( + __field( u64, predicted_residency) + ), + + TP_fast_assign( + __entry->predicted_residency = predicted_residency; + ), + + TP_printk("predicted_residency=%lld", __entry->predicted_residency) +); + +#endif /* _TRACE_IDLE_H */ + +/* This part must be outside protection */ +#include <trace/define_trace.h> |