1#undef TRACE_SYSTEM
2#define TRACE_INCLUDE_PATH ../../drivers/staging/android/trace
3#define TRACE_SYSTEM sync
4
5#if !defined(_TRACE_SYNC_H) || defined(TRACE_HEADER_MULTI_READ)
6#define _TRACE_SYNC_H
7
8#include "../sync.h"
9#include <linux/tracepoint.h>
10
11TRACE_EVENT(sync_timeline,
12	TP_PROTO(struct sync_timeline *timeline),
13
14	TP_ARGS(timeline),
15
16	TP_STRUCT__entry(
17			__string(name, timeline->name)
18			__array(char, value, 32)
19	),
20
21	TP_fast_assign(
22			__assign_str(name, timeline->name);
23			if (timeline->ops->timeline_value_str) {
24				timeline->ops->timeline_value_str(timeline,
25							__entry->value,
26							sizeof(__entry->value));
27			} else {
28				__entry->value[0] = '\0';
29			}
30	),
31
32	TP_printk("name=%s value=%s", __get_str(name), __entry->value)
33);
34
35TRACE_EVENT(sync_wait,
36	TP_PROTO(struct sync_fence *fence, int begin),
37
38	TP_ARGS(fence, begin),
39
40	TP_STRUCT__entry(
41			__string(name, fence->name)
42			__field(s32, status)
43			__field(u32, begin)
44	),
45
46	TP_fast_assign(
47			__assign_str(name, fence->name);
48			__entry->status = atomic_read(&fence->status);
49			__entry->begin = begin;
50	),
51
52	TP_printk("%s name=%s state=%d", __entry->begin ? "begin" : "end",
53			__get_str(name), __entry->status)
54);
55
56TRACE_EVENT(sync_pt,
57	TP_PROTO(struct fence *pt),
58
59	TP_ARGS(pt),
60
61	TP_STRUCT__entry(
62		__string(timeline, pt->ops->get_timeline_name(pt))
63		__array(char, value, 32)
64	),
65
66	TP_fast_assign(
67		__assign_str(timeline, pt->ops->get_timeline_name(pt));
68		if (pt->ops->fence_value_str) {
69			pt->ops->fence_value_str(pt, __entry->value,
70							sizeof(__entry->value));
71		} else {
72			__entry->value[0] = '\0';
73		}
74	),
75
76	TP_printk("name=%s value=%s", __get_str(timeline), __entry->value)
77);
78
79#endif /* if !defined(_TRACE_SYNC_H) || defined(TRACE_HEADER_MULTI_READ) */
80
81/* This part must be outside protection */
82#include <trace/define_trace.h>
83