]> xenbits.xensource.com Git - libvirt.git/commitdiff
Adding structure and defines for virDomainSet/GetMemoryParameters
authorNikunj A. Dadhania <nikunj@linux.vnet.ibm.com>
Tue, 12 Oct 2010 13:43:27 +0000 (15:43 +0200)
committerDaniel Veillard <veillard@redhat.com>
Tue, 12 Oct 2010 17:26:09 +0000 (19:26 +0200)
This patch adds a structure virMemoryParameter, it contains the name of
the
parameter and the type of the parameter along with a union.

dv:
+ rename enums to VIR_DOMAIN_MEMORY_PARAM_*
+ remove some extraneous tabs

v4:
+ Add unsigned int flags to the public api for future extensions

v3:
+ Protoype for virDomainGetMemoryParameters and dummy python binding.

v2:
+ Includes dummy python bindings for the library to build cleanly.
+ Define string constants like "hard_limit", etc.
+ re-order this patch.

include/libvirt/libvirt.h.in
python/generator.py
python/libvirt-override-api.xml
python/libvirt-override.c

index b45f7ecaf5edeabfc2961b9856d38aada774ff9c..e244eacd9c433f97fb069d26d54b11cd6163b4ca 100644 (file)
@@ -674,6 +674,69 @@ int                     virDomainGetInfo        (virDomainPtr domain,
 char *                  virDomainGetSchedulerType(virDomainPtr domain,
                                                  int *nparams);
 
+/**
+ * virDomainMemoryParameterType:
+ *
+ * A memory parameter field type
+ */
+typedef enum {
+    VIR_DOMAIN_MEMORY_PARAM_INT     = 1, /* integer case */
+    VIR_DOMAIN_MEMORY_PARAM_UINT    = 2, /* unsigned integer case */
+    VIR_DOMAIN_MEMORY_PARAM_LLONG   = 3, /* long long case */
+    VIR_DOMAIN_MEMORY_PARAM_ULLONG  = 4, /* unsigned long long case */
+    VIR_DOMAIN_MEMORY_PARAM_DOUBLE  = 5, /* double case */
+    VIR_DOMAIN_MEMORY_PARAM_BOOLEAN = 6  /* boolean(character) case */
+} virMemoryParameterType;
+
+/**
+ * VIR_DOMAIN_MEMORY_FIELD_LENGTH:
+ *
+ * Macro providing the field length of virMemoryParameter
+ */
+
+#define VIR_DOMAIN_MEMORY_FIELD_LENGTH 80
+#define VIR_DOMAIN_MEMORY_HARD_LIMIT "hard_limit"
+#define VIR_DOMAIN_MEMORY_SOFT_LIMIT "soft_limit"
+#define VIR_DOMAIN_MEMORY_MIN_GUARANTEE "min_guarantee"
+#define VIR_DOMAIN_SWAP_HARD_LIMIT "swap_hard_limit"
+
+/**
+ * virDomainMemoryParameter:
+ *
+ * a virDomainMemoryParameter is the set of scheduler parameters
+ */
+
+typedef struct _virMemoryParameter virMemoryParameter;
+
+struct _virMemoryParameter {
+    char field[VIR_DOMAIN_MEMORY_FIELD_LENGTH];  /* parameter name */
+    int type;   /* parameter type */
+    union {
+        int i;                          /* data for integer case */
+        unsigned int ui;        /* data for unsigned integer case */
+        long long int l;        /* data for long long integer case */
+        unsigned long long int ul;      /* data for unsigned long long integer case */
+        double d;       /* data for double case */
+        char b;         /* data for char case */
+    } value; /* parameter value */
+};
+
+/**
+ * virMemoryParameterPtr:
+ *
+ * a virMemoryParameterPtr is a pointer to a virMemoryParameter structure.
+ */
+
+typedef virMemoryParameter *virMemoryParameterPtr;
+
+/* Set memory tunables for the domain*/
+int     virDomainSetMemoryParameters(virDomainPtr domain,
+                                     virMemoryParameterPtr params,
+                                     int nparams, unsigned int flags);
+int     virDomainGetMemoryParameters(virDomainPtr domain,
+                                     virMemoryParameterPtr params,
+                                     int *nparams, unsigned int flags);
+
 /*
  * Dynamic control of domains
  */
index d876df6abe56384484fb1fc61ec9228c72f63dc5..68009b947e74720de9b5f8b7412c575db29da035 100755 (executable)
@@ -306,6 +306,8 @@ skip_impl = (
     'virDomainGetSchedulerType',
     'virDomainGetSchedulerParameters',
     'virDomainSetSchedulerParameters',
+    'virDomainSetMemoryParameters',
+    'virDomainGetMemoryParameters',
     'virDomainGetVcpus',
     'virDomainPinVcpu',
     'virSecretGetValue',
index ca169939b7af11ae0391f168c9771cd2c8288040..f2096080ebe265a8a149717b9efcf71b937a3cac 100644 (file)
       <arg name='domain' type='virDomainPtr' info='pointer to domain object'/>
       <arg name='params' type='virSchedParameterPtr' info='pointer to scheduler parameter objects'/>
     </function>
+    <function name='virDomainSetMemoryParameters' file='python'>
+      <info>Change the memory tunables</info>
+      <return type='int' info='-1 in case of error, 0 in case of success.'/>
+      <arg name='domain' type='virDomainPtr' info='pointer to domain object'/>
+      <arg name='params' type='virMemoryParameterPtr' info='pointer to memory tunable objects'/>
+    </function>
+    <function name='virDomainGetMemoryParameters' file='python'>
+      <info>Get the memory parameters, the @params array will be filled with the values.</info>
+      <return type='int' info='-1 in case of error, 0 in case of success.'/>
+      <arg name='domain' type='virDomainPtr' info='pointer to domain object'/>
+      <arg name='params' type='virMemoryParameterPtr' info='pointer to memory tunable objects'/>
+    </function>
     <function name='virConnectListStoragePools' file='python'>
       <info>list the storage pools, stores the pointers to the names in @names</info>
       <arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
index 54a84c2f8976282fb91dbf73f37cb34671a78640..c43ab15f8b88fae943df575bbcf62bb33f8635f4 100644 (file)
@@ -371,6 +371,20 @@ libvirt_virDomainSetSchedulerParameters(PyObject *self ATTRIBUTE_UNUSED,
     return VIR_PY_INT_SUCCESS;
 }
 
+/* FIXME: This is a place holder for the implementation. */
+static PyObject *
+libvirt_virDomainSetMemoryParameters(PyObject *self ATTRIBUTE_UNUSED,
+                                     PyObject *args) {
+    return VIR_PY_INT_FAIL;
+}
+
+/* FIXME: This is a place holder for the implementation. */
+static PyObject *
+libvirt_virDomainGetMemoryParameters(PyObject *self ATTRIBUTE_UNUSED,
+                                     PyObject *args) {
+    return VIR_PY_INT_FAIL;
+}
+
 static PyObject *
 libvirt_virDomainGetVcpus(PyObject *self ATTRIBUTE_UNUSED,
                           PyObject *args) {