unsigned int flags);
typedef char *
(*virDrvDomainGetOSType) (virDomainPtr domain);
-typedef unsigned long
+typedef unsigned long long
(*virDrvDomainGetMaxMemory) (virDomainPtr domain);
typedef int
(*virDrvDomainSetMaxMemory) (virDomainPtr domain,
/*
* esx_driver.c: core driver functions for managing VMware ESX hosts
*
- * Copyright (C) 2010-2011 Red Hat, Inc.
+ * Copyright (C) 2010-2012 Red Hat, Inc.
* Copyright (C) 2009-2011 Matthias Bolte <matthias.bolte@googlemail.com>
* Copyright (C) 2009 Maximilian Wilhelm <max@rfc2324.org>
*
-static unsigned long
+static unsigned long long
esxDomainGetMaxMemory(virDomainPtr domain)
{
esxPrivate *priv = domain->conn->privateData;
conn = domain->conn;
if (conn->driver->domainGetMaxMemory) {
- unsigned long ret;
+ unsigned long long ret;
ret = conn->driver->domainGetMaxMemory (domain);
if (ret == 0)
goto error;
+ if ((unsigned long) ret != ret) {
+ virLibDomainError(VIR_ERR_OVERFLOW, _("result too large: %llu"),
+ ret);
+ goto error;
+ }
return ret;
}
/*---------------------------------------------------------------------------*/
-/* Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+/* Copyright (C) 2006-2012 Red Hat, Inc.
+ * Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
* Copyright (C) 2011 Univention GmbH.
- * Copyright (C) 2006-2011 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
return type;
}
-static unsigned long
+static unsigned long long
libxlDomainGetMaxMemory(virDomainPtr dom)
{
libxlDriverPrivatePtr driver = dom->conn->privateData;
virDomainObjPtr vm;
- unsigned long ret = 0;
+ unsigned long long ret = 0;
libxlDriverLock(driver);
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
}
/* Returns max memory in kb, 0 if error */
-static unsigned long lxcDomainGetMaxMemory(virDomainPtr dom) {
+static unsigned long long
+lxcDomainGetMaxMemory(virDomainPtr dom)
+{
lxc_driver_t *driver = dom->conn->privateData;
virDomainObjPtr vm;
- unsigned long ret = 0;
+ unsigned long long ret = 0;
lxcDriverLock(driver);
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
}
/* Returns max memory in kb, 0 if error */
-static unsigned long qemudDomainGetMaxMemory(virDomainPtr dom) {
+static unsigned long long
+qemuDomainGetMaxMemory(virDomainPtr dom)
+{
struct qemud_driver *driver = dom->conn->privateData;
virDomainObjPtr vm;
- unsigned long ret = 0;
+ unsigned long long ret = 0;
qemuDriverLock(driver);
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
.domainDestroy = qemuDomainDestroy, /* 0.2.0 */
.domainDestroyFlags = qemuDomainDestroyFlags, /* 0.9.4 */
.domainGetOSType = qemudDomainGetOSType, /* 0.2.2 */
- .domainGetMaxMemory = qemudDomainGetMaxMemory, /* 0.4.2 */
+ .domainGetMaxMemory = qemuDomainGetMaxMemory, /* 0.4.2 */
.domainSetMaxMemory = qemudDomainSetMaxMemory, /* 0.4.2 */
.domainSetMemory = qemudDomainSetMemory, /* 0.4.2 */
.domainSetMemoryFlags = qemudDomainSetMemoryFlags, /* 0.9.0 */
# this list is fixed. new procedures and public APIs have to map [unsigned]
# hyper to [unsigned] long long
my $long_legacy = {
- DomainGetMaxMemory => { ret => { memory => 1 } },
DomainGetInfo => { ret => { maxMem => 1, memory => 1 } },
DomainMigrate => { arg => { flags => 1, resource => 1 } },
DomainMigrate2 => { arg => { flags => 1, resource => 1 } },
return ret;
}
-static unsigned long testGetMaxMemory(virDomainPtr domain) {
+static unsigned long long testGetMaxMemory(virDomainPtr domain) {
testConnPtr privconn = domain->conn->privateData;
virDomainObjPtr privdom;
- unsigned long ret = 0;
+ unsigned long long ret = 0;
testDriverLock(privconn);
privdom = virDomainFindByName(&privconn->domains,
}
/* Returns max memory in kb, 0 if error */
-static unsigned long umlDomainGetMaxMemory(virDomainPtr dom) {
+static unsigned long long
+umlDomainGetMaxMemory(virDomainPtr dom)
+{
struct uml_driver *driver = dom->conn->privateData;
virDomainObjPtr vm;
- unsigned long ret = 0;
+ unsigned long long ret = 0;
umlDriverLock(driver);
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
/*
* xen_driver.c: Unified Xen driver.
*
- * Copyright (C) 2007-2011 Red Hat, Inc.
+ * Copyright (C) 2007-2012 Red Hat, Inc.
*
* See COPYING.LIB for the License of this software
*
return NULL;
}
-static unsigned long
+static unsigned long long
xenUnifiedDomainGetMaxMemory (virDomainPtr dom)
{
GET_PRIVATE(dom->conn);
int i;
- unsigned long ret;
+ unsigned long long ret;
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
if (priv->opened[i] && drivers[i]->xenDomainGetMaxMemory) {
# error "unsupported platform"
#endif
-static unsigned long xenHypervisorGetMaxMemory(virDomainPtr domain);
+static unsigned long long xenHypervisorGetMaxMemory(virDomainPtr domain);
struct xenUnifiedDriver xenHypervisorDriver = {
.xenClose = xenHypervisorClose,
*
* Returns the memory size in kilobytes or 0 in case of error.
*/
-static unsigned long ATTRIBUTE_NONNULL (1)
+static unsigned long long ATTRIBUTE_NONNULL (1)
xenHypervisorGetMaxMemory(virDomainPtr domain)
{
xenUnifiedPrivatePtr priv;
/*
* xend_internal.c: access to Xen though the Xen Daemon interface
*
- * Copyright (C) 2010-2011 Red Hat, Inc.
+ * Copyright (C) 2010-2012 Red Hat, Inc.
* Copyright (C) 2005 Anthony Liguori <aliguori@us.ibm.com>
*
* This file is subject to the terms and conditions of the GNU Lesser General
*
* Returns the memory size in kilobytes or 0 in case of error.
*/
-unsigned long
+unsigned long long
xenDaemonDomainGetMaxMemory(virDomainPtr domain)
{
- unsigned long ret = 0;
+ unsigned long long ret = 0;
struct sexpr *root;
xenUnifiedPrivatePtr priv;
if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
virXendError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return(-1);
+ return 0;
}
priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
if (domain->id < 0 && priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
- return(-1);
+ return 0;
/* can we ask for a subset ? worth it ? */
root = sexpr_get(domain->conn, "/xend/domain/%s?detail=1", domain->name);
if (root == NULL)
- return(0);
+ return 0;
- ret = (unsigned long) sexpr_u64(root, "domain/memory") << 10;
+ ret = sexpr_u64(root, "domain/memory") << 10;
sexpr_free(root);
- return(ret);
+ return ret;
}
/*
* xend_internal.h
*
- * Copyright (C) 2006-2008, 2010-2011 Red Hat, Inc.
+ * Copyright (C) 2006-2008, 2010-2012 Red Hat, Inc.
* Copyright (C) 2005,2006
*
* Anthony Liguori <aliguori@us.ibm.com>
unsigned int flags);
char *xenDaemonDomainGetXMLDesc(virDomainPtr domain, unsigned int flags,
const char *cpus);
-unsigned long xenDaemonDomainGetMaxMemory(virDomainPtr domain);
+unsigned long long xenDaemonDomainGetMaxMemory(virDomainPtr domain);
char **xenDaemonListDomainsOld(virConnectPtr xend);
virDomainPtr xenDaemonDomainDefineXML(virConnectPtr xend, const char *sexpr);
/*
* xm_internal.h: helper routines for dealing with inactive domains
*
- * Copyright (C) 2006-2007, 2009-2011 Red Hat, Inc.
+ * Copyright (C) 2006-2007, 2009-2012 Red Hat, Inc.
* Copyright (C) 2006 Daniel P. Berrange
*
* This library is free software; you can redistribute it and/or
/*
* Get max memory limit from config
*/
-unsigned long xenXMDomainGetMaxMemory(virDomainPtr domain) {
+unsigned long long xenXMDomainGetMaxMemory(virDomainPtr domain) {
xenUnifiedPrivatePtr priv;
const char *filename;
xenXMConfCachePtr entry;
- unsigned long ret = 0;
+ unsigned long long ret = 0;
if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
xenXMError(VIR_ERR_INVALID_ARG, __FUNCTION__);
/*
* xm_internal.h: helper routines for dealing with inactive domains
*
- * Copyright (C) 2006-2007, 2010-2011 Red Hat, Inc.
+ * Copyright (C) 2006-2007, 2010-2012 Red Hat, Inc.
* Copyright (C) 2006 Daniel P. Berrange
*
* This library is free software; you can redistribute it and/or
char *xenXMDomainGetXMLDesc(virDomainPtr domain, unsigned int flags);
int xenXMDomainSetMemory(virDomainPtr domain, unsigned long memory);
int xenXMDomainSetMaxMemory(virDomainPtr domain, unsigned long memory);
-unsigned long xenXMDomainGetMaxMemory(virDomainPtr domain);
+unsigned long long xenXMDomainGetMaxMemory(virDomainPtr domain);
int xenXMDomainSetVcpus(virDomainPtr domain, unsigned int vcpus);
int xenXMDomainSetVcpusFlags(virDomainPtr domain, unsigned int vcpus,
unsigned int flags);
/*
* xs_internal.c: access to Xen Store
*
- * Copyright (C) 2006, 2009-2011 Red Hat, Inc.
+ * Copyright (C) 2006, 2009-2012 Red Hat, Inc.
*
* See COPYING.LIB for the License of this software
*
*
* Returns the memory size in kilobytes or 0 in case of error.
*/
-unsigned long
+unsigned long long
xenStoreDomainGetMaxMemory(virDomainPtr domain)
{
char *tmp;
- unsigned long ret = 0;
+ unsigned long long ret = 0;
xenUnifiedPrivatePtr priv;
if (!VIR_IS_CONNECTED_DOMAIN(domain))
return (ret);
if (domain->id == -1)
- return(-1);
+ return 0;
priv = domain->conn->privateData;
xenUnifiedLock(priv);
tmp = virDomainDoStoreQuery(domain->conn, domain->id, "memory/target");
if (tmp != NULL) {
- ret = (unsigned long) atol(tmp);
+ ret = atol(tmp);
VIR_FREE(tmp);
}
xenUnifiedUnlock(priv);
/*
* xs_internal.h: internal API for access to XenStore
*
- * Copyright (C) 2006, 2010-2011 Red Hat, Inc.
+ * Copyright (C) 2006, 2010-2012 Red Hat, Inc.
*
* See COPYING.LIB for the License of this software
*
unsigned long xenStoreGetMaxMemory (virDomainPtr domain);
int xenStoreDomainSetMemory (virDomainPtr domain,
unsigned long memory);
-unsigned long xenStoreDomainGetMaxMemory(virDomainPtr domain);
+unsigned long long xenStoreDomainGetMaxMemory(virDomainPtr domain);
int xenStoreDomainShutdown (virDomainPtr domain);
int xenStoreDomainReboot (virDomainPtr domain,
unsigned int flags);
/*
* xenapi_driver.c: Xen API driver.
- * Copyright (C) 2011 Red Hat, Inc.
+ * Copyright (C) 2011-2012 Red Hat, Inc.
* Copyright (C) 2009, 2010 Citrix Ltd.
*
* This library is free software; you can redistribute it and/or
* Returns maximum static memory for VM on success
* or 0 in case of error
*/
-static unsigned long
+static unsigned long long
xenapiDomainGetMaxMemory (virDomainPtr dom)
{
int64_t mem_static_max = 0;
vm = vms->contents[0];
xen_vm_get_memory_static_max(session, &mem_static_max, vm);
xen_vm_set_free(vms);
- return (unsigned long)(mem_static_max / 1024);
+ return (mem_static_max / 1024);
} else {
if (vms) xen_vm_set_free(vms);
xenapiSessionErrorHandler(dom->conn, VIR_ERR_NO_DOMAIN, NULL);