lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 30 Oct 2012 17:34:12 -0700 From: Andi Kleen <andi@...stfloor.org> To: linux-kernel@...r.kernel.org Cc: acme@...hat.com, peterz@...radead.org, jolsa@...hat.com, eranian@...gle.com, mingo@...nel.org, namhyung@...nel.org, Andi Kleen <ak@...ux.intel.com> Subject: [PATCH 21/32] perf, tools: Add support for record transaction flags v2 From: Andi Kleen <ak@...ux.intel.com> Add the glue in the user tools to record transaction flags with --transaction (-T was already taken) and dump them. Followon patches will use them. v2: Fix manpage Signed-off-by: Andi Kleen <ak@...ux.intel.com> --- tools/perf/Documentation/perf-record.txt | 4 +++- tools/perf/builtin-record.c | 2 ++ tools/perf/perf.h | 1 + tools/perf/util/event.h | 1 + tools/perf/util/evsel.c | 9 +++++++++ tools/perf/util/session.c | 3 +++ 6 files changed, 19 insertions(+), 1 deletions(-) diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt index fd4ac81..becccf7 100644 --- a/tools/perf/Documentation/perf-record.txt +++ b/tools/perf/Documentation/perf-record.txt @@ -185,12 +185,14 @@ is enabled for all the sampling events. The sampled branch type is the same for The various filters must be specified as a comma separated list: --branch-filter any_ret,u,k Note that this feature may not be available on all processors. --W:: --weight:: Enable weightened sampling. An additional weight is recorded per sample and can be displayed with the weight and local_weight sort keys. This currently works for TSX abort events and some memory events in precise mode on modern Intel CPUs. +--transaction:: +Record transaction flags for transaction related events. + SEE ALSO -------- linkperf:perf-stat[1], linkperf:perf-list[1] diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 5ed43f2..5b8e185 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -1046,6 +1046,8 @@ const struct option record_options[] = { parse_branch_stack), OPT_BOOLEAN('W', "weight", &record.opts.sample_weight, "sample by weight (on special events only)"), + OPT_BOOLEAN(0, "transaction", &record.opts.sample_transaction, + "sample transaction flags (special events only)"), OPT_END() }; diff --git a/tools/perf/perf.h b/tools/perf/perf.h index 7d3173f..4ae529c 100644 --- a/tools/perf/perf.h +++ b/tools/perf/perf.h @@ -247,6 +247,7 @@ struct perf_record_opts { u64 default_interval; u64 user_interval; u16 stack_dump_size; + bool sample_transaction; }; #endif diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h index a97fbbe..84b070d 100644 --- a/tools/perf/util/event.h +++ b/tools/perf/util/event.h @@ -89,6 +89,7 @@ struct perf_sample { u64 stream_id; u64 period; u64 weight; + u64 transaction; u32 cpu; u32 raw_size; void *raw_data; diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 3800fb5..5c9790d 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -448,6 +448,9 @@ void perf_evsel__config(struct perf_evsel *evsel, struct perf_record_opts *opts, if (opts->sample_weight) attr->sample_type |= PERF_SAMPLE_WEIGHT; + if (opts->sample_transaction) + attr->sample_type |= PERF_SAMPLE_TRANSACTION; + if (opts->call_graph) { attr->sample_type |= PERF_SAMPLE_CALLCHAIN; @@ -951,6 +954,12 @@ int perf_evsel__parse_sample(struct perf_evsel *evsel, union perf_event *event, array++; } + data->transaction = 0; + if (type & PERF_SAMPLE_TRANSACTION) { + data->transaction = *array; + array++; + } + if (type & PERF_SAMPLE_READ) { fprintf(stderr, "PERF_SAMPLE_READ is unsupported for now\n"); return -1; diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 175dde3..6757345 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -1009,6 +1009,9 @@ static void dump_sample(struct perf_evsel *evsel, union perf_event *event, if (sample_type & PERF_SAMPLE_WEIGHT) printf("... weight: %" PRIu64 "\n", sample->weight); + + if (sample_type & PERF_SAMPLE_TRANSACTION) + printf("... transaction: %" PRIx64 "\n", sample->transaction); } static struct machine * -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists