On 11/15/2012 04:38 PM, Eric Blake wrote:
- cpumap = linuxParseCPUmap(present, SYSFS_SYSTEM_PATH "/cpu/online"); + + if (virFileExists(SYSFS_SYSTEM_PATH "/cpu/online")) { + cpumap = linuxParseCPUmap(present, SYSFS_SYSTEM_PATH "/cpu/online"); + } else { + int i; + + cpumap = virBitmapNew(present); + if (!cpumap) { + virReportOOMError(); + return NULL; + } + for (i = 0; i < present; i++) { + int online = virNodeGetCpuValue(SYSFS_SYSTEM_PATH, i, "online", 1); + if (online < 0) { + virBitmapFree(cpumap); + return NULL; + } + if (online) + ignore_value(virBitmapSetBit(cpumap, i)); + } + } if (max_id && cpumap) *max_id = present; return cpumap;
Fallback should provide correct result on back-level kernels. The code doesn't use the goto error/cleanup pattern, but there's a mixture in nodeinfo.c anyway and it wouldn't make it anymore compact. As far as I am concerned: +1. -- Mit freundlichen Grüßen/Kind Regards Viktor Mihajlovski IBM Deutschland Research & Development GmbH Vorsitzender des Aufsichtsrats: Martin Jetter Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list