1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM rtc
3
4 #if !defined(_TRACE_RTC_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_RTC_H
6
7 #include <linux/rtc.h>
8 #include <linux/tracepoint.h>
9
10 DECLARE_EVENT_CLASS(rtc_time_alarm_class,
11
12 TP_PROTO(time64_t secs, int err),
13
14 TP_ARGS(secs, err),
15
16 TP_STRUCT__entry(
17 __field(time64_t, secs)
18 __field(int, err)
19 ),
20
21 TP_fast_assign(
22 __entry->secs = secs;
23 __entry->err = err;
24 ),
25
26 TP_printk("UTC (%lld) (%d)",
27 __entry->secs, __entry->err
28 )
29 );
30
31 DEFINE_EVENT(rtc_time_alarm_class, rtc_set_time,
32
33 TP_PROTO(time64_t secs, int err),
34
35 TP_ARGS(secs, err)
36 );
37
38 DEFINE_EVENT(rtc_time_alarm_class, rtc_read_time,
39
40 TP_PROTO(time64_t secs, int err),
41
42 TP_ARGS(secs, err)
43 );
44
45 DEFINE_EVENT(rtc_time_alarm_class, rtc_set_alarm,
46
47 TP_PROTO(time64_t secs, int err),
48
49 TP_ARGS(secs, err)
50 );
51
52 DEFINE_EVENT(rtc_time_alarm_class, rtc_read_alarm,
53
54 TP_PROTO(time64_t secs, int err),
55
56 TP_ARGS(secs, err)
57 );
58
59 TRACE_EVENT(rtc_irq_set_freq,
60
61 TP_PROTO(int freq, int err),
62
63 TP_ARGS(freq, err),
64
65 TP_STRUCT__entry(
66 __field(int, freq)
67 __field(int, err)
68 ),
69
70 TP_fast_assign(
71 __entry->freq = freq;
72 __entry->err = err;
73 ),
74
75 TP_printk("set RTC periodic IRQ frequency:%u (%d)",
76 __entry->freq, __entry->err
77 )
78 );
79
80 TRACE_EVENT(rtc_irq_set_state,
81
82 TP_PROTO(int enabled, int err),
83
84 TP_ARGS(enabled, err),
85
86 TP_STRUCT__entry(
87 __field(int, enabled)
88 __field(int, err)
89 ),
90
91 TP_fast_assign(
92 __entry->enabled = enabled;
93 __entry->err = err;
94 ),
95
96 TP_printk("%s RTC 2^N Hz periodic IRQs (%d)",
97 __entry->enabled ? "enable" : "disable",
98 __entry->err
99 )
100 );
101
102 TRACE_EVENT(rtc_alarm_irq_enable,
103
104 TP_PROTO(unsigned int enabled, int err),
105
106 TP_ARGS(enabled, err),
107
108 TP_STRUCT__entry(
109 __field(unsigned int, enabled)
110 __field(int, err)
111 ),
112
113 TP_fast_assign(
114 __entry->enabled = enabled;
115 __entry->err = err;
116 ),
117
118 TP_printk("%s RTC alarm IRQ (%d)",
119 __entry->enabled ? "enable" : "disable",
120 __entry->err
121 )
122 );
123
124 DECLARE_EVENT_CLASS(rtc_offset_class,
125
126 TP_PROTO(long offset, int err),
127
128 TP_ARGS(offset, err),
129
130 TP_STRUCT__entry(
131 __field(long, offset)
132 __field(int, err)
133 ),
134
135 TP_fast_assign(
136 __entry->offset = offset;
137 __entry->err = err;
138 ),
139
140 TP_printk("RTC offset: %ld (%d)",
141 __entry->offset, __entry->err
142 )
143 );
144
145 DEFINE_EVENT(rtc_offset_class, rtc_set_offset,
146
147 TP_PROTO(long offset, int err),
148
149 TP_ARGS(offset, err)
150 );
151
152 DEFINE_EVENT(rtc_offset_class, rtc_read_offset,
153
154 TP_PROTO(long offset, int err),
155
156 TP_ARGS(offset, err)
157 );
158
159 DECLARE_EVENT_CLASS(rtc_timer_class,
160
161 TP_PROTO(struct rtc_timer *timer),
162
163 TP_ARGS(timer),
164
165 TP_STRUCT__entry(
166 __field(struct rtc_timer *, timer)
167 __field(ktime_t, expires)
168 __field(ktime_t, period)
169 ),
170
171 TP_fast_assign(
172 __entry->timer = timer;
173 __entry->expires = timer->node.expires;
174 __entry->period = timer->period;
175 ),
176
177 TP_printk("RTC timer:(%p) expires:%lld period:%lld",
178 __entry->timer, __entry->expires, __entry->period
179 )
180 );
181
182 DEFINE_EVENT(rtc_timer_class, rtc_timer_enqueue,
183
184 TP_PROTO(struct rtc_timer *timer),
185
186 TP_ARGS(timer)
187 );
188
189 DEFINE_EVENT(rtc_timer_class, rtc_timer_dequeue,
190
191 TP_PROTO(struct rtc_timer *timer),
192
193 TP_ARGS(timer)
194 );
195
196 DEFINE_EVENT(rtc_timer_class, rtc_timer_fired,
197
198 TP_PROTO(struct rtc_timer *timer),
199
200 TP_ARGS(timer)
201 );
202
203 #endif
204
205
206 #include <trace/define_trace.h>