XenevaOS
Loading...
Searching...
No Matches
dma_fence.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: GPL-2.0 */
2#undef TRACE_SYSTEM
3#define TRACE_SYSTEM dma_fence
4
5#if !defined(_TRACE_DMA_FENCE_H) || defined(TRACE_HEADER_MULTI_READ)
6#define _TRACE_DMA_FENCE_H
7
8#include <linux/tracepoint.h>
9
10struct dma_fence;
11
13
14 TP_PROTO(struct dma_fence *fence),
15
16 TP_ARGS(fence),
17
18 TP_STRUCT__entry(
19 __string(driver, dma_fence_driver_name(fence))
20 __string(timeline, dma_fence_timeline_name(fence))
21 __field(unsigned int, context)
22 __field(unsigned int, seqno)
23 ),
24
25 TP_fast_assign(
26 __assign_str(driver);
27 __assign_str(timeline);
28 __entry->context = fence->context;
29 __entry->seqno = fence->seqno;
30 ),
31
32 TP_printk("driver=%s timeline=%s context=%u seqno=%u",
33 __get_str(driver), __get_str(timeline), __entry->context,
34 __entry->seqno)
35);
36
37/*
38 * Safe only for call sites which are guaranteed to not race with fence
39 * signaling, holding the fence->lock and having checked for not signaled, or
40 * the signaling path itself.
41 *
42 * TODO: Remove the need for this event class when drivers switch to independent
43 * fences.
44 */
46
47 TP_PROTO(struct dma_fence *fence),
48
49 TP_ARGS(fence),
50
51 TP_STRUCT__entry(
52 __string(driver, fence->ops->get_driver_name(fence))
53 __string(timeline, fence->ops->get_timeline_name(fence))
54 __field(unsigned int, context)
55 __field(unsigned int, seqno)
56 ),
57
58 TP_fast_assign(
59 __assign_str(driver);
60 __assign_str(timeline);
61 __entry->context = fence->context;
62 __entry->seqno = fence->seqno;
63 ),
64
65 TP_printk("driver=%s timeline=%s context=%u seqno=%u",
66 __get_str(driver), __get_str(timeline), __entry->context,
67 __entry->seqno)
68);
69
70DEFINE_EVENT(dma_fence, dma_fence_emit,
71
72 TP_PROTO(struct dma_fence *fence),
73
74 TP_ARGS(fence)
75);
76
78
79 TP_PROTO(struct dma_fence *fence),
80
81 TP_ARGS(fence)
82);
83
84DEFINE_EVENT(dma_fence, dma_fence_destroy,
85
86 TP_PROTO(struct dma_fence *fence),
87
88 TP_ARGS(fence)
89);
90
91DEFINE_EVENT(dma_fence_ops, dma_fence_enable_signal,
92
93 TP_PROTO(struct dma_fence *fence),
94
95 TP_ARGS(fence)
96);
97
98DEFINE_EVENT(dma_fence_ops, dma_fence_signaled,
99
100 TP_PROTO(struct dma_fence *fence),
101
102 TP_ARGS(fence)
103);
104
105DEFINE_EVENT(dma_fence, dma_fence_wait_start,
106
107 TP_PROTO(struct dma_fence *fence),
108
109 TP_ARGS(fence)
110);
111
112DEFINE_EVENT(dma_fence, dma_fence_wait_end,
113
114 TP_PROTO(struct dma_fence *fence),
115
116 TP_ARGS(fence)
117);
118
119#endif /* _TRACE_DMA_FENCE_H */
120
121/* This part must be outside protection */
122#include <trace/define_trace.h>
const char __rcu * dma_fence_driver_name(struct dma_fence *fence)
const char __rcu * dma_fence_timeline_name(struct dma_fence *fence)
void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops, spinlock_t *lock, u64 context, u64 seqno)
Definition dma-fence.h:136
const char *(* get_driver_name)(struct dma_fence *fence)
Definition dma-fence.h:146
const char *(* get_timeline_name)(struct dma_fence *fence)
Definition dma-fence.h:158
Definition dma-fence.h:70
const struct dma_fence_ops __rcu * ops
Definition dma-fence.h:75
u64 context
Definition dma-fence.h:99
u64 seqno
Definition dma-fence.h:100
#define TP_ARGS(...)
Definition tracepoint.h:32
#define TP_PROTO(...)
Definition tracepoint.h:31
#define DEFINE_EVENT(class, name, proto, args,...)
Definition tracepoint.h:38
#define DECLARE_EVENT_CLASS(name, proto, args, tstruct, assign, print,...)
Definition tracepoint.h:41