qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] simpletrace: Inline runtime state check
@ 2010-10-19 14:14 Jan Kiszka
  2010-10-19 15:18 ` [Qemu-devel] " Stefan Hajnoczi
  0 siblings, 1 reply; 2+ messages in thread
From: Jan Kiszka @ 2010-10-19 14:14 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: qemu-devel

Instead of preparing all traced args, jumping into the common trace
function, even collecting a timestamp, do the check if a particular
tracepoint is enabled inline. Also, mark the enabled case unlikely to
motivate the compiler to push the trace code out of the fastpath.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 simpletrace.c |    4 ----
 tracetool     |    7 +++++--
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/simpletrace.c b/simpletrace.c
index deb1e07..224e4ab 100644
--- a/simpletrace.c
+++ b/simpletrace.c
@@ -148,10 +148,6 @@ static void trace(TraceEventID event, uint64_t x1, uint64_t x2, uint64_t x3,
      */
     clock_gettime(CLOCK_MONOTONIC, &ts);
 
-    if (!trace_list[event].state) {
-        return;
-    }
-
     rec->event = event;
     rec->timestamp_ns = ts.tv_sec * 1000000000LL + ts.tv_nsec;
     rec->x1 = x1;
diff --git a/tracetool b/tracetool
index 7010858..9532409 100755
--- a/tracetool
+++ b/tracetool
@@ -146,6 +146,8 @@ linetoh_begin_simple()
 {
     cat <<EOF
 #include "simpletrace.h"
+
+extern TraceEvent trace_list[];
 EOF
 
     simple_event_num=0
@@ -179,7 +181,9 @@ linetoh_simple()
     cat <<EOF
 static inline void trace_$name($args)
 {
-    trace$argc($trace_args);
+    if (unlikely(trace_list[$simple_event_num].state)) {
+        trace$argc($trace_args);
+    }
 }
 EOF
 
@@ -190,7 +194,6 @@ linetoh_end_simple()
 {
     cat <<EOF
 #define NR_TRACE_EVENTS $simple_event_num
-extern TraceEvent trace_list[NR_TRACE_EVENTS];
 EOF
 }
 
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [Qemu-devel] Re: [PATCH] simpletrace: Inline runtime state check
  2010-10-19 14:14 [Qemu-devel] [PATCH] simpletrace: Inline runtime state check Jan Kiszka
@ 2010-10-19 15:18 ` Stefan Hajnoczi
  0 siblings, 0 replies; 2+ messages in thread
From: Stefan Hajnoczi @ 2010-10-19 15:18 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: qemu-devel

On Tue, Oct 19, 2010 at 04:14:09PM +0200, Jan Kiszka wrote:
> Instead of preparing all traced args, jumping into the common trace
> function, even collecting a timestamp, do the check if a particular
> tracepoint is enabled inline. Also, mark the enabled case unlikely to
> motivate the compiler to push the trace code out of the fastpath.
> 
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> ---
>  simpletrace.c |    4 ----
>  tracetool     |    7 +++++--
>  2 files changed, 5 insertions(+), 6 deletions(-)

Acked-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-10-19 15:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-19 14:14 [Qemu-devel] [PATCH] simpletrace: Inline runtime state check Jan Kiszka
2010-10-19 15:18 ` [Qemu-devel] " Stefan Hajnoczi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).