Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/tracing/rtla/src/common.h
29524 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#pragma once
3
4
#include "actions.h"
5
#include "timerlat_u.h"
6
#include "trace.h"
7
#include "utils.h"
8
9
/*
10
* osnoise_context - read, store, write, restore osnoise configs.
11
*/
12
struct osnoise_context {
13
int flags;
14
int ref;
15
16
char *curr_cpus;
17
char *orig_cpus;
18
19
/* 0 as init value */
20
unsigned long long orig_runtime_us;
21
unsigned long long runtime_us;
22
23
/* 0 as init value */
24
unsigned long long orig_period_us;
25
unsigned long long period_us;
26
27
/* 0 as init value */
28
long long orig_timerlat_period_us;
29
long long timerlat_period_us;
30
31
/* 0 as init value */
32
long long orig_tracing_thresh;
33
long long tracing_thresh;
34
35
/* -1 as init value because 0 is disabled */
36
long long orig_stop_us;
37
long long stop_us;
38
39
/* -1 as init value because 0 is disabled */
40
long long orig_stop_total_us;
41
long long stop_total_us;
42
43
/* -1 as init value because 0 is disabled */
44
long long orig_print_stack;
45
long long print_stack;
46
47
/* -1 as init value because 0 is off */
48
int orig_opt_irq_disable;
49
int opt_irq_disable;
50
51
/* -1 as init value because 0 is off */
52
int orig_opt_workload;
53
int opt_workload;
54
};
55
56
extern struct trace_instance *trace_inst;
57
extern int stop_tracing;
58
59
struct hist_params {
60
char no_irq;
61
char no_thread;
62
char no_header;
63
char no_summary;
64
char no_index;
65
char with_zeros;
66
int bucket_size;
67
int entries;
68
};
69
70
/*
71
* common_params - Parameters shared between timerlat_params and osnoise_params
72
*/
73
struct common_params {
74
/* trace configuration */
75
char *cpus;
76
cpu_set_t monitored_cpus;
77
struct trace_events *events;
78
int buffer_size;
79
80
/* Timing parameters */
81
int warmup;
82
long long stop_us;
83
long long stop_total_us;
84
int sleep_time;
85
int duration;
86
87
/* Scheduling parameters */
88
int set_sched;
89
struct sched_attr sched_param;
90
int cgroup;
91
char *cgroup_name;
92
int hk_cpus;
93
cpu_set_t hk_cpu_set;
94
95
/* Other parameters */
96
struct hist_params hist;
97
int output_divisor;
98
int pretty_output;
99
int quiet;
100
int user_workload;
101
int kernel_workload;
102
int user_data;
103
int aa_only;
104
105
struct actions threshold_actions;
106
struct actions end_actions;
107
struct timerlat_u_params user;
108
};
109
110
struct tool_ops;
111
112
/*
113
* osnoise_tool - osnoise based tool definition.
114
*
115
* Only the "trace" and "context" fields are used for
116
* the additional trace instances (record and aa).
117
*/
118
struct osnoise_tool {
119
struct tool_ops *ops;
120
struct trace_instance trace;
121
struct osnoise_context *context;
122
void *data;
123
struct common_params *params;
124
time_t start_time;
125
struct osnoise_tool *record;
126
struct osnoise_tool *aa;
127
};
128
129
struct tool_ops {
130
const char *tracer;
131
const char *comm_prefix;
132
struct common_params *(*parse_args)(int argc, char *argv[]);
133
struct osnoise_tool *(*init_tool)(struct common_params *params);
134
int (*apply_config)(struct osnoise_tool *tool);
135
int (*enable)(struct osnoise_tool *tool);
136
int (*main)(struct osnoise_tool *tool);
137
void (*print_stats)(struct osnoise_tool *tool);
138
void (*analyze)(struct osnoise_tool *tool, bool stopped);
139
void (*free)(struct osnoise_tool *tool);
140
};
141
142
int osnoise_set_cpus(struct osnoise_context *context, char *cpus);
143
void osnoise_restore_cpus(struct osnoise_context *context);
144
145
int osnoise_set_workload(struct osnoise_context *context, bool onoff);
146
147
void osnoise_destroy_tool(struct osnoise_tool *top);
148
struct osnoise_tool *osnoise_init_tool(char *tool_name);
149
struct osnoise_tool *osnoise_init_trace_tool(const char *tracer);
150
bool osnoise_trace_is_off(struct osnoise_tool *tool, struct osnoise_tool *record);
151
152
int common_apply_config(struct osnoise_tool *tool, struct common_params *params);
153
int top_main_loop(struct osnoise_tool *tool);
154
int hist_main_loop(struct osnoise_tool *tool);
155
156