On 01/10/13 11:33, Paolo Bonzini wrote: > Il 07/01/2013 14:55, Gerd Hoffmann ha scritto: >> +void hmp_chardev_add(Monitor *mon, const QDict *qdict) >> +{ >> + const char *args = qdict_get_str(qdict, "args"); >> + Error *err = NULL; >> + QemuOpts *opts; >> + >> + opts = qemu_opts_parse(qemu_find_opts("chardev"), args, 1); >> + if (opts == NULL) { >> + error_setg(&err, "Parsing chardev args failed\n"); >> + } else { >> + qemu_chr_new_from_opts(opts, NULL, &err); > > This ought to use qmp_chardev_add and a generic opts->ChardevBackend > conversion. > > But IMHO, this kind of intermediate conversion is okay, with the > "correct" thing deferred; being able to play with hotplug from HMP is > worth the small wart. It's really Luiz's decision, so I'm not giving > the reviewed-by (yet).
Once qmp_chardev_add() can handle everything supported by qemu_chr_new_from_opts we can flip over, make qmp_chardev_add the primary interface and qemu_chr_new_from_opts legacy (which then does the opts->ChardevBackend conversion and calls qmp_chardev_add). We are not there yet, even with the full series applied. And even when we arrive there some day we don't have to touch hmp_chardev_add when making the switch ;) cheers, Gerd