All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Wang Nan <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: wangnan0@huawei.com, hpa@zytor.com,
	masami.hiramatsu.pt@hitachi.com, namhyung@kernel.org,
	tglx@linutronix.de, jolsa@kernel.org, acme@redhat.com,
	linux-kernel@vger.kernel.org, hekuang@huawei.com,
	lizefan@huawei.com, mingo@kernel.org
Subject: [tip:perf/urgent] perf evlist: Add API to pause/resume
Date: Mon, 23 May 2016 22:48:02 -0700	[thread overview]
Message-ID: <tip-65aea2338765da1a58cc26eeb84d72308492ecb5@git.kernel.org> (raw)
In-Reply-To: <1463987628-163563-2-git-send-email-wangnan0@huawei.com>

Commit-ID:  65aea2338765da1a58cc26eeb84d72308492ecb5
Gitweb:     http://git.kernel.org/tip/65aea2338765da1a58cc26eeb84d72308492ecb5
Author:     Wang Nan <wangnan0@huawei.com>
AuthorDate: Mon, 23 May 2016 07:13:38 +0000
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 23 May 2016 18:22:00 -0300

perf evlist: Add API to pause/resume

perf_evlist__toggle_{pause,resume}() are introduced to pause/resume
events in an evlist. Utilize PERF_EVENT_IOC_PAUSE_OUTPUT ioctl.

Following commits use them to ensure overwrite ring buffer is paused
before reading.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1463987628-163563-2-git-send-email-wangnan0@huawei.com
Signed-off-by: He Kuang <hekuang@huawei.com>
[ Return -1, like all other ioctl() usage in evlist.c, rename 'pause'
  arg to avoid breaking the build on ubuntu 12.04 and other old systems ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/evlist.c | 27 +++++++++++++++++++++++++++
 tools/perf/util/evlist.h |  2 ++
 2 files changed, 29 insertions(+)

diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 1a370db..904523a 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -679,6 +679,33 @@ static struct perf_evsel *perf_evlist__event2evsel(struct perf_evlist *evlist,
 	return NULL;
 }
 
+static int perf_evlist__set_paused(struct perf_evlist *evlist, bool value)
+{
+	int i;
+
+	for (i = 0; i < evlist->nr_mmaps; i++) {
+		int fd = evlist->mmap[i].fd;
+		int err;
+
+		if (fd < 0)
+			continue;
+		err = ioctl(fd, PERF_EVENT_IOC_PAUSE_OUTPUT, value ? 1 : 0);
+		if (err)
+			return err;
+	}
+	return 0;
+}
+
+int perf_evlist__pause(struct perf_evlist *evlist)
+{
+	return perf_evlist__set_paused(evlist, true);
+}
+
+int perf_evlist__resume(struct perf_evlist *evlist)
+{
+	return perf_evlist__set_paused(evlist, false);
+}
+
 /* When check_messup is true, 'end' must points to a good entry */
 static union perf_event *
 perf_mmap__read(struct perf_mmap *md, bool check_messup, u64 start,
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index 0d165b1..97090b7 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -136,6 +136,8 @@ void perf_evlist__mmap_read_catchup(struct perf_evlist *evlist, int idx);
 
 void perf_evlist__mmap_consume(struct perf_evlist *evlist, int idx);
 
+int perf_evlist__pause(struct perf_evlist *evlist);
+int perf_evlist__resume(struct perf_evlist *evlist);
 int perf_evlist__open(struct perf_evlist *evlist);
 void perf_evlist__close(struct perf_evlist *evlist);
 

  parent reply	other threads:[~2016-05-24  5:49 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-23  7:13 [PATCH v3 00/11] perf tools: Support overwritable ring buffer Wang Nan
2016-05-23  7:13 ` [PATCH v3 01/11] perf tools: Add API to pause/resume a evlist Wang Nan
2016-05-23 21:24   ` Arnaldo Carvalho de Melo
2016-05-24  5:48   ` tip-bot for Wang Nan [this message]
2016-05-23  7:13 ` [PATCH v3 02/11] perf record: Prevent reading invalid data in record__mmap_read Wang Nan
2016-05-24  5:48   ` [tip:perf/urgent] " tip-bot for Wang Nan
2016-05-23  7:13 ` [PATCH v3 03/11] perf record: Rename variable to make code clear Wang Nan
2016-05-24  5:48   ` [tip:perf/urgent] " tip-bot for Wang Nan
2016-05-23  7:13 ` [PATCH v3 04/11] perf record: Read from backward ring buffer Wang Nan
2016-05-24  5:49   ` [tip:perf/urgent] " tip-bot for Wang Nan
2016-05-23  7:13 ` [PATCH v3 05/11] perf evlist: Introduce aux perf evlist Wang Nan
2016-05-23 19:48   ` Arnaldo Carvalho de Melo
2016-05-23  7:13 ` [PATCH v3 06/11] perf tools: Don't poll and mmap overwritable events Wang Nan
2016-05-23  7:13 ` [PATCH v3 07/11] perf tools: Enable overwrite settings Wang Nan
2016-05-23  7:13 ` [PATCH v3 08/11] perf record: Introduce rec->overwrite_evlist for overwritable events Wang Nan
2016-05-23  7:13 ` [PATCH v3 09/11] perf record: Toggle overwrite ring buffer for reading Wang Nan
2016-05-23  7:13 ` [PATCH v3 10/11] perf tools: Don't warn about out of order event if write_backward is used Wang Nan
2016-05-23  7:13 ` [PATCH v3 11/11] perf tools: Check write_backward during evlist config Wang Nan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tip-65aea2338765da1a58cc26eeb84d72308492ecb5@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=acme@redhat.com \
    --cc=hekuang@huawei.com \
    --cc=hpa@zytor.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=lizefan@huawei.com \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=wangnan0@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.