Author: mmacy
Date: Fri Jun  1 00:45:53 2018
New Revision: 334464
URL: https://svnweb.freebsd.org/changeset/base/334464

Log:
  libpmc: allow substring for list and add function for printing event details

Modified:
  head/lib/libpmc/libpmc_pmu_util.c   (contents, props changed)
  head/lib/libpmc/pmc.h
  head/usr.sbin/pmcstat/pmcstat.c

Modified: head/lib/libpmc/libpmc_pmu_util.c
==============================================================================
--- head/lib/libpmc/libpmc_pmu_util.c   Fri Jun  1 00:45:48 2018        
(r334463)
+++ head/lib/libpmc/libpmc_pmu_util.c   Fri Jun  1 00:45:53 2018        
(r334464)
@@ -235,7 +235,7 @@ pmc_pmu_enabled(void)
 }
 
 void
-pmc_pmu_print_counters(void)
+pmc_pmu_print_counters(const char *event_name)
 {
        const struct pmu_events_map *pme;
        const struct pmu_event *pe;
@@ -253,6 +253,8 @@ pmc_pmu_print_counters(void)
        for (pe = pme->table; pe->name || pe->desc || pe->event; pe++) {
                if (pe->name == NULL)
                        continue;
+               if (event_name != NULL && strcasestr(pe->name, event_name) == 
NULL)
+                       continue;
                printf("\t%s\n", pe->name);
                if (do_debug)
                        pmu_parse_event(&ped, pe->event);
@@ -296,6 +298,43 @@ pmc_pmu_print_counter_desc_long(const char *ev)
        }
 }
 
+void
+pmc_pmu_print_counter_full(const char *ev)
+{
+       const struct pmu_events_map *pme;
+       const struct pmu_event *pe;
+
+       if ((pme = pmu_events_map_get()) == NULL)
+               return;
+       for (pe = pme->table; pe->name || pe->desc || pe->event; pe++) {
+               if (pe->name == NULL)
+                       continue;
+               if (strcasestr(pe->name, ev) == NULL)
+                       continue;
+               printf("name: %s\n", pe->name);
+               if (pe->long_desc != NULL)
+                       printf("desc: %s\n", pe->long_desc);
+               else if (pe->desc != NULL)
+                       printf("desc: %s\n", pe->desc);
+               if (pe->event != NULL)
+                       printf("event: %s\n", pe->event);
+               if (pe->topic != NULL)
+                       printf("topic: %s\n", pe->topic);
+               if (pe->pmu != NULL)
+                       printf("pmu: %s\n", pe->pmu);
+               if (pe->unit != NULL)
+                       printf("unit: %s\n", pe->unit);
+               if (pe->perpkg != NULL)
+                       printf("perpkg: %s\n", pe->perpkg);
+               if (pe->metric_expr != NULL)
+                       printf("metric_expr: %s\n", pe->metric_expr);
+               if (pe->metric_name != NULL)
+                       printf("metric_name: %s\n", pe->metric_name);
+               if (pe->metric_group != NULL)
+                       printf("metric_group: %s\n", pe->metric_group);
+       }
+}
+
 int
 pmc_pmu_pmcallocate(const char *event_name, struct pmc_op_pmcallocate *pm)
 {
@@ -394,7 +433,7 @@ pmc_pmu_sample_rate_get(const char *event_name __unuse
 }
 
 void
-pmc_pmu_print_counters(void)
+pmc_pmu_print_counters(const char *event_name __unused)
 {
 }
 
@@ -406,6 +445,12 @@ pmc_pmu_print_counter_desc(const char *e __unused)
 void
 pmc_pmu_print_counter_desc_long(const char *e __unused)
 {
+}
+
+void
+pmc_pmu_print_counter_full(const char *e __unused)
+{
+
 }
 
 int

Modified: head/lib/libpmc/pmc.h
==============================================================================
--- head/lib/libpmc/pmc.h       Fri Jun  1 00:45:48 2018        (r334463)
+++ head/lib/libpmc/pmc.h       Fri Jun  1 00:45:53 2018        (r334464)
@@ -114,9 +114,10 @@ int        pmc_event_names_of_class(enum pmc_class _cl, 
const
     int *_nevents);
 
 int pmc_pmu_enabled(void);
-void pmc_pmu_print_counters(void);
+void pmc_pmu_print_counters(const char *);
 void pmc_pmu_print_counter_desc(const char *);
 void pmc_pmu_print_counter_desc_long(const char *);
+void pmc_pmu_print_counter_full(const char *);
 uint64_t pmc_pmu_sample_rate_get(const char *);
 int pmc_pmu_pmcallocate(const char *, struct pmc_op_pmcallocate *);
 const char *pmc_pmu_event_get_by_idx(int idx);

Modified: head/usr.sbin/pmcstat/pmcstat.c
==============================================================================
--- head/usr.sbin/pmcstat/pmcstat.c     Fri Jun  1 00:45:48 2018        
(r334463)
+++ head/usr.sbin/pmcstat/pmcstat.c     Fri Jun  1 00:45:53 2018        
(r334464)
@@ -820,7 +820,7 @@ main(int argc, char **argv)
                pmc_pmu_enabled() == 0)
                        errx(EX_USAGE, "pmu features not supported on host or 
hwpmc not loaded");
        if (do_listcounters) {
-               pmc_pmu_print_counters();
+               pmc_pmu_print_counters(NULL);
        } else if (do_descr) {
                pmc_pmu_print_counter_desc(event);
        } else if (do_long_descr) {
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to