From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752249AbbC0OcR (ORCPT ); Fri, 27 Mar 2015 10:32:17 -0400 Received: from bombadil.infradead.org ([198.137.202.9]:50887 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751025AbbC0OcP (ORCPT ); Fri, 27 Mar 2015 10:32:15 -0400 Date: Fri, 27 Mar 2015 15:32:01 +0100 From: Peter Zijlstra To: tglx@linutronix.de, acme@redhat.com, jolsa@redhat.com, eranian@google.com, torvalds@linux-foundation.org, linux-kernel@vger.kernel.org, john.stultz@linaro.org, hpa@zytor.com, dsahern@gmail.com, akpm@linux-foundation.org, mingo@kernel.org Subject: [PATCH] perf, record: Add clockid parameter Message-ID: <20150327143201.GG21418@twins.programming.kicks-ass.net> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 27, 2015 at 04:48:08AM -0700, tip-bot for Peter Zijlstra wrote: > perf: Add per event clockid support And here the accompanying userspace; which I'd totally forgotten about. XXX: do we want to store the clockid in the data file as well, such that we can verify at perf-inject time the clocks match with our expectations? --- Subject: perf, record: Add clockid parameter Teach perf-record about the new perf_event_attr::{use_clockid, clockid} fields. Add a simple parameter to set the clock (if any) to be used for the events to be recorded into the data file. Cc: Arnaldo Carvalho de Melo Signed-off-by: Peter Zijlstra (Intel) --- tools/perf/builtin-record.c | 3 +++ tools/perf/perf.h | 1 + tools/perf/util/evsel.c | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 18aad239b401..9d4ed884b1c8 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -739,6 +739,7 @@ static struct record record = { .uses_mmap = true, .default_per_cpu = true, }, + .clockid = -1, }, .tool = { .sample = process_sample_event, @@ -842,6 +843,8 @@ struct option __record_options[] = { "Sample machine registers on interrupt"), OPT_BOOLEAN(0, "running-time", &record.opts.running_time, "Record running/enabled time of read (:S) events"), + OPT_INTEGER('k', "clockid", &record.opts.clockid, + "clockid to use for events"), OPT_END() }; diff --git a/tools/perf/perf.h b/tools/perf/perf.h index c38a085a5571..275c0c58fbbe 100644 --- a/tools/perf/perf.h +++ b/tools/perf/perf.h @@ -62,6 +62,7 @@ struct record_opts { u64 user_interval; bool sample_transaction; unsigned initial_delay; + clockid_t clockid; }; struct option; diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 358e5954baa8..309208b16632 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -761,6 +761,11 @@ void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts) attr->disabled = 0; attr->enable_on_exec = 0; } + + if (opts->clockid >= 0) { + attr->use_clockid = 1; + attr->clockid = opts->clockid; + } } static int perf_evsel__alloc_fd(struct perf_evsel *evsel, int ncpus, int nthreads)