cc1: warnings being treated as errors
libxl/libxl_driver.c: In function 'libxlDomainSetVcpusFlags':
libxl/libxl_driver.c:1570:14: error: cast from function call of type 'double' to non-matching type 'unsigned int' [-Wbad-function-cast]
libxl/libxl_driver.c:1578:15: error: cast from function call of type 'double' to non-matching type 'unsigned int' [-Wbad-function-cast]
This was the only use of floor() and ceil(), and floating-point
is overkill for power-of-two manipulations.
* src/libxl/libxl_driver.c (libxlDomainSetVcpusFlags): Avoid -lm
for trivial computations.
if (!(def = virDomainObjGetPersistentDef(driver->caps, vm)))
goto cleanup;
- maplen = (unsigned int) ceil((double) nvcpus / 8);
+ maplen = VIR_CPU_MAPLEN(nvcpus);
if (VIR_ALLOC_N(bitmask, maplen) < 0) {
virReportOOMError();
goto cleanup;
}
- memset(bitmask, 0, maplen);
for (i = 0; i < nvcpus; ++i) {
- pos = (unsigned int) floor((double) i / 8);
+ pos = i / 8;
bitmask[pos] |= 1 << (i % 8);
}