qapi: Convert getfd and closefd

Signed-off-by: Corey Bryant <coreyb@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
Corey Bryant 2012-06-22 14:36:09 -04:00 committed by Luiz Capitulino
parent 94c3db85b4
commit 208c9d1b7c
6 changed files with 81 additions and 26 deletions

View file

@ -2328,48 +2328,45 @@ static void do_inject_mce(Monitor *mon, const QDict *qdict)
}
#endif
static int do_getfd(Monitor *mon, const QDict *qdict, QObject **ret_data)
void qmp_getfd(const char *fdname, Error **errp)
{
const char *fdname = qdict_get_str(qdict, "fdname");
mon_fd_t *monfd;
int fd;
fd = qemu_chr_fe_get_msgfd(mon->chr);
fd = qemu_chr_fe_get_msgfd(cur_mon->chr);
if (fd == -1) {
qerror_report(QERR_FD_NOT_SUPPLIED);
return -1;
error_set(errp, QERR_FD_NOT_SUPPLIED);
return;
}
if (qemu_isdigit(fdname[0])) {
qerror_report(QERR_INVALID_PARAMETER_VALUE, "fdname",
"a name not starting with a digit");
return -1;
error_set(errp, QERR_INVALID_PARAMETER_VALUE, "fdname",
"a name not starting with a digit");
return;
}
QLIST_FOREACH(monfd, &mon->fds, next) {
QLIST_FOREACH(monfd, &cur_mon->fds, next) {
if (strcmp(monfd->name, fdname) != 0) {
continue;
}
close(monfd->fd);
monfd->fd = fd;
return 0;
return;
}
monfd = g_malloc0(sizeof(mon_fd_t));
monfd->name = g_strdup(fdname);
monfd->fd = fd;
QLIST_INSERT_HEAD(&mon->fds, monfd, next);
return 0;
QLIST_INSERT_HEAD(&cur_mon->fds, monfd, next);
}
static int do_closefd(Monitor *mon, const QDict *qdict, QObject **ret_data)
void qmp_closefd(const char *fdname, Error **errp)
{
const char *fdname = qdict_get_str(qdict, "fdname");
mon_fd_t *monfd;
QLIST_FOREACH(monfd, &mon->fds, next) {
QLIST_FOREACH(monfd, &cur_mon->fds, next) {
if (strcmp(monfd->name, fdname) != 0) {
continue;
}
@ -2378,11 +2375,10 @@ static int do_closefd(Monitor *mon, const QDict *qdict, QObject **ret_data)
close(monfd->fd);
g_free(monfd->name);
g_free(monfd);
return 0;
return;
}
qerror_report(QERR_FD_NOT_FOUND, fdname);
return -1;
error_set(errp, QERR_FD_NOT_FOUND, fdname);
}
static void do_loadvm(Monitor *mon, const QDict *qdict)