linux/tools/perf/builtin-list.c
<<
>>
Prefs
   1/*
   2 * builtin-list.c
   3 *
   4 * Builtin list command: list all event types
   5 *
   6 * Copyright (C) 2009, Thomas Gleixner <tglx@linutronix.de>
   7 * Copyright (C) 2008-2009, Red Hat Inc, Ingo Molnar <mingo@redhat.com>
   8 * Copyright (C) 2011, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
   9 */
  10#include "builtin.h"
  11
  12#include "perf.h"
  13
  14#include "util/parse-events.h"
  15#include "util/cache.h"
  16
  17int cmd_list(int argc, const char **argv, const char *prefix __used)
  18{
  19        setup_pager();
  20
  21        if (argc == 1)
  22                print_events(NULL);
  23        else {
  24                int i;
  25
  26                for (i = 1; i < argc; ++i) {
  27                        if (i > 1)
  28                                putchar('\n');
  29                        if (strncmp(argv[i], "tracepoint", 10) == 0)
  30                                print_tracepoint_events(NULL, NULL);
  31                        else if (strcmp(argv[i], "hw") == 0 ||
  32                                 strcmp(argv[i], "hardware") == 0)
  33                                print_events_type(PERF_TYPE_HARDWARE);
  34                        else if (strcmp(argv[i], "sw") == 0 ||
  35                                 strcmp(argv[i], "software") == 0)
  36                                print_events_type(PERF_TYPE_SOFTWARE);
  37                        else if (strcmp(argv[i], "cache") == 0 ||
  38                                 strcmp(argv[i], "hwcache") == 0)
  39                                print_hwcache_events(NULL);
  40                        else {
  41                                char *sep = strchr(argv[i], ':'), *s;
  42                                int sep_idx;
  43
  44                                if (sep == NULL) {
  45                                        print_events(argv[i]);
  46                                        continue;
  47                                }
  48                                sep_idx = sep - argv[i];
  49                                s = strdup(argv[i]);
  50                                if (s == NULL)
  51                                        return -1;
  52
  53                                s[sep_idx] = '\0';
  54                                print_tracepoint_events(s, s + sep_idx + 1);
  55                                free(s);
  56                        }
  57                }
  58        }
  59        return 0;
  60}
  61
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.