Loading include/char/char.h +2 −1 Original line number Diff line number Diff line Loading @@ -89,7 +89,8 @@ struct CharDriverState { * Returns: a new character backend */ CharDriverState *qemu_chr_new_from_opts(QemuOpts *opts, void (*init)(struct CharDriverState *s)); void (*init)(struct CharDriverState *s), Error **errp); /** * @qemu_chr_new: Loading qemu-char.c +15 −9 Original line number Diff line number Diff line Loading @@ -2779,18 +2779,19 @@ static const struct { }; CharDriverState *qemu_chr_new_from_opts(QemuOpts *opts, void (*init)(struct CharDriverState *s)) void (*init)(struct CharDriverState *s), Error **errp) { CharDriverState *chr; int i; if (qemu_opts_id(opts) == NULL) { fprintf(stderr, "chardev: no id specified\n"); error_setg(errp, "chardev: no id specified\n"); return NULL; } if (qemu_opt_get(opts, "backend") == NULL) { fprintf(stderr, "chardev: \"%s\" missing backend\n", error_setg(errp, "chardev: \"%s\" missing backend\n", qemu_opts_id(opts)); return NULL; } Loading @@ -2799,14 +2800,14 @@ CharDriverState *qemu_chr_new_from_opts(QemuOpts *opts, break; } if (i == ARRAY_SIZE(backend_table)) { fprintf(stderr, "chardev: backend \"%s\" not found\n", error_setg(errp, "chardev: backend \"%s\" not found\n", qemu_opt_get(opts, "backend")); return NULL; } chr = backend_table[i].open(opts); if (!chr) { fprintf(stderr, "chardev: opening backend \"%s\" failed\n", error_setg(errp, "chardev: opening backend \"%s\" failed\n", qemu_opt_get(opts, "backend")); return NULL; } Loading Loading @@ -2837,6 +2838,7 @@ CharDriverState *qemu_chr_new(const char *label, const char *filename, void (*in const char *p; CharDriverState *chr; QemuOpts *opts; Error *err = NULL; if (strstart(filename, "chardev:", &p)) { return qemu_chr_find(p); Loading @@ -2846,7 +2848,11 @@ CharDriverState *qemu_chr_new(const char *label, const char *filename, void (*in if (!opts) return NULL; chr = qemu_chr_new_from_opts(opts, init); chr = qemu_chr_new_from_opts(opts, init, &err); if (error_is_set(&err)) { fprintf(stderr, "%s\n", error_get_pretty(err)); error_free(err); } if (chr && qemu_opt_get_bool(opts, "mux", 0)) { monitor_init(chr, MONITOR_USE_READLINE); } Loading vl.c +6 −3 Original line number Diff line number Diff line Loading @@ -2238,11 +2238,14 @@ static int device_init_func(QemuOpts *opts, void *opaque) static int chardev_init_func(QemuOpts *opts, void *opaque) { CharDriverState *chr; Error *local_err = NULL; chr = qemu_chr_new_from_opts(opts, NULL); if (!chr) qemu_chr_new_from_opts(opts, NULL, &local_err); if (error_is_set(&local_err)) { fprintf(stderr, "%s\n", error_get_pretty(local_err)); error_free(local_err); return -1; } return 0; } Loading Loading
include/char/char.h +2 −1 Original line number Diff line number Diff line Loading @@ -89,7 +89,8 @@ struct CharDriverState { * Returns: a new character backend */ CharDriverState *qemu_chr_new_from_opts(QemuOpts *opts, void (*init)(struct CharDriverState *s)); void (*init)(struct CharDriverState *s), Error **errp); /** * @qemu_chr_new: Loading
qemu-char.c +15 −9 Original line number Diff line number Diff line Loading @@ -2779,18 +2779,19 @@ static const struct { }; CharDriverState *qemu_chr_new_from_opts(QemuOpts *opts, void (*init)(struct CharDriverState *s)) void (*init)(struct CharDriverState *s), Error **errp) { CharDriverState *chr; int i; if (qemu_opts_id(opts) == NULL) { fprintf(stderr, "chardev: no id specified\n"); error_setg(errp, "chardev: no id specified\n"); return NULL; } if (qemu_opt_get(opts, "backend") == NULL) { fprintf(stderr, "chardev: \"%s\" missing backend\n", error_setg(errp, "chardev: \"%s\" missing backend\n", qemu_opts_id(opts)); return NULL; } Loading @@ -2799,14 +2800,14 @@ CharDriverState *qemu_chr_new_from_opts(QemuOpts *opts, break; } if (i == ARRAY_SIZE(backend_table)) { fprintf(stderr, "chardev: backend \"%s\" not found\n", error_setg(errp, "chardev: backend \"%s\" not found\n", qemu_opt_get(opts, "backend")); return NULL; } chr = backend_table[i].open(opts); if (!chr) { fprintf(stderr, "chardev: opening backend \"%s\" failed\n", error_setg(errp, "chardev: opening backend \"%s\" failed\n", qemu_opt_get(opts, "backend")); return NULL; } Loading Loading @@ -2837,6 +2838,7 @@ CharDriverState *qemu_chr_new(const char *label, const char *filename, void (*in const char *p; CharDriverState *chr; QemuOpts *opts; Error *err = NULL; if (strstart(filename, "chardev:", &p)) { return qemu_chr_find(p); Loading @@ -2846,7 +2848,11 @@ CharDriverState *qemu_chr_new(const char *label, const char *filename, void (*in if (!opts) return NULL; chr = qemu_chr_new_from_opts(opts, init); chr = qemu_chr_new_from_opts(opts, init, &err); if (error_is_set(&err)) { fprintf(stderr, "%s\n", error_get_pretty(err)); error_free(err); } if (chr && qemu_opt_get_bool(opts, "mux", 0)) { monitor_init(chr, MONITOR_USE_READLINE); } Loading
vl.c +6 −3 Original line number Diff line number Diff line Loading @@ -2238,11 +2238,14 @@ static int device_init_func(QemuOpts *opts, void *opaque) static int chardev_init_func(QemuOpts *opts, void *opaque) { CharDriverState *chr; Error *local_err = NULL; chr = qemu_chr_new_from_opts(opts, NULL); if (!chr) qemu_chr_new_from_opts(opts, NULL, &local_err); if (error_is_set(&local_err)) { fprintf(stderr, "%s\n", error_get_pretty(local_err)); error_free(local_err); return -1; } return 0; } Loading