This introduces the monitor command 'trace' to read current contents of trace buffer. Signed-off-by: Prerna Saxena <prerna@xxxxxxxxxxxxxxxxxx> --- configure | 3 +++ monitor.c | 3 +++ qemu-monitor.hx | 16 ++++++++++++++++ simpletrace.c | 15 +++++++++++++++ tracetool | 4 ++++ 5 files changed, 41 insertions(+), 0 deletions(-) diff --git a/configure b/configure index 675d0fc..56af8dd 100755 --- a/configure +++ b/configure @@ -2302,6 +2302,9 @@ bsd) esac echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak +if test "$trace_backend" = "simple"; then + echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak +fi if test "$trace_backend" = "ust"; then LIBS="-lust $LIBS" fi diff --git a/monitor.c b/monitor.c index ad50f12..fda29aa 100644 --- a/monitor.c +++ b/monitor.c @@ -55,6 +55,9 @@ #include "json-streamer.h" #include "json-parser.h" #include "osdep.h" +#ifdef CONFIG_SIMPLE_TRACE +#include "trace.h" +#endif //#define DEBUG //#define DEBUG_COMPLETION diff --git a/qemu-monitor.hx b/qemu-monitor.hx index b6e3467..c604aec 100644 --- a/qemu-monitor.hx +++ b/qemu-monitor.hx @@ -221,6 +221,22 @@ STEXI @item logfile @var{filename} @findex logfile Output logs to @var{filename}. +#ifdef CONFIG_SIMPLE_TRACE +ETEXI + + { + .name = "trace", + .args_type = "", + .params = "", + .help = "shows contents of trace buffer", + .mhandler.cmd = do_info_trace, + }, + +STEXI +@item trace +@findex trace +show contents of trace buffer +#endif ETEXI { diff --git a/simpletrace.c b/simpletrace.c index 2fec4d3..8f33a81 100644 --- a/simpletrace.c +++ b/simpletrace.c @@ -62,3 +62,18 @@ void trace4(TraceEvent event, unsigned long x1, unsigned long x2, unsigned long void trace5(TraceEvent event, unsigned long x1, unsigned long x2, unsigned long x3, unsigned long x4, unsigned long x5) { trace(event, x1, x2, x3, x4, x5); } + +void do_info_trace(Monitor *mon) { + static unsigned int i, max_idx; + + if (trace_idx) + max_idx = trace_idx; + else + max_idx = TRACE_BUF_LEN; + + for (i=0; i<max_idx ;i++) + monitor_printf(mon, "Event %ld : %ld %ld %ld %ld %ld\n", + trace_buf[i].event, trace_buf[i].x1, trace_buf[i].x2, + trace_buf[i].x3, trace_buf[i].x4, trace_buf[i].x5); + return; +} diff --git a/tracetool b/tracetool index 9ea9c08..6c15154 100755 --- a/tracetool +++ b/tracetool @@ -130,6 +130,7 @@ void trace2(TraceEvent event, unsigned long x1, unsigned long x2); void trace3(TraceEvent event, unsigned long x1, unsigned long x2, unsigned long x3); void trace4(TraceEvent event, unsigned long x1, unsigned long x2, unsigned long x3, unsigned long x4); void trace5(TraceEvent event, unsigned long x1, unsigned long x2, unsigned long x3, unsigned long x4, unsigned long x5); +void do_info_trace(Monitor *mon); EOF simple_event_num=0 @@ -289,6 +290,9 @@ tracetoh() #define TRACE_H #include "qemu-common.h" + +extern void monitor_printf(Monitor *mon, const char *fmt, ...) + __attribute__ ((__format__ (__printf__, 2, 3))); EOF convert h echo "#endif /* TRACE_H */" -- 1.6.2.5 -- Prerna Saxena Linux Technology Centre, IBM Systems and Technology Lab, Bangalore, India -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html