Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/samples/trace_events/trace_custom_sched.h
26285 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
3
/*
4
* Like the headers that use TRACE_EVENT(), the TRACE_CUSTOM_EVENT()
5
* needs a header that allows for multiple inclusions.
6
*
7
* Test for a unique name (here we have _TRACE_CUSTOM_SCHED_H),
8
* also allowing to continue if TRACE_CUSTOM_MULTI_READ is defined.
9
*/
10
#if !defined(_TRACE_CUSTOM_SCHED_H) || defined(TRACE_CUSTOM_MULTI_READ)
11
#define _TRACE_CUSTOM_SCHED_H
12
13
/* Include linux/trace_events.h for initial defines of TRACE_CUSTOM_EVENT() */
14
#include <linux/trace_events.h>
15
16
/*
17
* TRACE_CUSTOM_EVENT() is just like TRACE_EVENT(). The first parameter
18
* is the event name of an existing event where the TRACE_EVENT has been included
19
* in the C file before including this file.
20
*/
21
TRACE_CUSTOM_EVENT(sched_switch,
22
23
/*
24
* The TP_PROTO() and TP_ARGS must match the trace event
25
* that the custom event is using.
26
*/
27
TP_PROTO(bool preempt,
28
struct task_struct *prev,
29
struct task_struct *next,
30
unsigned int prev_state),
31
32
TP_ARGS(preempt, prev, next, prev_state),
33
34
/*
35
* The next fields are where the customization happens.
36
* The TP_STRUCT__entry() defines what will be recorded
37
* in the ring buffer when the custom event triggers.
38
*
39
* The rest is just like the TRACE_EVENT() macro except that
40
* it uses the custom entry.
41
*/
42
TP_STRUCT__entry(
43
__field( unsigned short, prev_prio )
44
__field( unsigned short, next_prio )
45
__field( pid_t, next_pid )
46
),
47
48
TP_fast_assign(
49
__entry->prev_prio = prev->prio;
50
__entry->next_pid = next->pid;
51
__entry->next_prio = next->prio;
52
),
53
54
TP_printk("prev_prio=%d next_pid=%d next_prio=%d",
55
__entry->prev_prio, __entry->next_pid, __entry->next_prio)
56
)
57
58
59
TRACE_CUSTOM_EVENT(sched_waking,
60
61
TP_PROTO(struct task_struct *p),
62
63
TP_ARGS(p),
64
65
TP_STRUCT__entry(
66
__field( pid_t, pid )
67
__field( unsigned short, prio )
68
),
69
70
TP_fast_assign(
71
__entry->pid = p->pid;
72
__entry->prio = p->prio;
73
),
74
75
TP_printk("pid=%d prio=%d", __entry->pid, __entry->prio)
76
)
77
#endif
78
/*
79
* Just like the headers that create TRACE_EVENTs, the below must
80
* be outside the protection of the above #if block.
81
*/
82
83
/*
84
* It is required that the Makefile includes:
85
* CFLAGS_<c_file>.o := -I$(src)
86
*/
87
#undef TRACE_INCLUDE_PATH
88
#undef TRACE_INCLUDE_FILE
89
#define TRACE_INCLUDE_PATH .
90
91
/*
92
* It is requred that the TRACE_INCLUDE_FILE be the same
93
* as this file without the ".h".
94
*/
95
#define TRACE_INCLUDE_FILE trace_custom_sched
96
#include <trace/define_custom_trace.h>
97
98