blob: c6eee2d0a1aac811ea8a3165be994a0b411d7fc0 [file] [log] [blame]
xjb04a4022021-11-25 15:01:52 +08001/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (c) 2019 MediaTek Inc.
4 */
5
6#undef TRACE_SYSTEM
7#define TRACE_SYSTEM fpsgo
8
9#if !defined(_TRACE_FPSGO_H) || defined(TRACE_HEADER_MULTI_READ)
10#define _TRACE_FPSGO_H
11
12#include <linux/tracepoint.h>
13#include <linux/ktime.h>
14
15#ifdef CREATE_TRACE_POINTS
16static inline unsigned long long calc_dur(unsigned long long *start,
17 unsigned long long *end)
18{
19 if (*end < *start)
20 return 0ULL;
21 return (*end - *start);
22}
23#endif
24
25TRACE_EVENT(xgf_intvl,
26
27 TP_PROTO(char *type, void *obj, unsigned long long *start,
28 unsigned long long *end),
29
30 TP_ARGS(type, obj, start, end),
31
32 TP_STRUCT__entry(
33 __string(string, type)
34 __field(void*, obj)
35 __field(unsigned long long, start)
36 __field(unsigned long long, end)
37 __field(unsigned long long, dur)
38 ),
39
40 TP_fast_assign(
41 __assign_str(string, type);
42 __entry->obj = obj;
43 __entry->start = *start;
44 __entry->end = *end;
45 __entry->dur = calc_dur(start, end);
46 ),
47
48 TP_printk("%s %p %llu ==> %llu intvl=%lld", __get_str(string),
49 __entry->obj, __entry->start, __entry->end,
50 __entry->dur)
51);
52
53DECLARE_EVENT_CLASS(fpsgo_log_template,
54
55 TP_PROTO(char *log),
56
57 TP_ARGS(log),
58
59 TP_STRUCT__entry(
60 __string(msg, log)
61 ),
62
63 TP_fast_assign(
64 __assign_str(msg, log);
65 ),
66
67 TP_printk("%s", __get_str(msg))
68);
69
70DEFINE_EVENT(fpsgo_log_template, xgf_log,
71 TP_PROTO(char *log),
72 TP_ARGS(log));
73
74DEFINE_EVENT(fpsgo_log_template, minitop_log,
75 TP_PROTO(char *log),
76 TP_ARGS(log));
77
78DEFINE_EVENT(fpsgo_log_template, fpsgo_main_log,
79 TP_PROTO(char *log),
80 TP_ARGS(log));
81
82#endif /* _TRACE_FPSGO_H */
83
84/* This part must be outside protection */
85#include <trace/define_trace.h>