Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/tracing/rtla/src/rtla.c
26285 views
1
// SPDX-License-Identifier: GPL-2.0
2
/*
3
* Copyright (C) 2021 Red Hat Inc, Daniel Bristot de Oliveira <[email protected]>
4
*/
5
6
#include <getopt.h>
7
#include <stdlib.h>
8
#include <string.h>
9
#include <stdio.h>
10
11
#include "osnoise.h"
12
#include "timerlat.h"
13
14
/*
15
* rtla_usage - print rtla usage
16
*/
17
static void rtla_usage(int err)
18
{
19
int i;
20
21
static const char *msg[] = {
22
"",
23
"rtla version " VERSION,
24
"",
25
" usage: rtla COMMAND ...",
26
"",
27
" commands:",
28
" osnoise - gives information about the operating system noise (osnoise)",
29
" hwnoise - gives information about hardware-related noise",
30
" timerlat - measures the timer irq and thread latency",
31
"",
32
NULL,
33
};
34
35
for (i = 0; msg[i]; i++)
36
fprintf(stderr, "%s\n", msg[i]);
37
exit(err);
38
}
39
40
/*
41
* run_command - try to run a rtla tool command
42
*
43
* It returns 0 if it fails. The tool's main will generally not
44
* return as they should call exit().
45
*/
46
int run_command(int argc, char **argv, int start_position)
47
{
48
if (strcmp(argv[start_position], "osnoise") == 0) {
49
osnoise_main(argc-start_position, &argv[start_position]);
50
goto ran;
51
} else if (strcmp(argv[start_position], "hwnoise") == 0) {
52
hwnoise_main(argc-start_position, &argv[start_position]);
53
goto ran;
54
} else if (strcmp(argv[start_position], "timerlat") == 0) {
55
timerlat_main(argc-start_position, &argv[start_position]);
56
goto ran;
57
}
58
59
return 0;
60
ran:
61
return 1;
62
}
63
64
int main(int argc, char *argv[])
65
{
66
int retval;
67
68
/* is it an alias? */
69
retval = run_command(argc, argv, 0);
70
if (retval)
71
exit(0);
72
73
if (argc < 2)
74
goto usage;
75
76
if (strcmp(argv[1], "-h") == 0) {
77
rtla_usage(0);
78
} else if (strcmp(argv[1], "--help") == 0) {
79
rtla_usage(0);
80
}
81
82
retval = run_command(argc, argv, 1);
83
if (retval)
84
exit(0);
85
86
usage:
87
rtla_usage(1);
88
exit(1);
89
}
90
91