* [tip:perf/core] perf: Optimize perf_output_begin() -- address calculation
@ 2013-11-06 13:19 tip-bot for Peter Zijlstra
0 siblings, 0 replies; only message in thread
From: tip-bot for Peter Zijlstra @ 2013-11-06 13:19 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, anton, mathieu.desnoyers, hpa, mingo, michael,
peterz, vince, paulmck, benh, fweisbec, oleg, VICTORK, tglx,
mikey
Commit-ID: 524feca5e9da9e5f9e5aa5d5613b1d762db9509e
Gitweb: http://git.kernel.org/tip/524feca5e9da9e5f9e5aa5d5613b1d762db9509e
Author: Peter Zijlstra <peterz@infradead.org>
AuthorDate: Thu, 31 Oct 2013 17:36:25 +0100
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Wed, 6 Nov 2013 12:34:22 +0100
perf: Optimize perf_output_begin() -- address calculation
Rewrite the handle address calculation code to be clearer.
Saves 8 bytes on x86_64-defconfig.
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Michael Ellerman <michael@ellerman.id.au>
Cc: Michael Neuling <mikey@neuling.org>
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Cc: james.hogan@imgtec.com
Cc: Vince Weaver <vince@deater.net>
Cc: Victor Kaplansky <VICTORK@il.ibm.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Anton Blanchard <anton@samba.org>
Link: http://lkml.kernel.org/n/tip-3trb2n2henb9m27tncef3ag7@git.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
kernel/events/ring_buffer.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c
index e4d70f3..c52a32f 100644
--- a/kernel/events/ring_buffer.c
+++ b/kernel/events/ring_buffer.c
@@ -105,7 +105,7 @@ int perf_output_begin(struct perf_output_handle *handle,
{
struct ring_buffer *rb;
unsigned long tail, offset, head;
- int have_lost;
+ int have_lost, page_shift;
struct {
struct perf_event_header header;
u64 id;
@@ -159,12 +159,12 @@ int perf_output_begin(struct perf_output_handle *handle,
if (unlikely(head - local_read(&rb->wakeup) > rb->watermark))
local_add(rb->watermark, &rb->wakeup);
- handle->page = offset >> (PAGE_SHIFT + page_order(rb));
- handle->page &= rb->nr_pages - 1;
- handle->size = offset & ((PAGE_SIZE << page_order(rb)) - 1);
- handle->addr = rb->data_pages[handle->page];
- handle->addr += handle->size;
- handle->size = (PAGE_SIZE << page_order(rb)) - handle->size;
+ page_shift = PAGE_SHIFT + page_order(rb);
+
+ handle->page = (offset >> page_shift) & (rb->nr_pages - 1);
+ offset &= (1UL << page_shift) - 1;
+ handle->addr = rb->data_pages[handle->page] + offset;
+ handle->size = (1UL << page_shift) - offset;
if (unlikely(have_lost)) {
struct perf_sample_data sample_data;
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2013-11-06 13:24 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-06 13:19 [tip:perf/core] perf: Optimize perf_output_begin() -- address calculation tip-bot for Peter Zijlstra
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.