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

Jim Fehlig jfehlig at novell.com
Thu Mar 24 14:48:20 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 b05cd77..c72a570 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -55,6 +55,11 @@
>  
>  #define LIBXL_CONFIG_FORMAT_XM "xen-xm"
>  
> +/* Number of Xen scheduler parameters */
> +#define XEN_SCHED_SEDF_NPARAM     5
>   

I assume the similar definition in xend_internal.c is wrong since it is
counting the domid as well.  Is that correct?  If so, we should fix it
in xend_internal.c.

> +#define XEN_SCHED_CREDIT_NPARAM   2
> +#define XEN_SCHED_CREDIT2_NPARAM  1
> +
>  static libxlDriverPrivatePtr libxl_driver = NULL;
>  
>  
> @@ -1918,6 +1923,63 @@ 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;
> +    }
> +
> +    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;
> +    }
> +
> +    switch(sched_id) {
> +    case XEN_SCHEDULER_SEDF:
> +        ret = strdup("sedf");
> +        *nparams = XEN_SCHED_SEDF_NPARAM;
> +        break;
> +    case XEN_SCHEDULER_CREDIT:
> +        ret = strdup("credit");
> +        *nparams = XEN_SCHED_CREDIT_NPARAM;
> +        break;
> +    case XEN_SCHEDULER_CREDIT2:
> +        ret = strdup("credit2");
> +        *nparams = XEN_SCHED_CREDIT2_NPARAM;
> +        break;
> +    case XEN_SCHEDULER_ARINC653:
> +        ret = strdup("arinc653");
> +        *nparams = 0;
> +        break;
>   

Hmm, seems these last two should be added to the xen-unified driver as
well - but that obviously doesn't affect this patch.

ACK, depending on the answer to my question above.

Regards,
Jim

> +    default:
> +        *nparams = 0;
> +        goto cleanup;
> +    }
> +
> +    if (!ret)
> +        virReportOOMError();
> +
> +cleanup:
> +    if (vm)
> +        virDomainObjUnlock(vm);
> +    return ret;
> +}
> +
>  static unsigned long long
>  libxlNodeGetFreeMemory(virConnectPtr conn)
>  {
> @@ -2083,7 +2145,7 @@ static virDriver libxlDriver = {
>      NULL,                       /* domainUpdateDeviceFlags */
>      NULL,                       /* domainGetAutostart */
>      NULL,                       /* domainSetAutostart */
> -    NULL,                       /* domainGetSchedulerType */
> +    libxlDomainGetSchedulerType,/* domainGetSchedulerType */
>      NULL,                       /* domainGetSchedulerParameters */
>      NULL,                       /* domainSetSchedulerParameters */
>      NULL,                       /* domainMigratePrepare */
>   




More information about the libvir-list mailing list