1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM alarmtimer
4 
5 #if !defined(_TRACE_ALARMTIMER_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_ALARMTIMER_H
7 
8 #include <linux/alarmtimer.h>
9 #include <linux/rtc.h>
10 #include <linux/tracepoint.h>
11 
12 TRACE_DEFINE_ENUM(ALARM_REALTIME);
13 TRACE_DEFINE_ENUM(ALARM_BOOTTIME);
14 TRACE_DEFINE_ENUM(ALARM_REALTIME_FREEZER);
15 TRACE_DEFINE_ENUM(ALARM_BOOTTIME_FREEZER);
16 
17 #define show_alarm_type(type)	__print_flags(type, " | ",	\
18 	{ 1 << ALARM_REALTIME, "REALTIME" },			\
19 	{ 1 << ALARM_BOOTTIME, "BOOTTIME" },			\
20 	{ 1 << ALARM_REALTIME_FREEZER, "REALTIME Freezer" },	\
21 	{ 1 << ALARM_BOOTTIME_FREEZER, "BOOTTIME Freezer" })
22 
23 TRACE_EVENT(alarmtimer_suspend,
24 
25 	TP_PROTO(ktime_t expires, int flag),
26 
27 	TP_ARGS(expires, flag),
28 
29 	TP_STRUCT__entry(
30 		__field(s64, expires)
31 		__field(unsigned char, alarm_type)
32 	),
33 
34 	TP_fast_assign(
35 		__entry->expires = expires;
36 		__entry->alarm_type = flag;
37 	),
38 
39 	TP_printk("alarmtimer type:%s expires:%llu",
40 		  show_alarm_type((1 << __entry->alarm_type)),
41 		  __entry->expires
42 	)
43 );
44 
45 DECLARE_EVENT_CLASS(alarm_class,
46 
47 	TP_PROTO(struct alarm *alarm, ktime_t now),
48 
49 	TP_ARGS(alarm, now),
50 
51 	TP_STRUCT__entry(
52 		__field(void *,	alarm)
53 		__field(unsigned char, alarm_type)
54 		__field(s64, expires)
55 		__field(s64, now)
56 	),
57 
58 	TP_fast_assign(
59 		__entry->alarm = alarm;
60 		__entry->alarm_type = alarm->type;
61 		__entry->expires = alarm->node.expires;
62 		__entry->now = now;
63 	),
64 
65 	TP_printk("alarmtimer:%p type:%s expires:%llu now:%llu",
66 		  __entry->alarm,
67 		  show_alarm_type((1 << __entry->alarm_type)),
68 		  __entry->expires,
69 		  __entry->now
70 	)
71 );
72 
73 DEFINE_EVENT(alarm_class, alarmtimer_fired,
74 
75 	TP_PROTO(struct alarm *alarm, ktime_t now),
76 
77 	TP_ARGS(alarm, now)
78 );
79 
80 DEFINE_EVENT(alarm_class, alarmtimer_start,
81 
82 	TP_PROTO(struct alarm *alarm, ktime_t now),
83 
84 	TP_ARGS(alarm, now)
85 );
86 
87 DEFINE_EVENT(alarm_class, alarmtimer_cancel,
88 
89 	TP_PROTO(struct alarm *alarm, ktime_t now),
90 
91 	TP_ARGS(alarm, now)
92 );
93 
94 #endif /* _TRACE_ALARMTIMER_H */
95 
96 /* This part must be outside protection */
97 #include <trace/define_trace.h>
98