power.h 3.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
#undef TRACE_SYSTEM
#define TRACE_SYSTEM power

#if !defined(_TRACE_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_POWER_H

#include <linux/ktime.h>
#include <linux/tracepoint.h>

#ifndef _TRACE_POWER_ENUM_
#define _TRACE_POWER_ENUM_
enum {
13 14 15 16
	POWER_NONE	= 0,
	POWER_CSTATE	= 1,	/* C-State */
	POWER_PSTATE	= 2,	/* Fequency change or DVFS */
	POWER_SSTATE	= 3,	/* Suspend */
17 18 19
};
#endif

20 21 22 23
/*
 * The power events are used for cpuidle & suspend (power_start, power_end)
 *  and for cpufreq (power_frequency)
 */
24
DECLARE_EVENT_CLASS(power,
25

26
	TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
27

28
	TP_ARGS(type, state, cpu_id),
29 30 31 32

	TP_STRUCT__entry(
		__field(	u64,		type		)
		__field(	u64,		state		)
33
		__field(	u64,		cpu_id		)
34 35 36 37 38
	),

	TP_fast_assign(
		__entry->type = type;
		__entry->state = state;
39
		__entry->cpu_id = cpu_id;
40 41
	),

42 43
	TP_printk("type=%lu state=%lu cpu_id=%lu", (unsigned long)__entry->type,
		(unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
44 45
);

46
DEFINE_EVENT(power, power_start,
47

48
	TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
49

50
	TP_ARGS(type, state, cpu_id)
51
);
52

53
DEFINE_EVENT(power, power_frequency,
54

55
	TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
56

57
	TP_ARGS(type, state, cpu_id)
58 59
);

60
TRACE_EVENT(power_end,
61

62
	TP_PROTO(unsigned int cpu_id),
63

64
	TP_ARGS(cpu_id),
65 66

	TP_STRUCT__entry(
67
		__field(	u64,		cpu_id		)
68 69 70
	),

	TP_fast_assign(
71
		__entry->cpu_id = cpu_id;
72 73
	),

74
	TP_printk("cpu_id=%lu", (unsigned long)__entry->cpu_id)
75

76 77
);

78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
/*
 * 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)
);

157 158 159 160
#endif /* _TRACE_POWER_H */

/* This part must be outside protection */
#include <trace/define_trace.h>
新手
引导
客服 返回
顶部