On 08/30/2012 02:55 AM, Hu Tao wrote:
if (ctrl->def->cpumask) {
/* XXX why don't we keep 'cpumask' in the libvirt cpumap
* format to start with ?!?! */
This comment now feels a bit out of date.
for (i = 0 ; i < maxcpu && i <
ctrl->def->cpumasklen ; i++)
if (ctrl->def->cpumask[i])
- VIR_USE_CPU(cpumap, i);
+ ignore_value(virBitmapSetBit(cpumap, i));
Why isn't ctrl->def->cpumask also stored as a virBitmap, at which point
this would be a copy operation instead of a hand-rolled loop?
/* We are pressuming we are running between fork/exec of LXC
While you are here, s/pressuming/presuming/
* so use '0' to indicate our own process ID. No threads
are
* running at this point
*/
- if (virProcessInfoSetAffinity(0, /* Self */
- cpumap, cpumaplen, maxcpu) < 0) {
+ if (virProcessInfoSetAffinity(0 /* Self */, cpumap) < 0) {
VIR_FREE(cpumap);
Oops - this cannot be VIR_FREE(cpumap)...
return -1;
}
- VIR_FREE(cpumap);
+ virBitmapFree(cpumap);
...but must match this change to virBitmapFree(cpumap).
@@ -4044,10 +4046,10 @@ qemudDomainPinEmulator(virDomainPtr dom,
virNodeInfo nodeinfo;
int ret = -1;
qemuDomainObjPrivatePtr priv;
- bool canResetting = true;
- int pcpu;
+ bool canResetting = false;
'canResetting' sounds odd. While you are touching this, can you rename
it to something saner, like 'doReset'?
+++ b/src/util/processinfo.c
@@ -59,8 +57,10 @@ realloc:
}
CPU_ZERO_S(masklen, mask);
- for (i = 0 ; i < maxcpu ; i++) {
- if (VIR_CPU_USABLE(map, maplen, 0, i))
+ for (i = 0 ; i < virBitmapSize(map); i++) {
+ if (virBitmapGetBit(map, i, &set) < 0)
+ return -1;
+ if (set)
CPU_SET_S(i, masklen, mask);
Another case where virBitmap should do this in a single function call,
rather than you rolling the loop.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org