[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 09/51] os-posix.c, softmmu/vl.c: move os_parse_cmd_args() into qem
From: |
Paolo Bonzini |
Subject: |
[PULL 09/51] os-posix.c, softmmu/vl.c: move os_parse_cmd_args() into qemu_init() |
Date: |
Thu, 7 Sep 2023 14:59:18 +0200 |
From: Michael Tokarev <mjt@tls.msk.ru>
This will stop linking softmmu-specific os_parse_cmd_args() into every
qemu executable which happens to use other functions from os-posix.c,
such as os_set_line_buffering() or os_setup_signal_handling().
Also, since there's no win32-specific options, *all* option parsing is
now done in softmmu/vl.c:qemu_init(), which is easier to read without
extra indirection, - all options are in the single function now.
This effectively reverts commit 59a5264b99434.
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-ID: <20230901101302.3618955-5-mjt@tls.msk.ru>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
include/sysemu/os-posix.h | 1 -
include/sysemu/os-win32.h | 1 -
os-posix.c | 82 ---------------------------------------
softmmu/vl.c | 76 ++++++++++++++++++++++++++++++++++--
4 files changed, 73 insertions(+), 87 deletions(-)
diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h
index 8a667633953..6dfdcbb0863 100644
--- a/include/sysemu/os-posix.h
+++ b/include/sysemu/os-posix.h
@@ -42,7 +42,6 @@
extern "C" {
#endif
-int os_parse_cmd_args(int index, const char *optarg);
void os_set_line_buffering(void);
void os_setup_early_signal_handling(void);
void os_set_proc_name(const char *s);
diff --git a/include/sysemu/os-win32.h b/include/sysemu/os-win32.h
index 91aa0d7ec04..8ae30fac159 100644
--- a/include/sysemu/os-win32.h
+++ b/include/sysemu/os-win32.h
@@ -101,7 +101,6 @@ static inline void os_setup_signal_handling(void) {}
static inline void os_daemonize(void) {}
static inline void os_setup_post(void) {}
static inline void os_set_proc_name(const char *dummy) {}
-static inline int os_parse_cmd_args(int index, const char *optarg) { return
-1; }
void os_set_line_buffering(void);
void os_setup_early_signal_handling(void);
diff --git a/os-posix.c b/os-posix.c
index ed0787ecfd9..fc2883ff82c 100644
--- a/os-posix.c
+++ b/os-posix.c
@@ -31,18 +31,13 @@
/* Needed early for CONFIG_BSD etc. */
#include "net/slirp.h"
-#include "qemu/qemu-options.h"
#include "qemu/error-report.h"
#include "qemu/log.h"
#include "sysemu/runstate.h"
#include "qemu/cutils.h"
-#include "qemu/config-file.h"
-#include "qemu/option.h"
-#include "qemu/module.h"
#ifdef CONFIG_LINUX
#include <sys/prctl.h>
-#include "qemu/async-teardown.h"
#endif
/*
@@ -142,59 +137,6 @@ bool os_set_runas(const char *optarg)
return true;
}
-/*
- * Parse OS specific command line options.
- * return 0 if option handled, -1 otherwise
- */
-int os_parse_cmd_args(int index, const char *optarg)
-{
- switch (index) {
- case QEMU_OPTION_runas:
- if (!os_set_runas(optarg)) {
- error_report("User \"%s\" doesn't exist"
- " (and is not <uid>:<gid>)",
- optarg);
- exit(1);
- }
- break;
- case QEMU_OPTION_chroot:
- warn_report("option is deprecated, use '-run-with chroot=...'
instead");
- os_set_chroot(optarg);
- break;
- case QEMU_OPTION_daemonize:
- daemonize = 1;
- break;
-#if defined(CONFIG_LINUX)
- /* deprecated */
- case QEMU_OPTION_asyncteardown:
- init_async_teardown();
- break;
-#endif
- case QEMU_OPTION_run_with: {
- const char *str;
- QemuOpts *opts = qemu_opts_parse_noisily(qemu_find_opts("run-with"),
- optarg, false);
- if (!opts) {
- exit(1);
- }
-#if defined(CONFIG_LINUX)
- if (qemu_opt_get_bool(opts, "async-teardown", false)) {
- init_async_teardown();
- }
-#endif
- str = qemu_opt_get(opts, "chroot");
- if (str) {
- os_set_chroot(str);
- }
- break;
- }
- default:
- return -1;
- }
-
- return 0;
-}
-
static void change_process_uid(void)
{
assert((user_uid == (uid_t)-1) || user_pwd == NULL);
@@ -371,27 +313,3 @@ int os_mlock(void)
return -ENOSYS;
#endif
}
-
-static QemuOptsList qemu_run_with_opts = {
- .name = "run-with",
- .head = QTAILQ_HEAD_INITIALIZER(qemu_run_with_opts.head),
- .desc = {
-#if defined(CONFIG_LINUX)
- {
- .name = "async-teardown",
- .type = QEMU_OPT_BOOL,
- },
-#endif
- {
- .name = "chroot",
- .type = QEMU_OPT_STRING,
- },
- { /* end of list */ }
- },
-};
-
-static void register_runwith(void)
-{
- qemu_add_opts(&qemu_run_with_opts);
-}
-opts_init(register_runwith);
diff --git a/softmmu/vl.c b/softmmu/vl.c
index b0b96f67fac..0a74810ca32 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -49,6 +49,7 @@
#include "qemu/error-report.h"
#include "qemu/sockets.h"
#include "qemu/accel.h"
+#include "qemu/async-teardown.h"
#include "hw/usb.h"
#include "hw/isa/isa.h"
#include "hw/scsi/scsi.h"
@@ -748,6 +749,33 @@ static QemuOptsList qemu_smp_opts = {
},
};
+#if defined(CONFIG_POSIX)
+static QemuOptsList qemu_run_with_opts = {
+ .name = "run-with",
+ .head = QTAILQ_HEAD_INITIALIZER(qemu_run_with_opts.head),
+ .desc = {
+#if defined(CONFIG_LINUX)
+ {
+ .name = "async-teardown",
+ .type = QEMU_OPT_BOOL,
+ },
+#endif
+ {
+ .name = "chroot",
+ .type = QEMU_OPT_STRING,
+ },
+ { /* end of list */ }
+ },
+};
+
+#define qemu_add_run_with_opts() qemu_add_opts(&qemu_run_with_opts)
+
+#else
+
+#define qemu_add_run_with_opts()
+
+#endif /* CONFIG_POSIX */
+
static void realtime_init(void)
{
if (enable_mlock) {
@@ -2704,6 +2732,7 @@ void qemu_init(int argc, char **argv)
qemu_add_opts(&qemu_semihosting_config_opts);
qemu_add_opts(&qemu_fw_cfg_opts);
qemu_add_opts(&qemu_action_opts);
+ qemu_add_run_with_opts();
module_call_init(MODULE_INIT_OPTS);
error_init(argv[0]);
@@ -3522,11 +3551,52 @@ void qemu_init(int argc, char **argv)
case QEMU_OPTION_nouserconfig:
/* Nothing to be parsed here. Especially, do not error out
below. */
break;
- default:
- if (os_parse_cmd_args(popt->index, optarg)) {
- error_report("Option not supported in this build");
+#if defined(CONFIG_POSIX)
+ case QEMU_OPTION_runas:
+ if (!os_set_runas(optarg)) {
+ error_report("User \"%s\" doesn't exist"
+ " (and is not <uid>:<gid>)",
+ optarg);
exit(1);
}
+ break;
+ case QEMU_OPTION_chroot:
+ warn_report("option is deprecated,"
+ " use '-run-with chroot=...' instead");
+ os_set_chroot(optarg);
+ break;
+ case QEMU_OPTION_daemonize:
+ os_set_daemonize(true);
+ break;
+#if defined(CONFIG_LINUX)
+ /* deprecated */
+ case QEMU_OPTION_asyncteardown:
+ init_async_teardown();
+ break;
+#endif
+ case QEMU_OPTION_run_with: {
+ const char *str;
+ opts = qemu_opts_parse_noisily(qemu_find_opts("run-with"),
+ optarg, false);
+ if (!opts) {
+ exit(1);
+ }
+#if defined(CONFIG_LINUX)
+ if (qemu_opt_get_bool(opts, "async-teardown", false)) {
+ init_async_teardown();
+ }
+#endif
+ str = qemu_opt_get(opts, "chroot");
+ if (str) {
+ os_set_chroot(str);
+ }
+ break;
+ }
+#endif /* CONFIG_POSIX */
+
+ default:
+ error_report("Option not supported in this build");
+ exit(1);
}
}
}
--
2.41.0
- [PULL 00/51] Build system, i386 changes for 2023-09-07, Paolo Bonzini, 2023/09/07
- [PULL 01/51] linux-user, bsd-user: disable on unsupported host architectures, Paolo Bonzini, 2023/09/07
- [PULL 03/51] target/i386: generalize operand size "ph" for use in CVTPS2PD, Paolo Bonzini, 2023/09/07
- [PULL 02/51] target/i386: raise FERR interrupt with iothread locked, Paolo Bonzini, 2023/09/07
- [PULL 05/51] target/i386: Add support for AMX-COMPLEX in CPUID enumeration, Paolo Bonzini, 2023/09/07
- [PULL 04/51] target/i386: fix memory operand size for CVTPS2PD, Paolo Bonzini, 2023/09/07
- [PULL 06/51] include/sysemu/os-posix.h: move *daemonize* declarations together, Paolo Bonzini, 2023/09/07
- [PULL 08/51] os-posix.c: create and export os_set_chroot(), Paolo Bonzini, 2023/09/07
- [PULL 10/51] os-posix.c: move code around, Paolo Bonzini, 2023/09/07
- [PULL 09/51] os-posix.c, softmmu/vl.c: move os_parse_cmd_args() into qemu_init(),
Paolo Bonzini <=
- [PULL 14/51] contrib/plugins: remove -soname argument, Paolo Bonzini, 2023/09/07
- [PULL 07/51] os-posix.c: create and export os_set_runas(), Paolo Bonzini, 2023/09/07
- [PULL 12/51] softmmu/vl.c: inline include/qemu/qemu-options.h into vl.c, Paolo Bonzini, 2023/09/07
- [PULL 15/51] contrib/plugins/cache: Fix string format, Paolo Bonzini, 2023/09/07
- [PULL 17/51] contrib/plugins/howvec: Fix string format, Paolo Bonzini, 2023/09/07
- [PULL 16/51] contrib/plugins/drcov: Fix string format, Paolo Bonzini, 2023/09/07
- [PULL 21/51] meson: update unsupported host/CPU messages, Paolo Bonzini, 2023/09/07
- [PULL 25/51] configure: remove boolean variables for targets, Paolo Bonzini, 2023/09/07
- [PULL 11/51] os-posix.c: remove unneeded #includes, Paolo Bonzini, 2023/09/07
- [PULL 20/51] meson: do not unnecessarily use cmake for dependencies, Paolo Bonzini, 2023/09/07