From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KqCWC-0001Np-8d for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:58:52 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KqCWA-0001Mr-1X for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:58:51 -0400 Received: from [199.232.76.173] (port=36782 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KqCW9-0001Mh-PY for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:58:49 -0400 Received: from mx2.redhat.com ([66.187.237.31]:49434) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KqCW8-0001IF-IZ for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:58:49 -0400 From: Glauber Costa Date: Wed, 15 Oct 2008 19:55:02 -0200 Message-Id: <1224107718-19128-6-git-send-email-glommer@redhat.com> In-Reply-To: <1224107718-19128-1-git-send-email-glommer@redhat.com> References: <1224107718-19128-1-git-send-email-glommer@redhat.com> Subject: [Qemu-devel] [PATCH 05/21] turn info kqemu into generic info accelerator Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: aliguori@us.ibm.com, jan.kiszka@siemens.com, jes@sgi.com, avi@qumranet.com, Glauber Costa , dmitry.baryshkov@siemens.com From: Glauber Costa Yet another accel field: info. >>From this point on, "info kqemu" is no more. "info accelerator" should be used instead. Signed-off-by: Glauber Costa --- accel.c | 6 ++++++ accel.h | 6 ++++++ kqemu.c | 24 ++++++++++++++++++++++++ monitor.c | 36 +++++++++++++----------------------- 4 files changed, 49 insertions(+), 23 deletions(-) diff --git a/accel.c b/accel.c index 6776244..466fe67 100644 --- a/accel.c +++ b/accel.c @@ -8,6 +8,11 @@ int _accel_nop(void) return 0; } +int noaccel_info(CPUState *env, char *buf) +{ + return sprintf(buf, "no accelerator present.\n"); +} + #define accel_nop ((void *)_accel_nop) /* Accelerator wrapper for the no-accel (raw qemu) case */ @@ -16,5 +21,6 @@ QEMUAccel noaccel = { .init_env = accel_nop, .flush_cache = accel_nop, .flush_page = accel_nop, + .info = noaccel_info, }; diff --git a/accel.h b/accel.h index 935cfef..45a3fca 100644 --- a/accel.h +++ b/accel.h @@ -6,6 +6,7 @@ typedef struct QEMUAccel { void (*init_env)(CPUState *env); void (*flush_cache)(CPUState *env, int global); void (*flush_page)(CPUState *env, target_ulong addr); + int (*info)(CPUState *env, char *buf); } QEMUAccel; extern QEMUAccel *current_accel; @@ -35,4 +36,9 @@ static inline void accel_flush_page(CPUState *env, target_ulong addr) { current_accel->flush_page(env, addr); } + +static inline int accel_info(CPUState *env, char *buf) +{ + return current_accel->info(env, buf); +} #endif diff --git a/kqemu.c b/kqemu.c index 56e59fd..ac12e17 100644 --- a/kqemu.c +++ b/kqemu.c @@ -270,11 +270,35 @@ void kqemu_flush(CPUState *env, int global) nb_pages_to_flush = KQEMU_FLUSH_ALL; } +int kqemu_info(CPUState *env, char *buf) +{ + int val, len; + val = 0; + val = env->kqemu_enabled; + len = sprintf(buf, "kqemu support: "); + buf += len; + + switch(val) { + default: + len += sprintf(buf, "present, but bogus value\n"); + break; + case 1: + len += sprintf(buf, "enabled for user code\n"); + break; + case 2: + len += sprintf(buf, "enabled for user and kernel code\n"); + break; + } + + return len; +} + QEMUAccel kqemu_accel = { .cpu_interrupt = kqemu_cpu_interrupt, .init_env = kqemu_init_env, .flush_cache = kqemu_flush, .flush_page = kqemu_flush_page, + .info = kqemu_info, }; diff --git a/monitor.c b/monitor.c index 4d7c782..c638a38 100644 --- a/monitor.c +++ b/monitor.c @@ -34,6 +34,7 @@ #include "block.h" #include "audio/audio.h" #include "disas.h" +#include "accel.h" #include #include "qemu-timer.h" #include "migration.h" @@ -1233,34 +1234,23 @@ static void mem_info(void) } #endif -static void do_info_kqemu(void) +#define MAX_BUF 1024 +static void do_info_accelerator(void) { -#ifdef USE_KQEMU + char buf[MAX_BUF]; CPUState *env; - int val; - val = 0; + env = mon_get_cpu(); + if (!env) { term_printf("No cpu initialized yet"); return; } - val = env->kqemu_enabled; - term_printf("kqemu support: "); - switch(val) { - default: - case 0: - term_printf("disabled\n"); - break; - case 1: - term_printf("enabled for user code\n"); - break; - case 2: - term_printf("enabled for user and kernel code\n"); - break; - } -#else - term_printf("kqemu support: not compiled\n"); -#endif + + if (accel_info(env, buf)) + term_printf(buf); + else + term_printf("No accelerator present\n"); } #ifdef CONFIG_PROFILER @@ -1493,8 +1483,8 @@ static const term_cmd_t info_cmds[] = { #endif { "jit", "", do_info_jit, "", "show dynamic compiler info", }, - { "kqemu", "", do_info_kqemu, - "", "show kqemu information", }, + { "accelerator", "", do_info_accelerator, + "", "show accelerator information", }, { "usb", "", usb_info, "", "show guest USB devices", }, { "usbhost", "", usb_host_info, -- 1.5.5.1