On 11/01/2010 10:12 AM, Daniel P. Berrange wrote:
This provides an implementation of the virDomainOpenConsole
API with the QEMU driver. For the streams code, this reuses
most of the code previously added for the tunnelled migration
streams since it is generic.
* src/qemu/qemu_driver.c: Support virDomainOpenConsole
---
src/qemu/qemu_driver.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 75 insertions(+), 1 deletions(-)
+ if (devname) {
+ if (vm->def->console &&
+ STREQ(devname, vm->def->console->info.alias))
+ chr = vm->def->console;
+ for (i = 0 ; !chr && i < vm->def->nserials ; i++) {
+ if (STREQ(devname, vm->def->serials[i]->info.alias))
+ chr = vm->def->serials[i];
+ }
Are we guaranteed that all devices will have a non-NULL and unique
alias, or do we need to do either of these:
1. break on the first hit (rather than favoring the last instance of a
duplicate alias)
2. use STREQ_NULLABLE(devname, ...alias), to be robust against an
unaliased device
+ if (!chr) {
+ qemuReportError(VIR_ERR_INTERNAL_ERROR,
+ _("cannot find character device %s"), devname);
NULLSTR(devname)
+ goto cleanup;
+ }
+
+ if (chr->type != VIR_DOMAIN_CHR_TYPE_PTY) {
+ qemuReportError(VIR_ERR_INTERNAL_ERROR,
+ _("character device %s is not using a PTY"), devname);
NULLSTR(devname)
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org