qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] trace: inline control-internal.h into control.h


From: Stefan Hajnoczi
Subject: [Qemu-devel] [PATCH] trace: inline control-internal.h into control.h
Date: Thu, 2 May 2013 15:45:25 +0200

trace/control.h is the API for manipulating trace events in QEMU.  Some
of the implementation of this API lives in trace/control-internal.h.

Older versions of gcc complain because a static prototype is used but
the function is defined static inline later on:

  CC    vl.o
  In file included from trace/control.h:191,
                   from vl.c:165:
                   trace/control.h:77:
  warning: ‘trace_event_count’ declared inline after being called
                   trace/control.h:77:
  warning: previous declaration of ‘trace_event_count’ was here

The gcc version is:

  gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973]

The whole split into a public header and implementation header with
static inlines seems a bit much anyway.  If we want these functions to
be static inline let's pay the price and put them into the header file.

Note that a few functions must be re-ordered so that they are declared
before use.

Reported-by: Andreas Färber <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
 trace/control-internal.h | 67 ----------------------------------------
 trace/control.h          | 80 +++++++++++++++++++++++++++++++++---------------
 2 files changed, 55 insertions(+), 92 deletions(-)
 delete mode 100644 trace/control-internal.h

diff --git a/trace/control-internal.h b/trace/control-internal.h
deleted file mode 100644
index cce2da4..0000000
--- a/trace/control-internal.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Interface for configuring and controlling the state of tracing events.
- *
- * Copyright (C) 2011-2012 Lluís Vilanova <address@hidden>
- *
- * This work is licensed under the terms of the GNU GPL, version 2 or later.
- * See the COPYING file in the top-level directory.
- */
-
-#ifndef TRACE__CONTROL_INTERNAL_H
-#define TRACE__CONTROL_INTERNAL_H
-
-#include <string.h>
-
-
-extern TraceEvent trace_events[];
-
-
-static inline TraceEvent *trace_event_id(TraceEventID id)
-{
-    assert(id < trace_event_count());
-    return &trace_events[id];
-}
-
-static inline TraceEventID trace_event_count(void)
-{
-    return TRACE_EVENT_COUNT;
-}
-
-static inline bool trace_event_is_pattern(const char *str)
-{
-    assert(str != NULL);
-    return strchr(str, '*') != NULL;
-}
-
-static inline TraceEventID trace_event_get_id(TraceEvent *ev)
-{
-    assert(ev != NULL);
-    return ev->id;
-}
-
-static inline const char * trace_event_get_name(TraceEvent *ev)
-{
-    assert(ev != NULL);
-    return ev->name;
-}
-
-static inline bool trace_event_get_state_static(TraceEvent *ev)
-{
-    assert(ev != NULL);
-    return ev->sstate;
-}
-
-static inline bool trace_event_get_state_dynamic(TraceEvent *ev)
-{
-    assert(ev != NULL);
-    return ev->dstate;
-}
-
-static inline void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
-{
-    assert(ev != NULL);
-    assert(trace_event_get_state_static(ev));
-    return trace_event_set_state_dynamic_backend(ev, state);
-}
-
-#endif  /* TRACE__CONTROL_INTERNAL_H */
diff --git a/trace/control.h b/trace/control.h
index cde8260..d603932 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -13,6 +13,8 @@
 #include "qemu-common.h"
 #include "trace/generated-events.h"
 
+/** Private - use trace_event_id() instead */
+extern TraceEvent trace_events[];
 
 /**
  * TraceEventID:
@@ -26,6 +28,16 @@
 enum TraceEventID;
 
 /**
+ * trace_event_count:
+ *
+ * Return the number of events.
+ */
+static inline TraceEventID trace_event_count(void)
+{
+    return TRACE_EVENT_COUNT;
+}
+
+/**
  * trace_event_id:
  * @id: Event identifier.
  *
@@ -39,7 +51,11 @@ enum TraceEventID;
  * Returns: pointer to #TraceEvent.
  *
  */
-static TraceEvent *trace_event_id(TraceEventID id);
+static inline TraceEvent *trace_event_id(TraceEventID id)
+{
+    assert(id < trace_event_count());
+    return &trace_events[id];
+}
 
 /**
  * trace_event_name:
@@ -67,14 +83,11 @@ TraceEvent *trace_event_pattern(const char *pat, TraceEvent 
*ev);
  *
  * Whether the given string is an event name pattern.
  */
-static bool trace_event_is_pattern(const char *str);
-
-/**
- * trace_event_count:
- *
- * Return the number of events.
- */
-static TraceEventID trace_event_count(void);
+static inline bool trace_event_is_pattern(const char *str)
+{
+    assert(str != NULL);
+    return strchr(str, '*') != NULL;
+}
 
 
 
@@ -83,14 +96,22 @@ static TraceEventID trace_event_count(void);
  *
  * Get the identifier of an event.
  */
-static TraceEventID trace_event_get_id(TraceEvent *ev);
+static inline TraceEventID trace_event_get_id(TraceEvent *ev)
+{
+    assert(ev != NULL);
+    return ev->id;
+}
 
 /**
  * trace_event_get_name:
  *
  * Get the name of an event.
  */
-static const char * trace_event_get_name(TraceEvent *ev);
+static inline const char *trace_event_get_name(TraceEvent *ev)
+{
+    assert(ev != NULL);
+    return ev->name;
+}
 
 /**
  * trace_event_get_state:
@@ -115,14 +136,22 @@ static const char * trace_event_get_name(TraceEvent *ev);
  * Use the define 'TRACE_${EVENT_NAME}_ENABLED' for compile-time checks (it 
will
  * be set to 1 or 0 according to the presence of the disabled property).
  */
-static bool trace_event_get_state_static(TraceEvent *ev);
+static inline bool trace_event_get_state_static(TraceEvent *ev)
+{
+    assert(ev != NULL);
+    return ev->sstate;
+}
 
 /**
  * trace_event_get_state_dynamic:
  *
  * Get the dynamic tracing state of an event.
  */
-static bool trace_event_get_state_dynamic(TraceEvent *ev);
+static inline bool trace_event_get_state_dynamic(TraceEvent *ev)
+{
+    assert(ev != NULL);
+    return ev->dstate;
+}
 
 /**
  * trace_event_set_state:
@@ -138,21 +167,25 @@ static bool trace_event_get_state_dynamic(TraceEvent *ev);
     } while (0)
 
 /**
- * trace_event_set_state_dynamic:
- *
- * Set the dynamic tracing state of an event.
- *
- * Pre-condition: trace_event_get_state_static(ev) == true
- */
-static void trace_event_set_state_dynamic(TraceEvent *ev, bool state);
-
-/**
  * trace_event_set_state_dynamic_backend:
  *
  * Warning: This function must be implemented by each tracing backend.
  */
 void trace_event_set_state_dynamic_backend(TraceEvent *ev, bool state);
 
+/**
+ * trace_event_set_state_dynamic:
+ *
+ * Set the dynamic tracing state of an event.
+ *
+ * Pre-condition: trace_event_get_state_static(ev) == true
+ */
+static inline void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
+{
+    assert(ev != NULL);
+    assert(trace_event_get_state_static(ev));
+    return trace_event_set_state_dynamic_backend(ev, state);
+}
 
 
 /**
@@ -187,7 +220,4 @@ bool trace_backend_init(const char *events, const char 
*file);
  */
 void trace_backend_init_events(const char *fname);
 
-
-#include "trace/control-internal.h"
-
 #endif  /* TRACE__CONTROL_H */
-- 
1.8.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]