mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
Tue Jun 19 10:30:00 BST 2007 Richard W.M. Jones <rjones@redhat.com>
* src/virsh.c: vcpupin command now documented properly and gives clearer error messages if the cpulist is wrong (Masayuki Sunou).
This commit is contained in:
parent
a03844f8ca
commit
3b7046a743
@ -1,3 +1,9 @@
|
||||
Tue Jun 19 10:30:00 BST 2007 Richard W.M. Jones <rjones@redhat.com>
|
||||
|
||||
* src/virsh.c: vcpupin command now documented properly and
|
||||
gives clearer error messages if the cpulist is wrong
|
||||
(Masayuki Sunou).
|
||||
|
||||
Tue Jun 19 11:11:18 CEST 2007 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/xend_internal.c: drop the release information as this
|
||||
|
40
src/virsh.c
40
src/virsh.c
@ -1508,7 +1508,7 @@ cmdVcpuinfo(vshControl * ctl, vshCmd * cmd)
|
||||
* "vcpupin" command
|
||||
*/
|
||||
static vshCmdInfo info_vcpupin[] = {
|
||||
{"syntax", "vcpupin <domain>"},
|
||||
{"syntax", "vcpupin <domain> <vcpu> <cpulist>"},
|
||||
{"help", gettext_noop("control domain vcpu affinity")},
|
||||
{"desc", gettext_noop("Pin domain VCPUs to host physical CPUs.")},
|
||||
{NULL, NULL}
|
||||
@ -1533,6 +1533,8 @@ cmdVcpupin(vshControl * ctl, vshCmd * cmd)
|
||||
int vcpufound = 0;
|
||||
unsigned char *cpumap;
|
||||
int cpumaplen;
|
||||
int i;
|
||||
enum { expect_num, expect_num_or_comma } state;
|
||||
|
||||
if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
|
||||
return FALSE;
|
||||
@ -1566,6 +1568,42 @@ cmdVcpupin(vshControl * ctl, vshCmd * cmd)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Check that the cpulist parameter is a comma-separated list of
|
||||
* numbers and give an intelligent error message if not.
|
||||
*/
|
||||
if (cpulist[0] == '\0') {
|
||||
vshError(ctl, FALSE, _("cpulist: Invalid format. Empty string."));
|
||||
virDomainFree (dom);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
state = expect_num;
|
||||
for (i = 0; cpulist[i]; i++) {
|
||||
switch (state) {
|
||||
case expect_num:
|
||||
if (!isdigit (cpulist[i])) {
|
||||
vshError( ctl, FALSE, _("cpulist: %s: Invalid format. Expecting digit at position %d (near '%c')."), cpulist, i, cpulist[i]);
|
||||
virDomainFree (dom);
|
||||
return FALSE;
|
||||
}
|
||||
state = expect_num_or_comma;
|
||||
break;
|
||||
case expect_num_or_comma:
|
||||
if (cpulist[i] == ',')
|
||||
state = expect_num;
|
||||
else if (!isdigit (cpulist[i])) {
|
||||
vshError(ctl, FALSE, _("cpulist: %s: Invalid format. Expecting digit or comma at position %d (near '%c')."), cpulist, i, cpulist[i]);
|
||||
virDomainFree (dom);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (state == expect_num) {
|
||||
vshError(ctl, FALSE, _("cpulist: %s: Invalid format. Trailing comma at position %d."), cpulist, i);
|
||||
virDomainFree (dom);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
cpumaplen = VIR_CPU_MAPLEN(VIR_NODEINFO_MAXCPUS(nodeinfo));
|
||||
cpumap = vshCalloc(ctl, 1, cpumaplen);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user