From 7b2f20b10be903133419be9bed2fc02c1c14f513 Mon Sep 17 00:00:00 2001 From: Matthias Bolte Date: Wed, 18 May 2011 09:55:32 +0200 Subject: [PATCH] Clarify semantic of nparams argument of virDomainGetSchedulerType Some drivers assumed it can be NULL (e.g. qemu and lxc) and check it before assigning to it, other drivers assumed it must be non-NULL (e.g. test and esx) and just assigned to it. Unify this to nparams being optional and document it. --- src/esx/esx_driver.c | 4 +++- src/libvirt.c | 5 +++-- src/libxl/libxl_driver.c | 6 ++++-- src/test/test_driver.c | 4 +++- src/xen/xend_internal.c | 9 +++++---- src/xenapi/xenapi_driver.c | 4 +++- 6 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index bb9d60a44a..7fe5446839 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -3513,7 +3513,9 @@ esxDomainGetSchedulerType(virDomainPtr domain ATTRIBUTE_UNUSED, int *nparams) return NULL; } - *nparams = 3; /* reservation, limit, shares */ + if (nparams != NULL) { + *nparams = 3; /* reservation, limit, shares */ + } return type; } diff --git a/src/libvirt.c b/src/libvirt.c index 56b1257b82..45bc9b072e 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -4973,9 +4973,10 @@ error: /** * virDomainGetSchedulerType: * @domain: pointer to domain object - * @nparams: number of scheduler parameters(return value) + * @nparams: pointer to number of scheduler parameters, can be NULL + * (return value) * - * Get the scheduler type. + * Get the scheduler type and the number of scheduler parameters. * * Returns NULL in case of error. The caller must free the returned string. */ diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 5cc9362def..6b2d806b01 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -2396,14 +2396,16 @@ libxlDomainGetSchedulerType(virDomainPtr dom, int *nparams) goto cleanup; } - *nparams = 0; + if (nparams) + *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; + if (nparams) + *nparams = XEN_SCHED_CREDIT_NPARAM; break; case XEN_SCHEDULER_CREDIT2: ret = strdup("credit2"); diff --git a/src/test/test_driver.c b/src/test/test_driver.c index eadd587b6f..e716c98f64 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2624,7 +2624,9 @@ static char *testDomainGetSchedulerType(virDomainPtr domain ATTRIBUTE_UNUSED, { char *type = NULL; - *nparams = 1; + if (nparams) + *nparams = 1; + type = strdup("fair"); if (!type) virReportOOMError(); diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c index dfa0342348..359d5f4972 100644 --- a/src/xen/xend_internal.c +++ b/src/xen/xend_internal.c @@ -3531,8 +3531,7 @@ xenDaemonGetSchedulerType(virDomainPtr domain, int *nparams) const char *ret = NULL; char *schedulertype = NULL; - if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL) - || (nparams == NULL)) { + if (domain->conn == NULL || domain->name == NULL) { virXendError(VIR_ERR_INVALID_ARG, __FUNCTION__); return NULL; } @@ -3562,14 +3561,16 @@ xenDaemonGetSchedulerType(virDomainPtr domain, int *nparams) virReportOOMError(); goto error; } - *nparams = XEN_SCHED_CRED_NPARAM; + if (nparams) + *nparams = XEN_SCHED_CRED_NPARAM; } else if (STREQ (ret, "sedf")) { schedulertype = strdup("sedf"); if (schedulertype == NULL){ virReportOOMError(); goto error; } - *nparams = XEN_SCHED_SEDF_NPARAM; + if (nparams) + *nparams = XEN_SCHED_SEDF_NPARAM; } else { virXendError(VIR_ERR_INTERNAL_ERROR, "%s", _("Unknown scheduler")); goto error; diff --git a/src/xenapi/xenapi_driver.c b/src/xenapi/xenapi_driver.c index 13b9161e09..6f64208423 100644 --- a/src/xenapi/xenapi_driver.c +++ b/src/xenapi/xenapi_driver.c @@ -1767,7 +1767,9 @@ static char * xenapiDomainGetSchedulerType (virDomainPtr dom ATTRIBUTE_UNUSED, int *nparams) { char *result = NULL; - *nparams = 0; + + if (nparams) + *nparams = 0; if (!(result = strdup("credit"))) virReportOOMError(); return result; -- 2.47.2