All these commits need a bit a information w/r/t how the task is being
accomplished. It doesn't need to be a lot of words, but at least something.
On 08/09/2016 08:39 AM, Jason Miesionczek wrote:
---
src/hyperv/hyperv_driver.c | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c
index 7d956d3..861d5ab 100644
--- a/src/hyperv/hyperv_driver.c
+++ b/src/hyperv/hyperv_driver.c
@@ -1573,6 +1573,37 @@ hypervDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int
maxinfo,
return count;
}
+static unsigned long long
+hypervNodeGetFreeMemory(virConnectPtr conn)
+{
+ unsigned long long res = 0;
+ hypervPrivate *priv = conn->privateData;
+ virBuffer query = VIR_BUFFER_INITIALIZER;
+ Win32_OperatingSystem *operatingSystem = NULL;
+
+ /* Get Win32_OperatingSystem */
+ virBufferAddLit(&query, WIN32_OPERATINGSYSTEM_WQL_SELECT);
Aha! this is what I was referring to in a previous patch - see how the
string constant is 'hidden' behind some #define. That's what you really
should be doing for all these patches.
See MSVM_COMPUTERSYSTEM_CLASSNAME and MSVM_COMPUTERSYSTEM_WQL_SELECT for
an example as well as hypervConnectOpen which makes 3 virBufferAddLit
calls in order to formulate a string to make the call to
hypervGetMsvmComputerSystemList
+
+ if (hypervGetWin32OperatingSystemList(priv, &query, &operatingSystem) <
0) {
+ goto cleanup;
+ }
Brackets/syntax-check
+
+ if (operatingSystem == NULL) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
Need "%s", /syntax-check
+ _("Could not get
Win32_OperatingSystem"));
+ goto cleanup;
+ }
+
+ /* Return free memory in bytes */
+ res = operatingSystem->data->FreePhysicalMemory * 1024;
+
+ cleanup:
+ hypervFreeObject(priv, (hypervObject *) operatingSystem);
+ virBufferFreeAndReset(&query);
+
+ return res;
+}
+
static virHypervisorDriver hypervHypervisorDriver = {
.name = "Hyper-V",
.connectOpen = hypervConnectOpen, /* 0.9.5 */
@@ -1580,6 +1611,7 @@ static virHypervisorDriver hypervHypervisorDriver = {
.connectGetType = hypervConnectGetType, /* 0.9.5 */
.connectGetHostname = hypervConnectGetHostname, /* 0.9.5 */
.nodeGetInfo = hypervNodeGetInfo, /* 0.9.5 */
+ .nodeGetFreeMemory = hypervNodeGetFreeMemory, /* 1.2.10 */
2.3.0 at the earliest
John
.connectListDomains = hypervConnectListDomains, /* 0.9.5 */
.connectNumOfDomains = hypervConnectNumOfDomains, /* 0.9.5 */
.connectListAllDomains = hypervConnectListAllDomains, /* 0.10.2 */