0001 #undef TRACE_SYSTEM
0002 #define TRACE_SYSTEM rtc
0003
0004 #if !defined(_TRACE_RTC_H) || defined(TRACE_HEADER_MULTI_READ)
0005 #define _TRACE_RTC_H
0006
0007 #include <linux/rtc.h>
0008 #include <linux/tracepoint.h>
0009
0010 DECLARE_EVENT_CLASS(rtc_time_alarm_class,
0011
0012 TP_PROTO(time64_t secs, int err),
0013
0014 TP_ARGS(secs, err),
0015
0016 TP_STRUCT__entry(
0017 __field(time64_t, secs)
0018 __field(int, err)
0019 ),
0020
0021 TP_fast_assign(
0022 __entry->secs = secs;
0023 __entry->err = err;
0024 ),
0025
0026 TP_printk("UTC (%lld) (%d)",
0027 __entry->secs, __entry->err
0028 )
0029 );
0030
0031 DEFINE_EVENT(rtc_time_alarm_class, rtc_set_time,
0032
0033 TP_PROTO(time64_t secs, int err),
0034
0035 TP_ARGS(secs, err)
0036 );
0037
0038 DEFINE_EVENT(rtc_time_alarm_class, rtc_read_time,
0039
0040 TP_PROTO(time64_t secs, int err),
0041
0042 TP_ARGS(secs, err)
0043 );
0044
0045 DEFINE_EVENT(rtc_time_alarm_class, rtc_set_alarm,
0046
0047 TP_PROTO(time64_t secs, int err),
0048
0049 TP_ARGS(secs, err)
0050 );
0051
0052 DEFINE_EVENT(rtc_time_alarm_class, rtc_read_alarm,
0053
0054 TP_PROTO(time64_t secs, int err),
0055
0056 TP_ARGS(secs, err)
0057 );
0058
0059 TRACE_EVENT(rtc_irq_set_freq,
0060
0061 TP_PROTO(int freq, int err),
0062
0063 TP_ARGS(freq, err),
0064
0065 TP_STRUCT__entry(
0066 __field(int, freq)
0067 __field(int, err)
0068 ),
0069
0070 TP_fast_assign(
0071 __entry->freq = freq;
0072 __entry->err = err;
0073 ),
0074
0075 TP_printk("set RTC periodic IRQ frequency:%u (%d)",
0076 __entry->freq, __entry->err
0077 )
0078 );
0079
0080 TRACE_EVENT(rtc_irq_set_state,
0081
0082 TP_PROTO(int enabled, int err),
0083
0084 TP_ARGS(enabled, err),
0085
0086 TP_STRUCT__entry(
0087 __field(int, enabled)
0088 __field(int, err)
0089 ),
0090
0091 TP_fast_assign(
0092 __entry->enabled = enabled;
0093 __entry->err = err;
0094 ),
0095
0096 TP_printk("%s RTC 2^N Hz periodic IRQs (%d)",
0097 __entry->enabled ? "enable" : "disable",
0098 __entry->err
0099 )
0100 );
0101
0102 TRACE_EVENT(rtc_alarm_irq_enable,
0103
0104 TP_PROTO(unsigned int enabled, int err),
0105
0106 TP_ARGS(enabled, err),
0107
0108 TP_STRUCT__entry(
0109 __field(unsigned int, enabled)
0110 __field(int, err)
0111 ),
0112
0113 TP_fast_assign(
0114 __entry->enabled = enabled;
0115 __entry->err = err;
0116 ),
0117
0118 TP_printk("%s RTC alarm IRQ (%d)",
0119 __entry->enabled ? "enable" : "disable",
0120 __entry->err
0121 )
0122 );
0123
0124 DECLARE_EVENT_CLASS(rtc_offset_class,
0125
0126 TP_PROTO(long offset, int err),
0127
0128 TP_ARGS(offset, err),
0129
0130 TP_STRUCT__entry(
0131 __field(long, offset)
0132 __field(int, err)
0133 ),
0134
0135 TP_fast_assign(
0136 __entry->offset = offset;
0137 __entry->err = err;
0138 ),
0139
0140 TP_printk("RTC offset: %ld (%d)",
0141 __entry->offset, __entry->err
0142 )
0143 );
0144
0145 DEFINE_EVENT(rtc_offset_class, rtc_set_offset,
0146
0147 TP_PROTO(long offset, int err),
0148
0149 TP_ARGS(offset, err)
0150 );
0151
0152 DEFINE_EVENT(rtc_offset_class, rtc_read_offset,
0153
0154 TP_PROTO(long offset, int err),
0155
0156 TP_ARGS(offset, err)
0157 );
0158
0159 DECLARE_EVENT_CLASS(rtc_timer_class,
0160
0161 TP_PROTO(struct rtc_timer *timer),
0162
0163 TP_ARGS(timer),
0164
0165 TP_STRUCT__entry(
0166 __field(struct rtc_timer *, timer)
0167 __field(ktime_t, expires)
0168 __field(ktime_t, period)
0169 ),
0170
0171 TP_fast_assign(
0172 __entry->timer = timer;
0173 __entry->expires = timer->node.expires;
0174 __entry->period = timer->period;
0175 ),
0176
0177 TP_printk("RTC timer:(%p) expires:%lld period:%lld",
0178 __entry->timer, __entry->expires, __entry->period
0179 )
0180 );
0181
0182 DEFINE_EVENT(rtc_timer_class, rtc_timer_enqueue,
0183
0184 TP_PROTO(struct rtc_timer *timer),
0185
0186 TP_ARGS(timer)
0187 );
0188
0189 DEFINE_EVENT(rtc_timer_class, rtc_timer_dequeue,
0190
0191 TP_PROTO(struct rtc_timer *timer),
0192
0193 TP_ARGS(timer)
0194 );
0195
0196 DEFINE_EVENT(rtc_timer_class, rtc_timer_fired,
0197
0198 TP_PROTO(struct rtc_timer *timer),
0199
0200 TP_ARGS(timer)
0201 );
0202
0203 #endif
0204
0205
0206 #include <trace/define_trace.h>