2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
4 * Copyright (c) 2018, Matthew Macy
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 #include <sys/cdefs.h>
30 __FBSDID("$FreeBSD$");
32 #include <sys/param.h>
33 #include <sys/cpuset.h>
34 #include <sys/event.h>
35 #include <sys/queue.h>
36 #include <sys/socket.h>
38 #include <sys/sysctl.h>
40 #include <sys/ttycom.h>
67 #include <libpmcstat.h>
71 static struct option longopts[] = {
72 {"long-desc", no_argument, NULL, 'U'},
73 {"desc", no_argument, NULL, 'u'},
74 {"full", no_argument, NULL, 'f'},
83 "\t -u, desc -- short description of event\n"
84 "\t -U, long-desc -- long description of event\n"
85 "\t -f, full -- full event details\n"
90 cmd_pmc_list_events(int argc, char **argv)
92 int do_long_descr, do_descr, do_full;
95 do_long_descr = do_descr = do_full = 0;
96 while ((option = getopt_long(argc, argv, "Uuf", longopts, NULL)) != -1) {
114 if ((do_long_descr | do_descr | do_full) && argc == 0) {
115 warnx("event or event substring required when option provided\n");
119 pmc_pmu_print_counter_full(argc ? argv[0] : NULL);
120 else if (do_long_descr)
121 pmc_pmu_print_counter_desc_long(argv[0]);
123 pmc_pmu_print_counter_desc(argv[0]);
125 pmc_pmu_print_counters(argv[0]);