[libvirt] [PATCHv2 6/8] Add domainGetSchedulerType to libxl driver

Jim Fehlig jfehlig at novell.com
Mon Mar 28 21:57:31 UTC 2011


Markus Groß wrote:
> ---
>  src/libxl/libxl_driver.c |   64 +++++++++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 63 insertions(+), 1 deletions(-)
>
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index 7d83975..1a70f79 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -55,6 +55,9 @@
>  
>  #define LIBXL_CONFIG_FORMAT_XM "xen-xm"
>  
> +/* Number of Xen scheduler parameters */
> +#define XEN_SCHED_CREDIT_NPARAM   2
> +
>  static libxlDriverPrivatePtr libxl_driver = NULL;
>  
>  
> @@ -1954,6 +1957,65 @@ libxlDomainEventDeregister(virConnectPtr conn,
>      return ret;
>  }
>  
> +static char *
> +libxlDomainGetSchedulerType(virDomainPtr dom, int *nparams)
> +{
> +    libxlDriverPrivatePtr driver = dom->conn->privateData;
> +    libxlDomainObjPrivatePtr priv;
> +    virDomainObjPtr vm;
> +    char * ret = NULL;
> +    int sched_id;
> +
> +    libxlDriverLock(driver);
> +    vm = virDomainFindByUUID(&driver->domains, dom->uuid);
> +    libxlDriverUnlock(driver);
> +
> +    if (!vm) {
> +        libxlError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
> +        goto cleanup;
> +    }
> +
> +    if (!virDomainObjIsActive(vm)) {
> +        libxlError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running"));
> +        goto cleanup;
> +    }
> +
> +    priv = vm->privateData;
> +    if ((sched_id = libxl_get_sched_id(&priv->ctx)) < 0) {
> +        libxlError(VIR_ERR_INTERNAL_ERROR,
> +                   _("Failed to get scheduler id for domain '%d'"
> +                     " with libxenlight"), dom->id);
> +        goto cleanup;
> +    }
> +
> +    *nparams = 0;
> +    switch(sched_id) {
> +    case XEN_SCHEDULER_SEDF:
> +        ret = strdup("sedf");
> +        break;
> +    case XEN_SCHEDULER_CREDIT:
> +        ret = strdup("credit");
> +        *nparams = XEN_SCHED_CREDIT_NPARAM;
> +        break;
> +    case XEN_SCHEDULER_CREDIT2:
> +        ret = strdup("credit2");
> +        break;
> +    case XEN_SCHEDULER_ARINC653:
> +        ret = strdup("arinc653");
> +        break;
> +    default:
> +        goto cleanup;
> +    }
> +
> +    if (!ret)
> +        virReportOOMError();
> +
> +cleanup:
> +    if (vm)
> +        virDomainObjUnlock(vm);
> +    return ret;
> +}
> +
>  static int
>  libxlDomainIsActive(virDomainPtr dom)
>  {
> @@ -2099,7 +2161,7 @@ static virDriver libxlDriver = {
>      NULL,                       /* domainUpdateDeviceFlags */
>      NULL,                       /* domainGetAutostart */
>      NULL,                       /* domainSetAutostart */
> -    NULL,                       /* domainGetSchedulerType */
> +    libxlDomainGetSchedulerType,/* domainGetSchedulerType */
>      NULL,                       /* domainGetSchedulerParameters */
>      NULL,                       /* domainSetSchedulerParameters */
>      NULL,                       /* domainMigratePrepare */
>   

ACK.




More information about the libvir-list mailing list