mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>,
	Arun Sharma <asharma@fb.com>,
	Benjamin Redelings <benjamin.redelings@nescent.org>,
	Corey Ashford <cjashfor@linux.vnet.ibm.com>,
	Cyrill Gorcunov <gorcunov@openvz.org>,
	"Frank Ch. Eigler" <fche@redhat.com>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Ingo Molnar <mingo@elte.hu>,
	Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
	Paul Mackerras <paulus@samba.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Robert Richter <robert.richter@amd.com>,
	Stephane Eranian <eranian@google.com>,
	Tom Zanussi <tzanussi@gmail.com>,
	Ulrich Drepper <drepper@gmail.com>, Jiri Olsa <jolsa@redhat.com>
Subject: [PATCH 04/12] perf: Add perf_output_skip function to skip bytes in sample
Date: Tue,  7 Aug 2012 15:20:39 +0200	[thread overview]
Message-ID: <1344345647-11536-5-git-send-email-jolsa@redhat.com> (raw)
In-Reply-To: <1344345647-11536-1-git-send-email-jolsa@redhat.com>

Introducing perf_output_skip function to be able to skip data
within the perf ring buffer.

When writing data into perf ring buffer we first reserve needed
place in ring buffer and then copy the actual data.

There's a possibility we won't be able to fill all the reserved
size with data, so we need a way to skip the remaining bytes.

This is going to be useful when storing the user stack dump,
where we might end up with less data than we originally requested.

Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Cc: Arun Sharma <asharma@fb.com>
Cc: Benjamin Redelings <benjamin.redelings@nescent.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Frank Ch. Eigler <fche@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
Cc: Ulrich Drepper <drepper@gmail.com>
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
---
 include/linux/perf_event.h  | 2 ++
 kernel/events/internal.h    | 4 ++++
 kernel/events/ring_buffer.c | 6 ++++++
 3 files changed, 12 insertions(+)

diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index d41394a..8a73f75 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -1321,6 +1321,8 @@ extern int perf_output_begin(struct perf_output_handle *handle,
 extern void perf_output_end(struct perf_output_handle *handle);
 extern unsigned int perf_output_copy(struct perf_output_handle *handle,
 			     const void *buf, unsigned int len);
+extern unsigned int perf_output_skip(struct perf_output_handle *handle,
+				     unsigned int len);
 extern int perf_swevent_get_recursion_context(void);
 extern void perf_swevent_put_recursion_context(int rctx);
 extern void perf_event_enable(struct perf_event *event);
diff --git a/kernel/events/internal.h b/kernel/events/internal.h
index 7fd5408..ce7bdfc 100644
--- a/kernel/events/internal.h
+++ b/kernel/events/internal.h
@@ -114,6 +114,10 @@ static inline int memcpy_common(void *dst, const void *src, size_t n)
 
 DEFINE_OUTPUT_COPY(__output_copy, memcpy_common)
 
+#define MEMCPY_SKIP(dst, src, n) (n)
+
+DEFINE_OUTPUT_COPY(__output_skip, MEMCPY_SKIP)
+
 #ifndef arch_perf_out_copy_user
 #define arch_perf_out_copy_user __copy_from_user_inatomic
 #endif
diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c
index b4c2ad3..23cb34f 100644
--- a/kernel/events/ring_buffer.c
+++ b/kernel/events/ring_buffer.c
@@ -188,6 +188,12 @@ unsigned int perf_output_copy(struct perf_output_handle *handle,
 	return __output_copy(handle, buf, len);
 }
 
+unsigned int perf_output_skip(struct perf_output_handle *handle,
+			      unsigned int len)
+{
+	return __output_skip(handle, NULL, len);
+}
+
 void perf_output_end(struct perf_output_handle *handle)
 {
 	perf_output_put_handle(handle);
-- 
1.7.11.2


  parent reply	other threads:[~2012-08-07 13:21 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-07 13:20 [PATCHv10 00/12] perf: Add backtrace post dwarf unwind Jiri Olsa
2012-08-07 13:20 ` [PATCH 01/12] perf: Unified API to record selective sets of arch registers Jiri Olsa
2012-08-21 15:45   ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 02/12] perf: Add ability to attach user level registers dump to sample Jiri Olsa
2012-08-21 15:46   ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 03/12] perf: Factor __output_copy to be usable with specific copy function Jiri Olsa
2012-08-21 15:47   ` [tip:perf/core] " tip-bot for Frederic Weisbecker
2012-08-07 13:20 ` Jiri Olsa [this message]
2012-08-21 15:48   ` [tip:perf/core] perf: Add perf_output_skip function to skip bytes in sample tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 05/12] perf: Add ability to attach user stack dump to sample Jiri Olsa
2012-08-21 15:49   ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-21 17:11     ` Peter Zijlstra
2012-08-22  8:35       ` [PATCH] perf: Keep the perf_event_attr on version 3 Jiri Olsa
2012-08-22 18:18         ` Arnaldo Carvalho de Melo
2012-08-22 18:21           ` Peter Zijlstra
2012-08-27 16:57         ` [tip:perf/core] perf tools: " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 06/12] perf: Add attribute to filter out callchains Jiri Olsa
2012-08-21 15:50   ` [tip:perf/core] " tip-bot for Frederic Weisbecker
2012-08-07 13:20 ` [PATCH 07/12] perf tools: Adding PERF_ATTR_SIZE_VER2 to the header swap check Jiri Olsa
2012-08-21 15:51   ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-21 17:12     ` Peter Zijlstra
2012-08-22  8:31       ` Jiri Olsa
2012-08-07 13:20 ` [PATCH 08/12] perf tools: Add interface to arch registers sets Jiri Olsa
2012-08-21 15:52   ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 09/12] perf tools: Add libunwind dependency for DWARF CFI unwinding Jiri Olsa
2012-08-21 15:53   ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 10/12] perf tools: Support user regs and stack in sample parsing Jiri Olsa
2012-08-21 15:54   ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 11/12] perf tools: Support for DWARF CFI unwinding on post processing Jiri Olsa
2012-08-21 15:55   ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 12/12] perf tools: Support for DWARF mode callchain Jiri Olsa
2012-08-21 15:55   ` [tip:perf/core] " tip-bot for Jiri Olsa

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=1344345647-11536-5-git-send-email-jolsa@redhat.com \
    --to=jolsa@redhat.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@ghostprotocols.net \
    --cc=asharma@fb.com \
    --cc=benjamin.redelings@nescent.org \
    --cc=cjashfor@linux.vnet.ibm.com \
    --cc=drepper@gmail.com \
    --cc=eranian@google.com \
    --cc=fche@redhat.com \
    --cc=fweisbec@gmail.com \
    --cc=gorcunov@openvz.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mingo@elte.hu \
    --cc=paulus@samba.org \
    --cc=robert.richter@amd.com \
    --cc=tzanussi@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®