]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
sched: introduce virDomainGetSchedulerParametersFlags
authorEric Blake <eblake@redhat.com>
Tue, 17 May 2011 21:17:14 +0000 (15:17 -0600)
committerDaniel Veillard <veillard@redhat.com>
Sun, 29 May 2011 10:38:10 +0000 (18:38 +0800)
If we can choose live or config when setting, then we need to
be able to choose which one we are querying.

Also, make the documentation clear that set must use a non-empty
subset (some of the hypervisors fail if params is NULL).

* include/libvirt/libvirt.h.in
(virDomainGetSchedulerParametersFlags): New prototype.
* src/libvirt.c (virDomainGetSchedulerParametersFlags): Implement
it.
* src/libvirt_public.syms: Export it.
* python/generator.py (skip_impl): Don't auto-generate.
* src/driver.h (virDrvDomainGetSchedulerParametersFlags): New
callback.

include/libvirt/libvirt.h.in
python/generator.py
src/driver.h
src/libvirt.c
src/libvirt_public.syms

index c14dca9be865a5f5e21fb08bffc1487da9e28319..d304e72b5a16bf2d458880e2ef3029ea9fe903a8 100644 (file)
@@ -350,6 +350,10 @@ typedef enum {
 int     virDomainGetSchedulerParameters (virDomainPtr domain,
                                          virTypedParameterPtr params,
                                          int *nparams);
+int     virDomainGetSchedulerParametersFlags (virDomainPtr domain,
+                                              virTypedParameterPtr params,
+                                              int *nparams,
+                                              unsigned int flags);
 
 /*
  * Change scheduler parameters
@@ -357,10 +361,6 @@ int     virDomainGetSchedulerParameters (virDomainPtr domain,
 int     virDomainSetSchedulerParameters (virDomainPtr domain,
                                          virTypedParameterPtr params,
                                          int nparams);
-
-/*
- * Change scheduler parameters
- */
 int     virDomainSetSchedulerParametersFlags (virDomainPtr domain,
                                               virTypedParameterPtr params,
                                               int nparams,
index 1741bba66940369e498c7c7aaff8d782034675f5..7c38fddb4aca63c6a35459fafcd28780bc8966e3 100755 (executable)
@@ -323,6 +323,7 @@ skip_impl = (
     'virNodeGetCellsFreeMemory',
     'virDomainGetSchedulerType',
     'virDomainGetSchedulerParameters',
+    'virDomainGetSchedulerParametersFlags',
     'virDomainSetSchedulerParameters',
     'virDomainSetSchedulerParametersFlags',
     'virDomainSetBlkioParameters',
index de1b6027ac25063163086bfa7a909b8cf9653b48..5df798a0c66b07c05a8305296661565c9018228c 100644 (file)
@@ -279,6 +279,13 @@ typedef int
                                          virTypedParameterPtr params,
                                          int *nparams);
 
+typedef int
+        (*virDrvDomainGetSchedulerParametersFlags)
+                                        (virDomainPtr domain,
+                                         virTypedParameterPtr params,
+                                         int *nparams,
+                                         unsigned int flags);
+
 typedef int
         (*virDrvDomainSetSchedulerParameters)
                                         (virDomainPtr domain,
@@ -686,6 +693,7 @@ struct _virDriver {
     virDrvDomainSetAutostart   domainSetAutostart;
     virDrvDomainGetSchedulerType       domainGetSchedulerType;
     virDrvDomainGetSchedulerParameters domainGetSchedulerParameters;
+    virDrvDomainGetSchedulerParametersFlags domainGetSchedulerParametersFlags;
     virDrvDomainSetSchedulerParameters domainSetSchedulerParameters;
     virDrvDomainSetSchedulerParametersFlags domainSetSchedulerParametersFlags;
     virDrvDomainMigratePrepare domainMigratePrepare;
index b043f3f4894c6a4d8113ef4b99fa22a21a5a5b4c..ee5c7cd9e6cf5d282aef3b1560f7aff69ad595f3 100644 (file)
@@ -5428,7 +5428,9 @@ error:
  *
  * Get all scheduler parameters, the @params array will be filled with the
  * values and @nparams will be updated to the number of valid elements in
- * @params.
+ * @params.  It is hypervisor specific whether this returns the live or
+ * persistent state; for more control, use
+ * virDomainGetSchedulerParametersFlags.
  *
  * Returns -1 in case of error, 0 in case of success.
  */
@@ -5470,6 +5472,65 @@ error:
     return -1;
 }
 
+/**
+ * virDomainGetSchedulerParametersFlags:
+ * @domain: pointer to domain object
+ * @params: pointer to scheduler parameter object
+ *          (return value)
+ * @nparams: pointer to number of scheduler parameter
+ *          (this value should be same than the returned value
+ *           nparams of virDomainGetSchedulerType)
+ * @flags: virDomainSchedParameterFlags
+ *
+ * Get the scheduler parameters, the @params array will be filled with the
+ * values.
+ *
+ * The value of @flags can be exactly VIR_DOMAIN_SCHEDPARAM_CURRENT,
+ * VIR_DOMAIN_SCHEDPARAM_LIVE, or VIR_DOMAIN_SCHEDPARAM_CONFIG.
+ *
+ * Returns -1 in case of error, 0 in case of success.
+ */
+int
+virDomainGetSchedulerParametersFlags(virDomainPtr domain,
+                                     virTypedParameterPtr params, int *nparams,
+                                     unsigned int flags)
+{
+    virConnectPtr conn;
+
+    VIR_DOMAIN_DEBUG(domain, "params=%p, nparams=%p, flags=%u",
+                     params, nparams, flags);
+
+    virResetLastError();
+
+    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
+        virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
+        virDispatchError(NULL);
+        return -1;
+    }
+
+    if (params == NULL || nparams == NULL || *nparams <= 0) {
+        virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__);
+        goto error;
+    }
+
+    conn = domain->conn;
+
+    if (conn->driver->domainGetSchedulerParametersFlags) {
+        int ret;
+        ret = conn->driver->domainGetSchedulerParametersFlags (domain, params,
+                                                               nparams, flags);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virLibConnError(VIR_ERR_NO_SUPPORT, __FUNCTION__);
+
+error:
+    virDispatchError(domain->conn);
+    return -1;
+}
+
 /**
  * virDomainSetSchedulerParameters:
  * @domain: pointer to domain object
@@ -5478,7 +5539,10 @@ error:
  *          (this value can be the same or less than the returned value
  *           nparams of virDomainGetSchedulerType)
  *
- * Change all or a subset or the scheduler parameters.
+ * Change all or a subset or the scheduler parameters.  It is
+ * hypervisor-specific whether this sets live, persistent, or both
+ * settings; for more control, use
+ * virDomainSetSchedulerParametersFlags.
  *
  * Returns -1 in case of error, 0 in case of success.
  */
@@ -5534,7 +5598,11 @@ error:
  *           nparams of virDomainGetSchedulerType)
  * @flags: virDomainSchedParameterFlags
  *
- * Change a subset or all scheduler parameters.
+ * Change a subset or all scheduler parameters.  The value of @flags
+ * should be either VIR_DOMAIN_SCHEDPARAM_CURRENT, or a bitwise-or of
+ * values from VIR_DOMAIN_SCHEDPARAM_LIVE and
+ * VIR_DOMAIN_SCHEDPARAM_CURRENT, although hypervisors vary in which
+ * flags are supported.
  *
  * Returns -1 in case of error, 0 in case of success.
  */
index 022db3c93e770478b93b54d583eaf6e6437653b8..4d4299a3f3d0be416af816c8e8c70d6f35a10ea0 100644 (file)
@@ -438,12 +438,13 @@ LIBVIRT_0.9.0 {
 
 LIBVIRT_0.9.2 {
     global:
+        virDomainGetSchedulerParametersFlags;
         virDomainGetState;
         virDomainInjectNMI;
+        virDomainMigrate2;
+        virDomainMigrateToURI2;
         virDomainScreenshot;
         virDomainSetSchedulerParametersFlags;
-       virDomainMigrate2;
-       virDomainMigrateToURI2;
         virInterfaceChangeBegin;
         virInterfaceChangeCommit;
         virInterfaceChangeRollback;