]> Git Repo - linux.git/blob - tools/tracing/rtla/src/rtla.c
Linux 6.14-rc3
[linux.git] / tools / tracing / rtla / src / rtla.c
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 }
This page took 0.036041 seconds and 4 git commands to generate.