From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=39601 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OTaYG-0000Cd-FC for qemu-devel@nongnu.org; Tue, 29 Jun 2010 09:08:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OTaYB-0001d0-3y for qemu-devel@nongnu.org; Tue, 29 Jun 2010 09:08:35 -0400 Received: from mtagate2.uk.ibm.com ([194.196.100.162]:48577) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OTaYA-0001cX-QP for qemu-devel@nongnu.org; Tue, 29 Jun 2010 09:08:31 -0400 Received: from d06nrmr1407.portsmouth.uk.ibm.com (d06nrmr1407.portsmouth.uk.ibm.com [9.149.38.185]) by mtagate2.uk.ibm.com (8.13.1/8.13.1) with ESMTP id o5TD8QY0015041 for ; Tue, 29 Jun 2010 13:08:27 GMT Received: from d06av04.portsmouth.uk.ibm.com (d06av04.portsmouth.uk.ibm.com [9.149.37.216]) by d06nrmr1407.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o5TD8QDN762038 for ; Tue, 29 Jun 2010 14:08:26 +0100 Received: from d06av04.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av04.portsmouth.uk.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id o5TD8Q8x003122 for ; Tue, 29 Jun 2010 14:08:26 +0100 From: Stefan Hajnoczi Date: Tue, 29 Jun 2010 14:08:24 +0100 Message-Id: <1277816904-32614-1-git-send-email-stefanha@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH] trace: Support trace events with no arguments List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , Prerna Saxena Trace events with no arguments are not parsed correctly. For example: foo(void) "" This patch fixes the trace-events parsing code and simple trace backend. Signed-off-by: Stefan Hajnoczi --- This patch applies against the tracing branch: http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/tracing simpletrace.c | 4 ++++ tracetool | 24 +++++++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/simpletrace.c b/simpletrace.c index 2d65114..5c327af 100644 --- a/simpletrace.c +++ b/simpletrace.c @@ -55,6 +55,10 @@ static void trace(TraceEventID event, unsigned long x1, } } +void trace0(TraceEventID event) { + trace(event, 0, 0, 0, 0, 0); +} + void trace1(TraceEventID event, unsigned long x1) { trace(event, x1, 0, 0, 0, 0); } diff --git a/tracetool b/tracetool index c77280d..9ce8e74 100755 --- a/tracetool +++ b/tracetool @@ -39,8 +39,11 @@ get_args() # Get the argument name list of a trace event get_argnames() { - local first field name + local nfields field name + nfields=0 for field in $(get_args "$1"); do + nfields=$((nfields + 1)) + # Drop pointer star field=${field#\*} @@ -50,7 +53,12 @@ get_argnames() echo -n "$name, " done - echo -n "$name" + + # Last argument name + if [ "$nfields" -gt 1 ] + then + echo -n "$name" + fi } # Get the number of arguments to a trace event @@ -125,6 +133,7 @@ typedef struct { bool state; } TraceEvent; +void trace0(TraceEventID event); void trace1(TraceEventID event, unsigned long x1); void trace2(TraceEventID event, unsigned long x1, unsigned long x2); void trace3(TraceEventID event, unsigned long x1, unsigned long x2, unsigned long x3); @@ -148,15 +157,20 @@ cast_args_to_ulong() linetoh_simple() { - local name args argc ulong_args + local name args argc trace_args name=$(get_name "$1") args=$(get_args "$1") argc=$(get_argc "$1") - ulong_args=$(cast_args_to_ulong "$1") + + trace_args="$simple_event_num" + if [ "$argc" -gt 0 ] + then + trace_args="$trace_args, $(cast_args_to_ulong "$1")" + fi cat <