diff options
author | Mahmoud Mandour | 2021-07-30 15:58:09 +0200 |
---|---|---|
committer | Alex Bennée | 2021-09-02 12:29:34 +0200 |
commit | b18a0cad812c6b3afc158bb050b0a2232f9776b7 (patch) | |
tree | 644313d5feda510112ba4f2084e335e5ecbdc7b9 /contrib | |
parent | plugins/hotblocks: Added correct boolean argument parsing (diff) | |
download | qemu-b18a0cad812c6b3afc158bb050b0a2232f9776b7.tar.gz qemu-b18a0cad812c6b3afc158bb050b0a2232f9776b7.tar.xz qemu-b18a0cad812c6b3afc158bb050b0a2232f9776b7.zip |
plugins/lockstep: make socket path not positional & parse bool arg
Signed-off-by: Mahmoud Mandour <ma.mandourr@gmail.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20210730135817.17816-6-ma.mandourr@gmail.com>
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/plugins/lockstep.c | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/contrib/plugins/lockstep.c b/contrib/plugins/lockstep.c index 7fd35eb669..a41ffe83fa 100644 --- a/contrib/plugins/lockstep.c +++ b/contrib/plugins/lockstep.c @@ -319,22 +319,35 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id, int argc, char **argv) { int i; - - if (!argc || !argv[0]) { - qemu_plugin_outs("Need a socket path to talk to other instance."); - return -1; - } + g_autofree char *sock_path = NULL; for (i = 0; i < argc; i++) { char *p = argv[i]; - if (strcmp(p, "verbose") == 0) { - verbose = true; - } else if (!setup_unix_socket(argv[0])) { - qemu_plugin_outs("Failed to setup socket for communications."); + g_autofree char **tokens = g_strsplit(p, "=", 2); + + if (g_strcmp0(tokens[0], "verbose") == 0) { + if (!qemu_plugin_bool_parse(tokens[0], tokens[1], &verbose)) { + fprintf(stderr, "boolean argument parsing failed: %s\n", p); + return -1; + } + } else if (g_strcmp0(tokens[0], "sockpath") == 0) { + sock_path = tokens[1]; + } else { + fprintf(stderr, "option parsing failed: %s\n", p); return -1; } } + if (sock_path == NULL) { + fprintf(stderr, "Need a socket path to talk to other instance.\n"); + return -1; + } + + if (!setup_unix_socket(sock_path)) { + fprintf(stderr, "Failed to setup socket for communications.\n"); + return -1; + } + our_id = id; qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans); |