Add the sysfs_prefix argument to the call to allow for setting the
path for tests to something other than SYSFS_SYSTEM_PATH.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/lxc/lxc_controller.c | 2 +-
src/nodeinfo.c | 20 +++++++++++++-------
src/nodeinfo.h | 2 +-
src/qemu/qemu_driver.c | 10 +++++-----
src/qemu/qemu_process.c | 2 +-
src/vz/vz_driver.c | 2 +-
src/vz/vz_sdk.c | 2 +-
tests/vircgrouptest.c | 4 ++--
8 files changed, 25 insertions(+), 19 deletions(-)
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index 828b8a8..27e2e3a 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -705,7 +705,7 @@ static int virLXCControllerSetupCpuAffinity(virLXCControllerPtr ctrl)
/* setaffinity fails if you set bits for CPUs which
* aren't present, so we have to limit ourselves */
- if ((hostcpus = nodeGetCPUCount()) < 0)
+ if ((hostcpus = nodeGetCPUCount(NULL)) < 0)
return -1;
if (maxcpu > hostcpus)
diff --git a/src/nodeinfo.c b/src/nodeinfo.c
index f3e3108..409f922 100644
--- a/src/nodeinfo.c
+++ b/src/nodeinfo.c
@@ -1195,7 +1195,7 @@ int nodeGetMemoryStats(int cellNum ATTRIBUTE_UNUSED,
}
int
-nodeGetCPUCount(void)
+nodeGetCPUCount(const char *sysfs_prefix ATTRIBUTE_UNUSED)
{
#if defined(__linux__)
/* To support older kernels that lack cpu/present, such as 2.6.18
@@ -1204,21 +1204,27 @@ nodeGetCPUCount(void)
* will be consecutive.
*/
char *present_path = NULL;
+ const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_SYSTEM_PATH;
char *cpupath = NULL;
int ncpu = -1;
- if (!(present_path = linuxGetCPUPresentPath(NULL)))
+ if (!(present_path = linuxGetCPUPresentPath(prefix)))
return -1;
if (virFileExists(present_path)) {
ncpu = linuxParseCPUmax(present_path);
- } else if (virFileExists(SYSFS_SYSTEM_PATH "/cpu/cpu0")) {
+ goto cleanup;
+ }
+
+ if (virAsprintf(&cpupath, "%s/cpu/cpu0", prefix) < 0)
+ goto cleanup;
+ if (virFileExists(cpupath)) {
ncpu = 0;
do {
ncpu++;
VIR_FREE(cpupath);
if (virAsprintf(&cpupath, "%s/cpu/cpu%d",
- SYSFS_SYSTEM_PATH, ncpu) < 0) {
+ prefix, ncpu) < 0) {
ncpu = -1;
goto cleanup;
}
@@ -1251,7 +1257,7 @@ nodeGetPresentCPUBitmap(void)
virBitmapPtr bitmap = NULL;
#endif
- if ((max_present = nodeGetCPUCount()) < 0)
+ if ((max_present = nodeGetCPUCount(NULL)) < 0)
return NULL;
#ifdef __linux__
@@ -1274,7 +1280,7 @@ nodeGetCPUBitmap(int *max_id ATTRIBUTE_UNUSED)
virBitmapPtr cpumap;
int present;
- present = nodeGetCPUCount();
+ present = nodeGetCPUCount(NULL);
if (present < 0)
return NULL;
@@ -1621,7 +1627,7 @@ nodeGetCPUMap(unsigned char **cpumap,
virCheckFlags(0, -1);
if (!cpumap && !online)
- return nodeGetCPUCount();
+ return nodeGetCPUCount(NULL);
if (!(cpus = nodeGetCPUBitmap(&maxpresent)))
goto cleanup;
diff --git a/src/nodeinfo.h b/src/nodeinfo.h
index 047bd5c..4f9699e 100644
--- a/src/nodeinfo.h
+++ b/src/nodeinfo.h
@@ -45,7 +45,7 @@ int nodeGetMemory(unsigned long long *mem,
virBitmapPtr nodeGetPresentCPUBitmap(void);
virBitmapPtr nodeGetCPUBitmap(int *max_id);
-int nodeGetCPUCount(void);
+int nodeGetCPUCount(const char *sysfs_prefix);
int nodeGetMemoryParameters(virTypedParameterPtr params,
int *nparams,
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 4cfae03..6fbe68a 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -1422,7 +1422,7 @@ qemuDomainHelperGetVcpus(virDomainObjPtr vm, virVcpuInfoPtr info,
int maxinfo,
size_t i, v;
qemuDomainObjPrivatePtr priv = vm->privateData;
- if ((hostcpus = nodeGetCPUCount()) < 0)
+ if ((hostcpus = nodeGetCPUCount(NULL)) < 0)
return -1;
if (priv->vcpupids == NULL) {
@@ -5237,7 +5237,7 @@ qemuDomainGetVcpuPinInfo(virDomainPtr dom,
if (!(def = virDomainObjGetOneDef(vm, flags)))
goto cleanup;
- if ((hostcpus = nodeGetCPUCount()) < 0)
+ if ((hostcpus = nodeGetCPUCount(NULL)) < 0)
goto cleanup;
if (!(allcpumap = virBitmapNew(hostcpus)))
@@ -5425,7 +5425,7 @@ qemuDomainGetEmulatorPinInfo(virDomainPtr dom,
if (!(def = virDomainObjGetOneDef(vm, flags)))
goto cleanup;
- if ((hostcpus = nodeGetCPUCount()) < 0)
+ if ((hostcpus = nodeGetCPUCount(NULL)) < 0)
goto cleanup;
if (def->cputune.emulatorpin) {
@@ -5612,7 +5612,7 @@ qemuDomainGetIOThreadsLive(virQEMUDriverPtr driver,
goto endjob;
}
- if ((hostcpus = nodeGetCPUCount()) < 0)
+ if ((hostcpus = nodeGetCPUCount(NULL)) < 0)
goto endjob;
if (VIR_ALLOC_N(info_ret, niothreads) < 0)
@@ -5672,7 +5672,7 @@ qemuDomainGetIOThreadsConfig(virDomainDefPtr targetDef,
if (targetDef->iothreads == 0)
return 0;
- if ((hostcpus = nodeGetCPUCount()) < 0)
+ if ((hostcpus = nodeGetCPUCount(NULL)) < 0)
goto cleanup;
if (VIR_ALLOC_N(info_ret, targetDef->iothreads) < 0)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index ba84182..4c1b8c1 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -2322,7 +2322,7 @@ qemuProcessInitCpuAffinity(virDomainObjPtr vm)
/* setaffinity fails if you set bits for CPUs which
* aren't present, so we have to limit ourselves */
- if ((hostcpus = nodeGetCPUCount()) < 0)
+ if ((hostcpus = nodeGetCPUCount(NULL)) < 0)
goto cleanup;
if (hostcpus > QEMUD_CPUMASK_LEN)
diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
index 8c3c818..06fb579 100644
--- a/src/vz/vz_driver.c
+++ b/src/vz/vz_driver.c
@@ -820,7 +820,7 @@ vzDomainGetVcpus(virDomainPtr domain,
goto cleanup;
}
- if ((hostcpus = nodeGetCPUCount()) < 0)
+ if ((hostcpus = nodeGetCPUCount(NULL)) < 0)
goto cleanup;
maxcpu = maplen * 8;
diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
index 1b8298c..be43d53 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -1141,7 +1141,7 @@ prlsdkConvertCpuInfo(PRL_HANDLE sdkdom,
PRL_RESULT pret;
int ret = -1;
- if ((hostcpus = nodeGetCPUCount()) < 0)
+ if ((hostcpus = nodeGetCPUCount(NULL)) < 0)
goto cleanup;
/* get number of CPUs */
diff --git a/tests/vircgrouptest.c b/tests/vircgrouptest.c
index dddf33a..7a87640 100644
--- a/tests/vircgrouptest.c
+++ b/tests/vircgrouptest.c
@@ -649,8 +649,8 @@ static int testCgroupGetPercpuStats(const void *args
ATTRIBUTE_UNUSED)
goto cleanup;
}
- if (nodeGetCPUCount() != EXPECTED_NCPUS) {
- fprintf(stderr, "Unexpected: nodeGetCPUCount() yields: %d\n",
nodeGetCPUCount());
+ if (nodeGetCPUCount(NULL) != EXPECTED_NCPUS) {
+ fprintf(stderr, "Unexpected: nodeGetCPUCount() yields: %d\n",
nodeGetCPUCount(NULL));
goto cleanup;
}
--
2.1.0