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 /* _TRACE_RTC_H */ 204 205 /* This part must be outside protection */ 206 #include <trace/define_trace.h> 207