All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, Namhyung Kim <namhyung@kernel.org>,
	Andi Kleen <andi@firstfloor.org>, David Ahern <dsahern@gmail.com>,
	Jiri Olsa <jolsa@kernel.org>, Minchan Kim <minchan@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 07/10] perf callchain: Introduce callchain_cursor__copy()
Date: Wed,  7 Dec 2016 13:53:32 -0300	[thread overview]
Message-ID: <20161207165335.22835-8-acme@kernel.org> (raw)
In-Reply-To: <20161207165335.22835-1-acme@kernel.org>

From: Namhyung Kim <namhyung@kernel.org>

The callchain_cursor__copy() function is to save current callchain
captured by a cursor.  It'll be used to keep callchains when switching
to idle task for each cpu.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20161206034010.6499-3-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/callchain.c | 27 +++++++++++++++++++++++++++
 tools/perf/util/callchain.h |  3 +++
 2 files changed, 30 insertions(+)

diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
index 823befd8209a..42922512c1c6 100644
--- a/tools/perf/util/callchain.c
+++ b/tools/perf/util/callchain.c
@@ -1234,3 +1234,30 @@ int callchain_node__make_parent_list(struct callchain_node *node)
 	}
 	return -ENOMEM;
 }
+
+int callchain_cursor__copy(struct callchain_cursor *dst,
+			   struct callchain_cursor *src)
+{
+	int rc = 0;
+
+	callchain_cursor_reset(dst);
+	callchain_cursor_commit(src);
+
+	while (true) {
+		struct callchain_cursor_node *node;
+
+		node = callchain_cursor_current(src);
+		if (node == NULL)
+			break;
+
+		rc = callchain_cursor_append(dst, node->ip, node->map, node->sym,
+					     node->branch, &node->branch_flags,
+					     node->nr_loop_iter, node->samples);
+		if (rc)
+			break;
+
+		callchain_cursor_advance(src);
+	}
+
+	return rc;
+}
diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h
index d9c70dccf06a..35c8e379530f 100644
--- a/tools/perf/util/callchain.h
+++ b/tools/perf/util/callchain.h
@@ -216,6 +216,9 @@ static inline void callchain_cursor_advance(struct callchain_cursor *cursor)
 	cursor->pos++;
 }
 
+int callchain_cursor__copy(struct callchain_cursor *dst,
+			   struct callchain_cursor *src);
+
 struct option;
 struct hist_entry;
 
-- 
2.9.3

  parent reply	other threads:[~2016-12-07 16:53 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-07 16:53 [GIT PULL 00/10] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-12-07 16:53 ` [PATCH 01/10] perf build: Check LLVM version in feature check Arnaldo Carvalho de Melo
2016-12-07 16:53 ` [PATCH 02/10] perf tools: Move PERF-VERSION-FILE target into rules area Arnaldo Carvalho de Melo
2016-12-07 16:53 ` [PATCH 03/10] perf tools: Force fixdep compilation at the start of the build Arnaldo Carvalho de Melo
2016-12-07 16:53 ` [PATCH 04/10] perf tools: Move perf build related variables under non fixdep leg Arnaldo Carvalho de Melo
2016-12-07 16:53 ` [PATCH 05/10] perf sched timehist: Improve error message when analyzing wrong file Arnaldo Carvalho de Melo
2016-12-07 16:53 ` [PATCH 06/10] perf sched: Cleanup option processing Arnaldo Carvalho de Melo
2016-12-07 16:53 ` Arnaldo Carvalho de Melo [this message]
2016-12-07 16:53 ` [PATCH 08/10] perf sched timehist: Handle zero sample->tid properly Arnaldo Carvalho de Melo
2016-12-07 16:53 ` [PATCH 09/10] perf sched timehist: Cleanup idle_max_cpu handling Arnaldo Carvalho de Melo
2016-12-07 16:53 ` [PATCH 10/10] perf tools: Explicitly document that --children is enabled by default Arnaldo Carvalho de Melo
2016-12-07 18:17 ` [GIT PULL 00/10] perf/core improvements and fixes Ingo Molnar

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=20161207165335.22835-8-acme@kernel.org \
    --to=acme@kernel.org \
    --cc=acme@redhat.com \
    --cc=andi@firstfloor.org \
    --cc=dsahern@gmail.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=minchan@kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /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.