[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