[libvirt] [PATCH v2 6/8] qemu_command: Honour chardev alias assignment with a function

Jiri Denemark jdenemar at redhat.com
Mon Jun 24 14:04:32 UTC 2013


On Thu, Jun 06, 2013 at 14:30:03 +0200, Michal Privoznik wrote:
> The chardev alias assignment is going to be needed in a separate
> places, so it should be moved into a separate function rather
> than copying code randomly around.
> ---
>  src/qemu/qemu_command.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++---
>  src/qemu/qemu_command.h |  3 +++
>  2 files changed, 65 insertions(+), 4 deletions(-)
> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index c4a162a..39b9d24 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -891,6 +891,64 @@ qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller)
>      return 0;
>  }
>  
> +int
> +qemuAssignDeviceChrAlias(virDomainDefPtr def,
> +                         virDomainChrDefPtr chr,
> +                         size_t idx)

Since you want to pass -1 as idx, you should declare it as signed

> +{
> +    virDomainChrDefPtr **arrPtr;
> +    size_t *cntPtr;
> +    const char *prefix;
> +
> +    if (virDomainChrGetDomainPtrs(def, chr, &arrPtr, &cntPtr) < 0)
> +        return -1;
> +
> +    switch ((enum virDomainChrDeviceType) chr->deviceType) {
> +    case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL:
> +        prefix = "parallel";
> +        break;
> +
> +    case VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL:
> +        prefix = "serial";
> +        break;
> +
> +    case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE:
> +        prefix = "console";
> +        break;
> +
> +    case VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL:
> +        prefix = "channel";
> +        break;
> +
> +    default:
> +        virReportError(VIR_ERR_OPERATION_INVALID,
> +                       _("Unsupported device type '%d'"),
> +                       chr->deviceType);
> +        return -1;
> +    }
> +
> +    if (idx == -1) {
> +        size_t i;
> +        idx = 0;
> +        for (i = 0; i < *cntPtr; i++) {
> +            int thisidx;
> +            if ((thisidx = qemuDomainDeviceAliasIndex(&(*arrPtr)[i]->info, prefix)) < 0) {
> +                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                               _("Unable to determine device index for character device"));
> +                return -1;
> +            }
> +            if (thisidx >= idx)
> +                idx = thisidx + 1;
> +        }
> +    }
> +
> +    if (virAsprintf(&chr->info.alias, "%s%zu", prefix, idx) < 0) {

and update %zu to be signed, too.

> +        virReportOOMError();
> +        return -1;
> +    }
> +
> +    return 0;
> +}

ACK with the change.

Jirka




More information about the libvir-list mailing list