lockstep.c (9c03aa87e52567f6c9a7bf456e5dd94dc84088de) lockstep.c (402587419993d86638f1f81fc4e55625a320ad2f)
1/*
2 * Lockstep Execution Plugin
3 *
4 * Allows you to execute two QEMU instances in lockstep and report
5 * when their execution diverges. This is mainly useful for developers
6 * who want to see where a change to TCG code generation has
7 * introduced a subtle and hard to find bug.
8 *

--- 309 unchanged lines hidden (view full) ---

318 const qemu_info_t *info,
319 int argc, char **argv)
320{
321 int i;
322 g_autofree char *sock_path = NULL;
323
324 for (i = 0; i < argc; i++) {
325 char *p = argv[i];
1/*
2 * Lockstep Execution Plugin
3 *
4 * Allows you to execute two QEMU instances in lockstep and report
5 * when their execution diverges. This is mainly useful for developers
6 * who want to see where a change to TCG code generation has
7 * introduced a subtle and hard to find bug.
8 *

--- 309 unchanged lines hidden (view full) ---

318 const qemu_info_t *info,
319 int argc, char **argv)
320{
321 int i;
322 g_autofree char *sock_path = NULL;
323
324 for (i = 0; i < argc; i++) {
325 char *p = argv[i];
326 g_autofree char **tokens = g_strsplit(p, "=", 2);
326 g_auto(GStrv) tokens = g_strsplit(p, "=", 2);
327
328 if (g_strcmp0(tokens[0], "verbose") == 0) {
329 if (!qemu_plugin_bool_parse(tokens[0], tokens[1], &verbose)) {
330 fprintf(stderr, "boolean argument parsing failed: %s\n", p);
331 return -1;
332 }
333 } else if (g_strcmp0(tokens[0], "sockpath") == 0) {
334 sock_path = tokens[1];

--- 22 unchanged lines hidden ---
327
328 if (g_strcmp0(tokens[0], "verbose") == 0) {
329 if (!qemu_plugin_bool_parse(tokens[0], tokens[1], &verbose)) {
330 fprintf(stderr, "boolean argument parsing failed: %s\n", p);
331 return -1;
332 }
333 } else if (g_strcmp0(tokens[0], "sockpath") == 0) {
334 sock_path = tokens[1];

--- 22 unchanged lines hidden ---