From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60468) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xl1lm-0004W0-BK for qemu-devel@nongnu.org; Sun, 02 Nov 2014 15:29:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xl1lc-0004pI-G6 for qemu-devel@nongnu.org; Sun, 02 Nov 2014 15:29:02 -0500 Received: from mail-la0-x22e.google.com ([2a00:1450:4010:c03::22e]:33709) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xl1lc-0004oG-3H for qemu-devel@nongnu.org; Sun, 02 Nov 2014 15:28:52 -0500 Received: by mail-la0-f46.google.com with SMTP id hs14so8547608lab.19 for ; Sun, 02 Nov 2014 12:28:50 -0800 (PST) From: Max Filippov Date: Sun, 2 Nov 2014 23:28:41 +0300 Message-Id: <1414960121-18335-1-git-send-email-jcmvbkbc@gmail.com> Subject: [Qemu-devel] [PATCH] tcg: add separate monitor command to dump opcode counters List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Max Filippov , Richard Henderson Currently 'info jit' outputs half of the information to monitor and the rest to qemu log. Dumping opcode counts to monitor as a part of 'info jit' command doesn't sound useful. Add new monitor command 'info opcount' that only dumps opcode counters. Signed-off-by: Max Filippov --- include/exec/cpu-all.h | 1 + monitor.c | 12 ++++++++++++ tcg/tcg.c | 12 ++++++++---- tcg/tcg.h | 1 + translate-all.c | 5 +++++ 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h index c085804..f02f96f 100644 --- a/include/exec/cpu-all.h +++ b/include/exec/cpu-all.h @@ -335,6 +335,7 @@ extern RAMList ram_list; #define TLB_MMIO (1 << 5) void dump_exec_info(FILE *f, fprintf_function cpu_fprintf); +void dump_opcount_info(FILE *f, fprintf_function cpu_fprintf); ram_addr_t last_ram_offset(void); void qemu_mutex_lock_ramlist(void); void qemu_mutex_unlock_ramlist(void); diff --git a/monitor.c b/monitor.c index 2d14f39..946f8fd 100644 --- a/monitor.c +++ b/monitor.c @@ -1043,6 +1043,11 @@ static void do_info_jit(Monitor *mon, const QDict *qdict) dump_drift_info((FILE *)mon, monitor_fprintf); } +static void do_info_opcount(Monitor *mon, const QDict *qdict) +{ + dump_opcount_info((FILE *)mon, monitor_fprintf); +} + static void do_info_history(Monitor *mon, const QDict *qdict) { int i; @@ -2736,6 +2741,13 @@ static mon_cmd_t info_cmds[] = { .mhandler.cmd = do_info_jit, }, { + .name = "opcount", + .args_type = "", + .params = "", + .help = "show dynamic compiler opcode counters", + .mhandler.cmd = do_info_opcount, + }, + { .name = "kvm", .args_type = "", .params = "", diff --git a/tcg/tcg.c b/tcg/tcg.c index 7a84b87..6ff8b51 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2401,14 +2401,20 @@ static int tcg_reg_alloc_call(TCGContext *s, const TCGOpDef *def, static int64_t tcg_table_op_count[NB_OPS]; -static void dump_op_count(void) +void tcg_dump_op_count(FILE *f, fprintf_function cpu_fprintf) { int i; for(i = INDEX_op_end; i < NB_OPS; i++) { - qemu_log("%s %" PRId64 "\n", tcg_op_defs[i].name, tcg_table_op_count[i]); + cpu_fprintf(f, "%s %" PRId64 "\n", tcg_op_defs[i].name, + tcg_table_op_count[i]); } } +#else +void tcg_dump_op_count(FILE *f, fprintf_function cpu_fprintf) +{ + cpu_fprintf(f, "[TCG profiler not compiled]\n"); +} #endif @@ -2620,8 +2626,6 @@ void tcg_dump_info(FILE *f, fprintf_function cpu_fprintf) s->restore_count); cpu_fprintf(f, " avg cycles %0.1f\n", s->restore_count ? (double)s->restore_time / s->restore_count : 0); - - dump_op_count(); } #else void tcg_dump_info(FILE *f, fprintf_function cpu_fprintf) diff --git a/tcg/tcg.h b/tcg/tcg.h index 7285f71..944b877 100644 --- a/tcg/tcg.h +++ b/tcg/tcg.h @@ -610,6 +610,7 @@ int tcg_check_temp_count(void); #endif void tcg_dump_info(FILE *f, fprintf_function cpu_fprintf); +void tcg_dump_op_count(FILE *f, fprintf_function cpu_fprintf); #define TCG_CT_ALIAS 0x80 #define TCG_CT_IALIAS 0x40 diff --git a/translate-all.c b/translate-all.c index ba5c840..8ccd2ed 100644 --- a/translate-all.c +++ b/translate-all.c @@ -1645,6 +1645,11 @@ void dump_exec_info(FILE *f, fprintf_function cpu_fprintf) tcg_dump_info(f, cpu_fprintf); } +void dump_opcount_info(FILE *f, fprintf_function cpu_fprintf) +{ + tcg_dump_op_count(f, cpu_fprintf); +} + #else /* CONFIG_USER_ONLY */ void cpu_interrupt(CPUState *cpu, int mask) -- 1.8.1.4