rtla.c (1607B)
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2021 Red Hat Inc, Daniel Bristot de Oliveira <bristot@kernel.org> 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 */ 17static void rtla_usage(void) 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 " timerlat - measures the timer irq and thread latency", 30 "", 31 NULL, 32 }; 33 34 for (i = 0; msg[i]; i++) 35 fprintf(stderr, "%s\n", msg[i]); 36 exit(1); 37} 38 39/* 40 * run_command - try to run a rtla tool command 41 * 42 * It returns 0 if it fails. The tool's main will generally not 43 * return as they should call exit(). 44 */ 45int run_command(int argc, char **argv, int start_position) 46{ 47 if (strcmp(argv[start_position], "osnoise") == 0) { 48 osnoise_main(argc-start_position, &argv[start_position]); 49 goto ran; 50 } else if (strcmp(argv[start_position], "timerlat") == 0) { 51 timerlat_main(argc-start_position, &argv[start_position]); 52 goto ran; 53 } 54 55 return 0; 56ran: 57 return 1; 58} 59 60int main(int argc, char *argv[]) 61{ 62 int retval; 63 64 /* is it an alias? */ 65 retval = run_command(argc, argv, 0); 66 if (retval) 67 exit(0); 68 69 if (argc < 2) 70 goto usage; 71 72 if (strcmp(argv[1], "-h") == 0) { 73 rtla_usage(); 74 exit(0); 75 } else if (strcmp(argv[1], "--help") == 0) { 76 rtla_usage(); 77 exit(0); 78 } 79 80 retval = run_command(argc, argv, 1); 81 if (retval) 82 exit(0); 83 84usage: 85 rtla_usage(); 86 exit(1); 87}