#undef TRACE_SYSTEM
#define TRACE_SYSTEM alarmtimer

#if !defined(_TRACE_ALARMTIMER_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_ALARMTIMER_H

#include <linux/alarmtimer.h>
#include <linux/rtc.h>
#include <linux/tracepoint.h>

TRACE_DEFINE_ENUM(ALARM_REALTIME);
TRACE_DEFINE_ENUM(ALARM_BOOTTIME);
TRACE_DEFINE_ENUM(ALARM_REALTIME_FREEZER);
TRACE_DEFINE_ENUM(ALARM_BOOTTIME_FREEZER);

#define show_alarm_type(type)	__print_flags(type, " | ",	\
	{ 1 << ALARM_REALTIME, "REALTIME" },			\
	{ 1 << ALARM_BOOTTIME, "BOOTTIME" },			\
	{ 1 << ALARM_REALTIME_FREEZER, "REALTIME Freezer" },	\
	{ 1 << ALARM_BOOTTIME_FREEZER, "BOOTTIME Freezer" })

TRACE_EVENT(alarmtimer_suspend,

	TP_PROTO(ktime_t expires, int flag),

	TP_ARGS(expires, flag),

	TP_STRUCT__entry(
		__field(s64, expires)
		__field(unsigned char, alarm_type)
	),

	TP_fast_assign(
		__entry->expires = expires.tv64;
		__entry->alarm_type = flag;
	),

	TP_printk("alarmtimer type:%s expires:%llu",
		  show_alarm_type((1 << __entry->alarm_type)),
		  __entry->expires
	)
);

DECLARE_EVENT_CLASS(alarm_class,

	TP_PROTO(struct alarm *alarm, ktime_t now),

	TP_ARGS(alarm, now),

	TP_STRUCT__entry(
		__field(void *,	alarm)
		__field(unsigned char, alarm_type)
		__field(s64, expires)
		__field(s64, now)
	),

	TP_fast_assign(
		__entry->alarm = alarm;
		__entry->alarm_type = alarm->type;
		__entry->expires = alarm->node.expires.tv64;
		__entry->now = now.tv64;
	),

	TP_printk("alarmtimer:%p type:%s expires:%llu now:%llu",
		  __entry->alarm,
		  show_alarm_type((1 << __entry->alarm_type)),
		  __entry->expires,
		  __entry->now
	)
);

DEFINE_EVENT(alarm_class, alarmtimer_fired,

	TP_PROTO(struct alarm *alarm, ktime_t now),

	TP_ARGS(alarm, now)
);

DEFINE_EVENT(alarm_class, alarmtimer_start,

	TP_PROTO(struct alarm *alarm, ktime_t now),

	TP_ARGS(alarm, now)
);

DEFINE_EVENT(alarm_class, alarmtimer_cancel,

	TP_PROTO(struct alarm *alarm, ktime_t now),

	TP_ARGS(alarm, now)
);

#endif /* _TRACE_ALARMTIMER_H */

/* This part must be outside protection */
#include <trace/define_trace.h>
