]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
Clarify semantic of nparams argument of virDomainGetSchedulerType
authorMatthias Bolte <matthias.bolte@googlemail.com>
Wed, 18 May 2011 07:55:32 +0000 (09:55 +0200)
committerMatthias Bolte <matthias.bolte@googlemail.com>
Wed, 18 May 2011 16:20:47 +0000 (18:20 +0200)
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
src/libvirt.c
src/libxl/libxl_driver.c
src/test/test_driver.c
src/xen/xend_internal.c
src/xenapi/xenapi_driver.c

index bb9d60a44a871ce2c020f937291fdf86f9eaa2ff..7fe5446839f035aa38960b43e15955c0c7ddc921 100644 (file)
@@ -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;
 }
index 56b1257b821b3e3e0bc9828879a69bb3d884127c..45bc9b072ea8155c5deeccbfabb1c9e604073f1e 100644 (file)
@@ -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.
  */
index 5cc9362deff0cb144ed6a76b9ae7252935a78270..6b2d806b012ca9e6c843524738a88c9b938b176c 100644 (file)
@@ -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");
index eadd587b6f0354a4f882c838907075f8c5ce674f..e716c98f64cbf0a0fcc6404cae9430ec3e7726aa 100644 (file)
@@ -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();
index dfa03423488966cfdccfd8aa7c8890795b04dd60..359d5f497216511fec3ea10ac149e5eb155a307a 100644 (file)
@@ -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;
index 13b9161e094b7492cd5a9c3ec49eef4fa0f85fb2..6f642084233febbcc1a7d91bdc83de87ae880f79 100644 (file)
@@ -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;