Message ID | 1463416475-11728-2-git-send-email-rjones@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Any further objections to this one? It's a pretty useful patch for us. On Mon, May 16, 2016 at 05:34:35PM +0100, Richard W.M. Jones wrote: > QEMU compiles a list of data directories from various sources. When > consuming a QEMU binary it's useful to be able to get this list of > data directories: a primary reason is so you can list what BIOSes or > keymaps ship with this version of QEMU. However without reproducing > the method that QEMU uses internally, it's not possible to get the > list of data directories. > > This commit adds a simple '-L help' option that just lists out the > data directories as qemu calculates them: > > $ ./x86_64-softmmu/qemu-system-x86_64 -L help > /home/rjones/d/qemu/pc-bios > /usr/local/share/qemu > > $ ./x86_64-softmmu/qemu-system-x86_64 -L /tmp -L help > /tmp > /home/rjones/d/qemu/pc-bios > /usr/local/share/qemu > > Signed-off-by: Richard W.M. Jones <rjones@redhat.com> > Reviewed-by: Eric Blake <eblake@redhat.com> > --- > qemu-options.hx | 2 ++ > vl.c | 13 ++++++++++++- > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/qemu-options.hx b/qemu-options.hx > index 6106520..bec0210 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -3199,6 +3199,8 @@ STEXI > @item -L @var{path} > @findex -L > Set the directory for the BIOS, VGA BIOS and keymaps. > + > +To list all the data directories, use @code{-L help}. > ETEXI > > DEF("bios", HAS_ARG, QEMU_OPTION_bios, \ > diff --git a/vl.c b/vl.c > index 5fd22cb..d25f2f7 100644 > --- a/vl.c > +++ b/vl.c > @@ -2990,6 +2990,7 @@ int main(int argc, char **argv, char **envp) > FILE *vmstate_dump_file = NULL; > Error *main_loop_err = NULL; > Error *err = NULL; > + bool list_data_dirs = false; > > qemu_init_cpu_loop(); > qemu_mutex_lock_iothread(); > @@ -3371,7 +3372,9 @@ int main(int argc, char **argv, char **envp) > add_device_config(DEV_GDB, optarg); > break; > case QEMU_OPTION_L: > - if (data_dir_idx < ARRAY_SIZE(data_dir)) { > + if (is_help_option(optarg)) { > + list_data_dirs = true; > + } else if (data_dir_idx < ARRAY_SIZE(data_dir)) { > data_dir[data_dir_idx++] = optarg; > } > break; > @@ -4128,6 +4131,14 @@ int main(int argc, char **argv, char **envp) > data_dir[data_dir_idx++] = CONFIG_QEMU_DATADIR; > } > > + /* -L help lists the data directories and exits. */ > + if (list_data_dirs) { > + for (i = 0; i < data_dir_idx; i++) { > + printf("%s\n", data_dir[i]); > + } > + exit(0); > + } > + > smp_parse(qemu_opts_find(qemu_find_opts("smp-opts"), NULL)); > > machine_class->max_cpus = machine_class->max_cpus ?: 1; /* Default to UP */ > -- > 2.7.4 > Rich.
On 16/05/2016 18:34, Richard W.M. Jones wrote: > QEMU compiles a list of data directories from various sources. When > consuming a QEMU binary it's useful to be able to get this list of > data directories: a primary reason is so you can list what BIOSes or > keymaps ship with this version of QEMU. However without reproducing > the method that QEMU uses internally, it's not possible to get the > list of data directories. > > This commit adds a simple '-L help' option that just lists out the > data directories as qemu calculates them: > > $ ./x86_64-softmmu/qemu-system-x86_64 -L help > /home/rjones/d/qemu/pc-bios > /usr/local/share/qemu > > $ ./x86_64-softmmu/qemu-system-x86_64 -L /tmp -L help > /tmp > /home/rjones/d/qemu/pc-bios > /usr/local/share/qemu > > Signed-off-by: Richard W.M. Jones <rjones@redhat.com> > Reviewed-by: Eric Blake <eblake@redhat.com> > --- > qemu-options.hx | 2 ++ > vl.c | 13 ++++++++++++- > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/qemu-options.hx b/qemu-options.hx > index 6106520..bec0210 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -3199,6 +3199,8 @@ STEXI > @item -L @var{path} > @findex -L > Set the directory for the BIOS, VGA BIOS and keymaps. > + > +To list all the data directories, use @code{-L help}. > ETEXI > > DEF("bios", HAS_ARG, QEMU_OPTION_bios, \ > diff --git a/vl.c b/vl.c > index 5fd22cb..d25f2f7 100644 > --- a/vl.c > +++ b/vl.c > @@ -2990,6 +2990,7 @@ int main(int argc, char **argv, char **envp) > FILE *vmstate_dump_file = NULL; > Error *main_loop_err = NULL; > Error *err = NULL; > + bool list_data_dirs = false; > > qemu_init_cpu_loop(); > qemu_mutex_lock_iothread(); > @@ -3371,7 +3372,9 @@ int main(int argc, char **argv, char **envp) > add_device_config(DEV_GDB, optarg); > break; > case QEMU_OPTION_L: > - if (data_dir_idx < ARRAY_SIZE(data_dir)) { > + if (is_help_option(optarg)) { > + list_data_dirs = true; > + } else if (data_dir_idx < ARRAY_SIZE(data_dir)) { > data_dir[data_dir_idx++] = optarg; > } > break; > @@ -4128,6 +4131,14 @@ int main(int argc, char **argv, char **envp) > data_dir[data_dir_idx++] = CONFIG_QEMU_DATADIR; > } > > + /* -L help lists the data directories and exits. */ > + if (list_data_dirs) { > + for (i = 0; i < data_dir_idx; i++) { > + printf("%s\n", data_dir[i]); > + } > + exit(0); > + } > + > smp_parse(qemu_opts_find(qemu_find_opts("smp-opts"), NULL)); > > machine_class->max_cpus = machine_class->max_cpus ?: 1; /* Default to UP */ > Queued, thanks.
On Mon, Jun 13, 2016 at 01:55:59PM +0200, Paolo Bonzini wrote: > On 16/05/2016 18:34, Richard W.M. Jones wrote: > > QEMU compiles a list of data directories from various sources. When > > consuming a QEMU binary it's useful to be able to get this list of > > data directories: a primary reason is so you can list what BIOSes or > > keymaps ship with this version of QEMU. However without reproducing > > the method that QEMU uses internally, it's not possible to get the > > list of data directories. > > > > This commit adds a simple '-L help' option that just lists out the > > data directories as qemu calculates them: > > > > $ ./x86_64-softmmu/qemu-system-x86_64 -L help > > /home/rjones/d/qemu/pc-bios > > /usr/local/share/qemu > > > > $ ./x86_64-softmmu/qemu-system-x86_64 -L /tmp -L help > > /tmp > > /home/rjones/d/qemu/pc-bios > > /usr/local/share/qemu > > > > Signed-off-by: Richard W.M. Jones <rjones@redhat.com> > > Reviewed-by: Eric Blake <eblake@redhat.com> [...] > Queued, thanks. Thanks. This is a good patch and I think we should have it in qemu. However the semi-related "bios-fast" patch needs more work, and so I'd like to withdraw that one from consideration (if it was being considered ..) Rich.
diff --git a/qemu-options.hx b/qemu-options.hx index 6106520..bec0210 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -3199,6 +3199,8 @@ STEXI @item -L @var{path} @findex -L Set the directory for the BIOS, VGA BIOS and keymaps. + +To list all the data directories, use @code{-L help}. ETEXI DEF("bios", HAS_ARG, QEMU_OPTION_bios, \ diff --git a/vl.c b/vl.c index 5fd22cb..d25f2f7 100644 --- a/vl.c +++ b/vl.c @@ -2990,6 +2990,7 @@ int main(int argc, char **argv, char **envp) FILE *vmstate_dump_file = NULL; Error *main_loop_err = NULL; Error *err = NULL; + bool list_data_dirs = false; qemu_init_cpu_loop(); qemu_mutex_lock_iothread(); @@ -3371,7 +3372,9 @@ int main(int argc, char **argv, char **envp) add_device_config(DEV_GDB, optarg); break; case QEMU_OPTION_L: - if (data_dir_idx < ARRAY_SIZE(data_dir)) { + if (is_help_option(optarg)) { + list_data_dirs = true; + } else if (data_dir_idx < ARRAY_SIZE(data_dir)) { data_dir[data_dir_idx++] = optarg; } break; @@ -4128,6 +4131,14 @@ int main(int argc, char **argv, char **envp) data_dir[data_dir_idx++] = CONFIG_QEMU_DATADIR; } + /* -L help lists the data directories and exits. */ + if (list_data_dirs) { + for (i = 0; i < data_dir_idx; i++) { + printf("%s\n", data_dir[i]); + } + exit(0); + } + smp_parse(qemu_opts_find(qemu_find_opts("smp-opts"), NULL)); machine_class->max_cpus = machine_class->max_cpus ?: 1; /* Default to UP */