qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC PATCH] trace: Replace error with warning if event


From: Lluís Vilanova
Subject: Re: [Qemu-devel] [RFC PATCH] trace: Replace error with warning if event is not defined
Date: Wed, 28 May 2014 17:20:09 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

Alexey Kardashevskiy writes:

> On 05/28/2014 10:34 PM, Lluís Vilanova wrote:
>> Stefan Hajnoczi writes:
>> 
>>> On Wed, May 21, 2014 at 06:16:01PM +1000, Alexey Kardashevskiy wrote:
>>>> At the moment QEMU exits if trace point is not defined which makes
>>>> a developer life harder if he has to switch between branches with
>>>> different traces implemented.
>>>> 
>>>> This replaces error+exit wit WARNING if the tracepoint does not exist or
>>>> not traceable.
>>>> 
>>>> Signed-off-by: Alexey Kardashevskiy <address@hidden>
>>>> ---
>>>> 
>>>> 
>>>> That would make my life easier indeed. Thanks :)
>>>> 
>>>> 
>>>> ---
>>>> trace/control.c | 14 +++++++-------
>>>> 1 file changed, 7 insertions(+), 7 deletions(-)
>> 
>>> Thanks, applied to my tracing tree:
>>> https://github.com/stefanha/qemu/commits/tracing
>> 
>> I was doing some silly tests with "error_report". Would it be worth to port 
>> all
>> these printfs to it?
>> 
>> It also makes it prettier to see, for example, what line in the event list 
>> file
>> failed when executing 'trace_init_events'.


> Yep, I'll cook another patch, with error_report + line#.

Here's some initial patch, if you want. It is not rebased on top of your
non-exiting patch, though.


Thanks,
  Lluis


diff --git a/trace/control.c b/trace/control.c
index cbbaadf..7876366 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -16,6 +16,7 @@
 #ifdef CONFIG_TRACE_FTRACE
 #include "trace/ftrace.h"
 #endif
+#include "qemu/error-report.h"
 
 #include "qemu-common.h"
 
@@ -108,14 +109,18 @@ static void trace_init_events(const char *fname)
         return;
     }
 
+    Location loc;
+    loc_push_none(&loc);
+    loc_set_file(fname, 0);
     FILE *fp = fopen(fname, "r");
     if (!fp) {
-        fprintf(stderr, "error: could not open trace events file '%s': %s\n",
-                fname, strerror(errno));
+        error_report("%s", strerror(errno));
         exit(1);
     }
     char line_buf[1024];
+    size_t line_idx = 0;
     while (fgets(line_buf, sizeof(line_buf), fp)) {
+        loc_set_file(fname, ++line_idx);
         size_t len = strlen(line_buf);
         if (len > 1) {              /* skip empty lines */
             line_buf[len - 1] = '\0';
@@ -134,13 +139,11 @@ static void trace_init_events(const char *fname)
             } else {
                 TraceEvent *ev = trace_event_name(line_ptr);
                 if (ev == NULL) {
-                    fprintf(stderr,
-                            "error: trace event '%s' does not exist\n", 
line_ptr);
+                    error_report("trace event '%s' does not exist", line_ptr);
                     exit(1);
                 }
                 if (!trace_event_get_state_static(ev)) {
-                    fprintf(stderr,
-                            "error: trace event '%s' is not traceable\n", 
line_ptr);
+                    error_report("trace event '%s' is not traceable\n", 
line_ptr);
                     exit(1);
                 }
                 trace_event_set_state_dynamic(ev, enable);
@@ -148,10 +151,11 @@ static void trace_init_events(const char *fname)
         }
     }
     if (fclose(fp) != 0) {
-        fprintf(stderr, "error: closing file '%s': %s\n",
-                fname, strerror(errno));
+        loc_set_file(fname, 0);
+        error_report("%s", strerror(errno));
         exit(1);
     }
+    loc_pop(&loc);
 }
 
 bool trace_init_backends(const char *events, const char *file)



reply via email to

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