[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
- [Qemu-devel] [PATCH] trace: inline control-internal.h into control.h,
Stefan Hajnoczi <=