From: Peter Krempa Date: Mon, 29 Sep 2014 15:38:18 +0000 (+0200) Subject: conf: Move definition of virDomainParseMemory X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=3b9a26a3252e8184fa8f0749941f691c43f23f1e;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git conf: Move definition of virDomainParseMemory Shove it to the top of the file so that it can be reused earlier. --- diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 06341167f..42c022370 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -6372,6 +6372,36 @@ virDomainParseScaledValue(const char *xpath, } +/* Parse a memory element located at XPATH within CTXT, and store the + * result into MEM. If REQUIRED, then the value must exist; + * otherwise, the value is optional. The value is in blocks of 1024. + * Return 0 on success, -1 on failure after issuing error. */ +static int +virDomainParseMemory(const char *xpath, xmlXPathContextPtr ctxt, + unsigned long long *mem, bool required) +{ + int ret = -1; + unsigned long long bytes, max; + + /* On 32-bit machines, our bound is 0xffffffff * KiB. On 64-bit + * machines, our bound is off_t (2^63). */ + if (sizeof(unsigned long) < sizeof(long long)) + max = 1024ull * ULONG_MAX; + else + max = LLONG_MAX; + + ret = virDomainParseScaledValue(xpath, ctxt, &bytes, 1024, max, required); + if (ret < 0) + goto cleanup; + + /* Yes, we really do use kibibytes for our internal sizing. */ + *mem = VIR_DIV_UP(bytes, 1024); + ret = 0; + cleanup: + return ret; +} + + static int virDomainControllerModelTypeFromString(const virDomainControllerDef *def, const char *model) @@ -11917,36 +11947,6 @@ virDomainDefMaybeAddInput(virDomainDefPtr def, } -/* Parse a memory element located at XPATH within CTXT, and store the - * result into MEM. If REQUIRED, then the value must exist; - * otherwise, the value is optional. The value is in blocks of 1024. - * Return 0 on success, -1 on failure after issuing error. */ -static int -virDomainParseMemory(const char *xpath, xmlXPathContextPtr ctxt, - unsigned long long *mem, bool required) -{ - int ret = -1; - unsigned long long bytes, max; - - /* On 32-bit machines, our bound is 0xffffffff * KiB. On 64-bit - * machines, our bound is off_t (2^63). */ - if (sizeof(unsigned long) < sizeof(long long)) - max = 1024ull * ULONG_MAX; - else - max = LLONG_MAX; - - ret = virDomainParseScaledValue(xpath, ctxt, &bytes, 1024, max, required); - if (ret < 0) - goto cleanup; - - /* Yes, we really do use kibibytes for our internal sizing. */ - *mem = VIR_DIV_UP(bytes, 1024); - ret = 0; - cleanup: - return ret; -} - - static int virDomainHugepagesParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt,