Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/samples/trace_events/trace_custom_sched.c
26278 views
1
// SPDX-License-Identifier: GPL-2.0
2
/*
3
* event tracer
4
*
5
* Copyright (C) 2022 Google Inc, Steven Rostedt <[email protected]>
6
*/
7
8
#define pr_fmt(fmt) fmt
9
10
#include <linux/trace_events.h>
11
#include <linux/module.h>
12
#include <linux/sched.h>
13
14
/*
15
* Must include the event header that the custom event will attach to,
16
* from the C file, and not in the custom header file.
17
*/
18
#include <trace/events/sched.h>
19
20
/* Declare CREATE_CUSTOM_TRACE_EVENTS before including custom header */
21
#define CREATE_CUSTOM_TRACE_EVENTS
22
23
#include "trace_custom_sched.h"
24
25
/*
26
* As the trace events are not exported to modules, the use of
27
* for_each_kernel_tracepoint() is needed to find the trace event
28
* to attach to. The fct() function below, is a callback that
29
* will be called for every event.
30
*
31
* Helper functions are created by the TRACE_CUSTOM_EVENT() macro
32
* update the event. Those are of the form:
33
*
34
* trace_custom_event_<event>_update()
35
*
36
* Where <event> is the event to attach.
37
*/
38
static void fct(struct tracepoint *tp, void *priv)
39
{
40
trace_custom_event_sched_switch_update(tp);
41
trace_custom_event_sched_waking_update(tp);
42
}
43
44
static int __init trace_sched_init(void)
45
{
46
for_each_kernel_tracepoint(fct, NULL);
47
return 0;
48
}
49
50
static void __exit trace_sched_exit(void)
51
{
52
}
53
54
module_init(trace_sched_init);
55
module_exit(trace_sched_exit);
56
57
MODULE_AUTHOR("Steven Rostedt");
58
MODULE_DESCRIPTION("Custom scheduling events");
59
MODULE_LICENSE("GPL");
60
61