From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>,
Frederic Weisbecker <fweisbec@gmail.com>
Subject: [PATCH v2 3/8] ring-buffer: Pass delta by value and not by reference
Date: Wed, 20 Oct 2010 21:39:09 -0400 [thread overview]
Message-ID: <20101021014143.306896272@goodmis.org> (raw)
In-Reply-To: 20101021013906.507064528@goodmis.org
[-- Attachment #1: 0003-ring-buffer-Pass-delta-by-value-and-not-by-reference.patch --]
[-- Type: text/plain, Size: 2161 bytes --]
From: Steven Rostedt <srostedt@redhat.com>
The delta between events is passed to the timestamp code by reference
and the timestamp code will reset the value. But it can be reset
from the caller. No need to pass it in by reference.
By changing the call to pass by value, lets gcc optimize the code
a bit more where it can store the delta in a register and not
worry about updating the reference.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
kernel/trace/ring_buffer.c | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index c8ce6bd..3af77cd 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -2008,14 +2008,14 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
static int
rb_add_time_stamp(struct ring_buffer_per_cpu *cpu_buffer,
- u64 ts, u64 *delta)
+ u64 ts, u64 delta)
{
struct ring_buffer_event *event;
int ret;
- WARN_ONCE(*delta > (1ULL << 59),
+ WARN_ONCE(delta > (1ULL << 59),
KERN_WARNING "Delta way too big! %llu ts=%llu write stamp = %llu\n",
- (unsigned long long)*delta,
+ (unsigned long long)delta,
(unsigned long long)ts,
(unsigned long long)cpu_buffer->write_stamp);
@@ -2041,8 +2041,8 @@ rb_add_time_stamp(struct ring_buffer_per_cpu *cpu_buffer,
* and if we can't just make it zero.
*/
if (rb_event_index(event)) {
- event->time_delta = *delta & TS_MASK;
- event->array[0] = *delta >> TS_SHIFT;
+ event->time_delta = delta & TS_MASK;
+ event->array[0] = delta >> TS_SHIFT;
} else {
/* try to discard, since we do not need this */
if (!rb_try_to_discard(cpu_buffer, event)) {
@@ -2064,8 +2064,6 @@ rb_add_time_stamp(struct ring_buffer_per_cpu *cpu_buffer,
ret = 0;
}
- *delta = 0;
-
return ret;
}
@@ -2175,7 +2173,9 @@ rb_reserve_next_event(struct ring_buffer *buffer,
delta = diff;
if (unlikely(test_time_stamp(delta))) {
- commit = rb_add_time_stamp(cpu_buffer, ts, &delta);
+ commit = rb_add_time_stamp(cpu_buffer, ts, delta);
+ delta = 0;
+
if (commit == -EBUSY)
goto out_fail;
--
1.7.1
next prev parent reply other threads:[~2010-10-21 1:43 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-21 1:39 [PATCH v2 0/8] [GIT PULL] ring-buffer: various updates Steven Rostedt
2010-10-21 1:39 ` [PATCH v2 1/8] ring-buffer: Make write slow path out of line Steven Rostedt
2010-10-21 1:39 ` [PATCH v2 2/8] ring-buffer: Pass timestamp by value and not by reference Steven Rostedt
2010-10-21 1:39 ` Steven Rostedt [this message]
2010-10-21 1:39 ` [PATCH v2 4/8] ring-buffer: Remove ring_buffer_event_time_delta() Steven Rostedt
2010-10-21 1:39 ` [PATCH v2 5/8] ring-buffer: Bind time extend and data events together Steven Rostedt
2010-10-21 1:39 ` [PATCH v2 6/8] ring-buffer: Remove condition to add timestamp in fast path Steven Rostedt
2010-10-21 1:39 ` [PATCH v2 7/8] ring-buffer: Micro-optimize with some strategic inlining Steven Rostedt
2010-10-21 1:39 ` [PATCH v2 8/8] ring-buffer: Remove unused macro RB_TIMESTAMPS_PER_PAGE Steven Rostedt
2010-10-21 13:35 ` [PATCH v2 0/8] [GIT PULL] ring-buffer: various updates Steven Rostedt
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=20101021014143.306896272@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
/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