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 --- |