qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel][PATCH]Get machine name from name of executable
@ 2006-05-14 10:42 Stefan Weil
  2006-05-14 11:34 ` Thiemo Seufer
  2006-05-14 11:48 ` Fabrice Bellard
  0 siblings, 2 replies; 5+ messages in thread
From: Stefan Weil @ 2006-05-14 10:42 UTC (permalink / raw)
  To: qemu-devel

Today, QEMU allows machine selection using command line option -M.
Without this option, it will always take the first machine
for the given target architecture.

With my patch, QEMU first parses the name of the executable.
The string after the last '-' is interpreted as machine name.
If this machine does not exist, the first machine is taken,
so the new QEMU remains compatible with the old behaviour.

With this patch, an installation might link e.g. qemu-system-arm
to qemu-system-arm-integratorcp926, and running 
qemu-system-arm-integratorcp926
will automatically select machine integratorcp926.

My goal is a MIPS emulation which supports big and little endian mode
in the same executable (like the real hardware). qemu-system-mipsel
would be a symbolic link to qemu-system-mips and enable little endian mode.

I propose another code modification: instead of registration of all machines
in vl.c, vl.c might call a target procedure which does this registration.
So if MIPS, ARM or other targets add machines, vl.c would not change.
Example: vl.c calls qemu_register_mips_machines() which calls
qemu_register_machine(&mips_machine).

Regards,
Stefan


--- vl.c    3 May 2006 22:02:44 -0000    1.185
+++ vl.c    12 May 2006 20:19:15 -0000
@@ -4252,7 +4254,7 @@
     return 0;
 }
 
-QEMUMachine *find_machine(const char *name)
+static QEMUMachine *find_machine(const char *name)
 {
     QEMUMachine *m;
 
@@ -5075,7 +5077,14 @@
     mallopt(M_MMAP_THRESHOLD, 4096 * 1024);
 #endif
     register_machines();
+    machine = 0;
+    optarg = strrchr(argv[0], '-');
+    if (optarg != 0) {
+        machine = find_machine(optarg + 1);
+    }
+    if (!machine) {
     machine = first_machine;
+    }
     initrd_filename = NULL;
     for(i = 0; i < MAX_FD; i++)
         fd_filename[i] = NULL;

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-05-14 18:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-14 10:42 [Qemu-devel][PATCH]Get machine name from name of executable Stefan Weil
2006-05-14 11:34 ` Thiemo Seufer
2006-05-14 11:48 ` Fabrice Bellard
2006-05-14 13:30   ` Stefan Weil
2006-05-14 18:03     ` Fabrice Bellard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).