207 lines · c
1#undef TRACE_SYSTEM2#define TRACE_SYSTEM rtc3 4#if !defined(_TRACE_RTC_H) || defined(TRACE_HEADER_MULTI_READ)5#define _TRACE_RTC_H6 7#include <linux/rtc.h>8#include <linux/tracepoint.h>9 10DECLARE_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->err28 )29);30 31DEFINE_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 38DEFINE_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 45DEFINE_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 52DEFINE_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 59TRACE_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->err77 )78);79 80TRACE_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->err99 )100);101 102TRACE_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->err121 )122);123 124DECLARE_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->err142 )143);144 145DEFINE_EVENT(rtc_offset_class, rtc_set_offset,146 147 TP_PROTO(long offset, int err),148 149 TP_ARGS(offset, err)150);151 152DEFINE_EVENT(rtc_offset_class, rtc_read_offset,153 154 TP_PROTO(long offset, int err),155 156 TP_ARGS(offset, err)157);158 159DECLARE_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->period179 )180);181 182DEFINE_EVENT(rtc_timer_class, rtc_timer_enqueue,183 184 TP_PROTO(struct rtc_timer *timer),185 186 TP_ARGS(timer)187);188 189DEFINE_EVENT(rtc_timer_class, rtc_timer_dequeue,190 191 TP_PROTO(struct rtc_timer *timer),192 193 TP_ARGS(timer)194);195 196DEFINE_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