mirror of
https://github.com/mii443/qemu.git
synced 2025-08-31 11:29:26 +00:00
Merge remote branch 'luiz/queue/qmp' into qmpq
* luiz/queue/qmp: migration: qmp_migrate(): keep working after syntax error qerror: Remove assert_no_error() qemu-option: Remove qemu_opts_create_nofail target-i386: Remove assert_no_error usage hw: Remove assert_no_error usages qdev: Delete dead code error: Add error_abort monitor: add object-add (QMP) and object_add (HMP) command monitor: add object-del (QMP) and object_del (HMP) command qom: catch errors in object_property_add_child qom: fix leak for objects created with -object rng: initialize file descriptor to -1 qemu-monitor: HMP cpu-add wrapper vl: add missing transition debug->finish_migrate Message-Id: 1389045795-18706-1-git-send-email-lcapitulino@redhat.com Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
This commit is contained in:
22
util/error.c
22
util/error.c
@ -23,6 +23,8 @@ struct Error
|
||||
ErrorClass err_class;
|
||||
};
|
||||
|
||||
Error *error_abort;
|
||||
|
||||
void error_set(Error **errp, ErrorClass err_class, const char *fmt, ...)
|
||||
{
|
||||
Error *err;
|
||||
@ -41,6 +43,11 @@ void error_set(Error **errp, ErrorClass err_class, const char *fmt, ...)
|
||||
va_end(ap);
|
||||
err->err_class = err_class;
|
||||
|
||||
if (errp == &error_abort) {
|
||||
error_report("%s", error_get_pretty(err));
|
||||
abort();
|
||||
}
|
||||
|
||||
*errp = err;
|
||||
|
||||
errno = saved_errno;
|
||||
@ -72,6 +79,11 @@ void error_set_errno(Error **errp, int os_errno, ErrorClass err_class,
|
||||
va_end(ap);
|
||||
err->err_class = err_class;
|
||||
|
||||
if (errp == &error_abort) {
|
||||
error_report("%s", error_get_pretty(err));
|
||||
abort();
|
||||
}
|
||||
|
||||
*errp = err;
|
||||
|
||||
errno = saved_errno;
|
||||
@ -112,6 +124,11 @@ void error_set_win32(Error **errp, int win32_err, ErrorClass err_class,
|
||||
va_end(ap);
|
||||
err->err_class = err_class;
|
||||
|
||||
if (errp == &error_abort) {
|
||||
error_report("%s", error_get_pretty(err));
|
||||
abort();
|
||||
}
|
||||
|
||||
*errp = err;
|
||||
}
|
||||
|
||||
@ -153,7 +170,10 @@ void error_free(Error *err)
|
||||
|
||||
void error_propagate(Error **dst_err, Error *local_err)
|
||||
{
|
||||
if (dst_err && !*dst_err) {
|
||||
if (local_err && dst_err == &error_abort) {
|
||||
error_report("%s", error_get_pretty(local_err));
|
||||
abort();
|
||||
} else if (dst_err && !*dst_err) {
|
||||
*dst_err = local_err;
|
||||
} else if (local_err) {
|
||||
error_free(local_err);
|
||||
|
@ -311,7 +311,7 @@ int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname)
|
||||
error_free(local_err);
|
||||
goto out;
|
||||
}
|
||||
opts = qemu_opts_create_nofail(list);
|
||||
opts = qemu_opts_create(list, NULL, 0, &error_abort);
|
||||
continue;
|
||||
}
|
||||
if (sscanf(line, " %63s = \"%1023[^\"]\"", arg, value) == 2) {
|
||||
|
@ -791,15 +791,6 @@ QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id,
|
||||
return opts;
|
||||
}
|
||||
|
||||
QemuOpts *qemu_opts_create_nofail(QemuOptsList *list)
|
||||
{
|
||||
QemuOpts *opts;
|
||||
Error *errp = NULL;
|
||||
opts = qemu_opts_create(list, NULL, 0, &errp);
|
||||
assert_no_error(errp);
|
||||
return opts;
|
||||
}
|
||||
|
||||
void qemu_opts_reset(QemuOptsList *list)
|
||||
{
|
||||
QemuOpts *opts, *next_opts;
|
||||
|
@ -578,7 +578,7 @@ int inet_listen(const char *str, char *ostr, int olen,
|
||||
|
||||
addr = inet_parse(str, errp);
|
||||
if (addr != NULL) {
|
||||
opts = qemu_opts_create_nofail(&socket_optslist);
|
||||
opts = qemu_opts_create(&socket_optslist, NULL, 0, &error_abort);
|
||||
inet_addr_to_opts(opts, addr);
|
||||
qapi_free_InetSocketAddress(addr);
|
||||
sock = inet_listen_opts(opts, port_offset, errp);
|
||||
@ -617,7 +617,7 @@ int inet_connect(const char *str, Error **errp)
|
||||
|
||||
addr = inet_parse(str, errp);
|
||||
if (addr != NULL) {
|
||||
opts = qemu_opts_create_nofail(&socket_optslist);
|
||||
opts = qemu_opts_create(&socket_optslist, NULL, 0, &error_abort);
|
||||
inet_addr_to_opts(opts, addr);
|
||||
qapi_free_InetSocketAddress(addr);
|
||||
sock = inet_connect_opts(opts, errp, NULL, NULL);
|
||||
@ -651,7 +651,7 @@ int inet_nonblocking_connect(const char *str,
|
||||
|
||||
addr = inet_parse(str, errp);
|
||||
if (addr != NULL) {
|
||||
opts = qemu_opts_create_nofail(&socket_optslist);
|
||||
opts = qemu_opts_create(&socket_optslist, NULL, 0, &error_abort);
|
||||
inet_addr_to_opts(opts, addr);
|
||||
qapi_free_InetSocketAddress(addr);
|
||||
sock = inet_connect_opts(opts, errp, callback, opaque);
|
||||
@ -794,7 +794,7 @@ int unix_listen(const char *str, char *ostr, int olen, Error **errp)
|
||||
char *path, *optstr;
|
||||
int sock, len;
|
||||
|
||||
opts = qemu_opts_create_nofail(&socket_optslist);
|
||||
opts = qemu_opts_create(&socket_optslist, NULL, 0, &error_abort);
|
||||
|
||||
optstr = strchr(str, ',');
|
||||
if (optstr) {
|
||||
@ -822,7 +822,7 @@ int unix_connect(const char *path, Error **errp)
|
||||
QemuOpts *opts;
|
||||
int sock;
|
||||
|
||||
opts = qemu_opts_create_nofail(&socket_optslist);
|
||||
opts = qemu_opts_create(&socket_optslist, NULL, 0, &error_abort);
|
||||
qemu_opt_set(opts, "path", path);
|
||||
sock = unix_connect_opts(opts, errp, NULL, NULL);
|
||||
qemu_opts_del(opts);
|
||||
@ -839,7 +839,7 @@ int unix_nonblocking_connect(const char *path,
|
||||
|
||||
g_assert(callback != NULL);
|
||||
|
||||
opts = qemu_opts_create_nofail(&socket_optslist);
|
||||
opts = qemu_opts_create(&socket_optslist, NULL, 0, &error_abort);
|
||||
qemu_opt_set(opts, "path", path);
|
||||
sock = unix_connect_opts(opts, errp, callback, opaque);
|
||||
qemu_opts_del(opts);
|
||||
@ -889,7 +889,7 @@ int socket_connect(SocketAddress *addr, Error **errp,
|
||||
QemuOpts *opts;
|
||||
int fd;
|
||||
|
||||
opts = qemu_opts_create_nofail(&socket_optslist);
|
||||
opts = qemu_opts_create(&socket_optslist, NULL, 0, &error_abort);
|
||||
switch (addr->kind) {
|
||||
case SOCKET_ADDRESS_KIND_INET:
|
||||
inet_addr_to_opts(opts, addr->inet);
|
||||
@ -921,7 +921,7 @@ int socket_listen(SocketAddress *addr, Error **errp)
|
||||
QemuOpts *opts;
|
||||
int fd;
|
||||
|
||||
opts = qemu_opts_create_nofail(&socket_optslist);
|
||||
opts = qemu_opts_create(&socket_optslist, NULL, 0, &error_abort);
|
||||
switch (addr->kind) {
|
||||
case SOCKET_ADDRESS_KIND_INET:
|
||||
inet_addr_to_opts(opts, addr->inet);
|
||||
@ -949,7 +949,7 @@ int socket_dgram(SocketAddress *remote, SocketAddress *local, Error **errp)
|
||||
QemuOpts *opts;
|
||||
int fd;
|
||||
|
||||
opts = qemu_opts_create_nofail(&socket_optslist);
|
||||
opts = qemu_opts_create(&socket_optslist, NULL, 0, &error_abort);
|
||||
switch (remote->kind) {
|
||||
case SOCKET_ADDRESS_KIND_INET:
|
||||
qemu_opt_set(opts, "host", remote->inet->host);
|
||||
|
Reference in New Issue
Block a user