* src/xend_internal.c: remove [] around cpumaps for recent xend
patch by Tatsuro Enokura daniel
This commit is contained in:
parent
ee0d7552e2
commit
fa1ceca232
@ -1,3 +1,8 @@
|
|||||||
|
Thu May 14 12:29:41 CEST 2009 Daniel Veillard <veillard@redhat.com>
|
||||||
|
|
||||||
|
* src/xend_internal.c: remove [] around cpumaps for recent xend
|
||||||
|
patch by Tatsuro Enokura
|
||||||
|
|
||||||
Wed May 13 13:37:02 EDT 2009 Cole Robinson <crobinso@redhat.com>
|
Wed May 13 13:37:02 EDT 2009 Cole Robinson <crobinso@redhat.com>
|
||||||
|
|
||||||
* src/virsh.c: Fix a few 'used uninitialized' warnings.
|
* src/virsh.c: Fix a few 'used uninitialized' warnings.
|
||||||
|
@ -3765,6 +3765,11 @@ xenDaemonDomainSetVcpus(virDomainPtr domain, unsigned int vcpus)
|
|||||||
* @maplen: length of cpumap in bytes
|
* @maplen: length of cpumap in bytes
|
||||||
*
|
*
|
||||||
* Dynamically change the real CPUs which can be allocated to a virtual CPU.
|
* Dynamically change the real CPUs which can be allocated to a virtual CPU.
|
||||||
|
* NOTE: The XenD cpu affinity map format changed from "[0,1,2]" to
|
||||||
|
* "0,1,2"
|
||||||
|
* the XenD cpu affinity works only after cset 19579.
|
||||||
|
* there is no fine grained xend version detection possible, so we
|
||||||
|
* use the old format for anything before version 3
|
||||||
*
|
*
|
||||||
* Returns 0 for success; -1 (with errno) on error
|
* Returns 0 for success; -1 (with errno) on error
|
||||||
*/
|
*/
|
||||||
@ -3772,8 +3777,9 @@ int
|
|||||||
xenDaemonDomainPinVcpu(virDomainPtr domain, unsigned int vcpu,
|
xenDaemonDomainPinVcpu(virDomainPtr domain, unsigned int vcpu,
|
||||||
unsigned char *cpumap, int maplen)
|
unsigned char *cpumap, int maplen)
|
||||||
{
|
{
|
||||||
char buf[VIR_UUID_BUFLEN], mapstr[sizeof(cpumap_t) * 64] = "[";
|
char buf[VIR_UUID_BUFLEN], mapstr[sizeof(cpumap_t) * 64];
|
||||||
int i, j;
|
int i, j;
|
||||||
|
xenUnifiedPrivatePtr priv;
|
||||||
|
|
||||||
if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)
|
if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)
|
||||||
|| (cpumap == NULL) || (maplen < 1) || (maplen > (int)sizeof(cpumap_t))) {
|
|| (cpumap == NULL) || (maplen < 1) || (maplen > (int)sizeof(cpumap_t))) {
|
||||||
@ -3782,13 +3788,25 @@ xenDaemonDomainPinVcpu(virDomainPtr domain, unsigned int vcpu,
|
|||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
|
||||||
|
if (priv->xendConfigVersion < 3) {
|
||||||
|
buf[0] = ']';
|
||||||
|
buf[1] = 0;
|
||||||
|
} else {
|
||||||
|
buf[0] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* from bit map, build character string of mapped CPU numbers */
|
/* from bit map, build character string of mapped CPU numbers */
|
||||||
for (i = 0; i < maplen; i++) for (j = 0; j < 8; j++)
|
for (i = 0; i < maplen; i++) for (j = 0; j < 8; j++)
|
||||||
if (cpumap[i] & (1 << j)) {
|
if (cpumap[i] & (1 << j)) {
|
||||||
snprintf(buf, sizeof(buf), "%d,", (8 * i) + j);
|
snprintf(buf, sizeof(buf), "%d,", (8 * i) + j);
|
||||||
strcat(mapstr, buf);
|
strcat(mapstr, buf);
|
||||||
}
|
}
|
||||||
|
if (priv->xendConfigVersion < 3)
|
||||||
mapstr[strlen(mapstr) - 1] = ']';
|
mapstr[strlen(mapstr) - 1] = ']';
|
||||||
|
else
|
||||||
|
mapstr[strlen(mapstr) - 1] = 0;
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%d", vcpu);
|
snprintf(buf, sizeof(buf), "%d", vcpu);
|
||||||
return(xend_op(domain->conn, domain->name, "op", "pincpu", "vcpu", buf,
|
return(xend_op(domain->conn, domain->name, "op", "pincpu", "vcpu", buf,
|
||||||
"cpumap", mapstr, NULL));
|
"cpumap", mapstr, NULL));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user