From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KszDg-00078S-46 for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KszDe-000765-0P for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:15 -0400 Received: from [199.232.76.173] (port=51700 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KszDd-00075x-OO for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:13 -0400 Received: from mx2.redhat.com ([66.187.237.31]:54656) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KszDc-0006Gu-LS for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:13 -0400 From: Glauber Costa Date: Thu, 23 Oct 2008 12:19:02 -0200 Message-Id: <1224771556-11146-19-git-send-email-glommer@redhat.com> In-Reply-To: <1224771556-11146-1-git-send-email-glommer@redhat.com> References: <1224771556-11146-1-git-send-email-glommer@redhat.com> Subject: [Qemu-devel] [PATCH 18/32] provide --accel option 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: jan.kiszka@siemens.com, aliguori@us.ibm.com, jes@sgi.com, avi@qumranet.com, dmitry.baryshkov@siemens.com The --accel option will provide us the ability of defining which accelerator to pick at run time. It has the advantage of not using the not-well-accepted constructor directives, and also, of stabilishing a way to define priorities among accelerators. The ones registered first, are tried first. Signed-off-by: Glauber Costa --- vl.c | 24 +++++++++++++++++++++--- 1 files changed, 21 insertions(+), 3 deletions(-) diff --git a/vl.c b/vl.c index c584ea3..964205d 100644 --- a/vl.c +++ b/vl.c @@ -255,6 +255,13 @@ static QEMUTimer *icount_vm_timer; uint8_t qemu_uuid[16]; +QEMUAccel *available_accels[] = { +/* list of available accelerators */ +#ifdef USE_KQEMU + &kqemu_accel, +#endif +}; + #define TFR(expr) do { if ((expr) != -1) break; } while (errno == EINTR) /***********************************************************/ @@ -8355,6 +8362,7 @@ enum { QEMU_OPTION_no_quit, QEMU_OPTION_pidfile, QEMU_OPTION_no_kqemu, + QEMU_OPTION_accel, QEMU_OPTION_kernel_kqemu, QEMU_OPTION_win2k_hack, QEMU_OPTION_usb, @@ -8442,6 +8450,7 @@ static const QEMUOption qemu_options[] = { { "no-kqemu", 0, QEMU_OPTION_no_kqemu }, { "kernel-kqemu", 0, QEMU_OPTION_kernel_kqemu }, #endif + { "accel", HAS_ARG, QEMU_OPTION_accel}, #if defined(TARGET_PPC) || defined(TARGET_SPARC) { "g", 1, QEMU_OPTION_g }, #endif @@ -8816,9 +8825,6 @@ int main(int argc, char **argv) } #endif - register_qemu_accel(&kqemu_accel); - register_qemu_accel(&noaccel); - register_machines(); machine = first_machine; cpu_model = NULL; @@ -9267,6 +9273,15 @@ int main(int argc, char **argv) kqemu_allowed = 2; break; #endif + case QEMU_OPTION_accel: + { + int i; + for (i = 0; i < ARRAY_SIZE(available_accels); i++) { + if (!strcasecmp(optarg, available_accels[i]->name)) + register_qemu_accel(available_accels[i]); + } + } + break; case QEMU_OPTION_usb: usb_enabled = 1; break; @@ -9408,6 +9423,9 @@ int main(int argc, char **argv) exit(1); } + /* Basic handler for the noaccel case */ + register_qemu_accel(&noaccel); + if (nographic) { if (serial_device_index == 0) serial_devices[0] = "stdio"; -- 1.5.5.1