svn commit: r334017 - in head: lib/libpmcstat usr.sbin/pmcstat
Matt Macy
mmacy at FreeBSD.org
Tue May 22 04:45:48 UTC 2018
Author: mmacy
Date: Tue May 22 04:45:46 2018
New Revision: 334017
URL: https://svnweb.freebsd.org/changeset/base/334017
Log:
pmcstat: add option to not decode the leaf function in top mode
-I will allow the user to see the hot instruction in question
as opposed getting the name of the function
Modified:
head/lib/libpmcstat/libpmcstat.h
head/usr.sbin/pmcstat/pmcpl_callgraph.c
head/usr.sbin/pmcstat/pmcstat.c
Modified: head/lib/libpmcstat/libpmcstat.h
==============================================================================
--- head/lib/libpmcstat/libpmcstat.h Tue May 22 04:08:08 2018 (r334016)
+++ head/lib/libpmcstat/libpmcstat.h Tue May 22 04:45:46 2018 (r334017)
@@ -106,6 +106,7 @@ struct pmcstat_args {
#define FLAGS_HAS_CPUMASK 0x00040000 /* -c */
#define FLAG_HAS_DURATION 0x00080000 /* -l secs */
#define FLAG_DO_WIDE_GPROF_HC 0x00100000 /* -e */
+#define FLAG_SKIP_TOP_FN_RES 0x00200000 /* -I */
int pa_required; /* required features */
int pa_pplugin; /* pre-processing plugin */
Modified: head/usr.sbin/pmcstat/pmcpl_callgraph.c
==============================================================================
--- head/usr.sbin/pmcstat/pmcpl_callgraph.c Tue May 22 04:08:08 2018 (r334016)
+++ head/usr.sbin/pmcstat/pmcpl_callgraph.c Tue May 22 04:45:46 2018 (r334017)
@@ -473,7 +473,7 @@ pmcstat_callgraph_print(void)
static void
pmcstat_cgnode_topprint(struct pmcstat_cgnode *cg,
- int depth, uint32_t nsamples)
+ int depth __unused, uint32_t nsamples)
{
int v_attrs, vs_len, ns_len, width, len, n, nchildren;
float v;
@@ -481,15 +481,15 @@ pmcstat_cgnode_topprint(struct pmcstat_cgnode *cg,
struct pmcstat_symbol *sym;
struct pmcstat_cgnode **sortbuffer, **cgn, *pcg;
- (void) depth;
-
/* Format value. */
v = PMCPL_CG_COUNTP(cg);
snprintf(vs, sizeof(vs), "%.1f", v);
v_attrs = PMCSTAT_ATTRPERCENT(v);
+ sym = NULL;
/* Format name. */
- sym = pmcstat_symbol_search(cg->pcg_image, cg->pcg_func);
+ if (!(args.pa_flags & FLAG_SKIP_TOP_FN_RES))
+ sym = pmcstat_symbol_search(cg->pcg_image, cg->pcg_func);
if (sym != NULL) {
snprintf(ns, sizeof(ns), "%s",
pmcstat_string_unintern(sym->ps_name));
Modified: head/usr.sbin/pmcstat/pmcstat.c
==============================================================================
--- head/usr.sbin/pmcstat/pmcstat.c Tue May 22 04:08:08 2018 (r334016)
+++ head/usr.sbin/pmcstat/pmcstat.c Tue May 22 04:45:46 2018 (r334017)
@@ -500,7 +500,7 @@ main(int argc, char **argv)
CPU_COPY(&rootmask, &cpumask);
while ((option = getopt(argc, argv,
- "CD:EF:G:M:NO:P:R:S:TWa:c:def:gk:l:m:n:o:p:qr:s:t:vw:z:")) != -1)
+ "CD:EF:G:IM:NO:P:R:S:TWa:c:def:gk:l:m:n:o:p:qr:s:t:vw:z:")) != -1)
switch (option) {
case 'a': /* Annotate + callgraph */
args.pa_flags |= FLAG_DO_ANNOTATE;
@@ -569,6 +569,9 @@ main(int argc, char **argv)
args.pa_plugin = PMCSTAT_PL_GPROF;
break;
+ case 'I':
+ args.pa_flags |= FLAG_SKIP_TOP_FN_RES;
+ break;
case 'k': /* pathname to the kernel */
free(args.pa_kernel);
args.pa_kernel = strdup(optarg);
More information about the svn-src-all
mailing list