[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 7/9] xl: enable getting and setting soft
On Wed, 2014-05-28 at 16:33 +0100, Ian Campbell wrote: > On Wed, 2014-05-28 at 01:42 +0100, Dario Faggioli wrote: > > @@ -4653,17 +4656,32 @@ int main_vcpulist(int argc, char **argv) > > return 0; > > } > > > > -static int vcpupin(uint32_t domid, const char *vcpu, char *cpu) > > +int main_vcpupin(int argc, char **argv) > > { > > libxl_vcpuinfo *vcpuinfo; > > - libxl_bitmap cpumap; > > - > > - uint32_t vcpuid; > > + libxl_bitmap cpumap, cpumap_soft;; > > + uint32_t vcpuid, domid; > > + const char *vcpu; > > char *endptr; > > - int i, nb_cpu, nb_vcpu, rc = -1; > > + int opt, nb_cpu, nb_vcpu, rc = -1; > > + libxl_bitmap *soft = &cpumap_soft, *hard = &cpumap; > > + static struct option opts[] = { > > + {"soft", 0, 0, 's'}, > > I think this is a remnant of a previous iteration? > Gah! Sorry for this. I looked at the whole series looking for remnant a few times, but I guess it's true that we're blind wrt our own code! > > - if (vcpupin_parse(cpu, &cpumap)) > > + /* > > + * Syntax is: xl vcpu-pin <domid> <vcpu> <hard> <soft> > > + * We want to handle all the following cases ('-' means > > + * "leave it alone"): > > + * xl vcpu-pin 0 3 3,4 > > + * xl vcpu-pin 0 3 3,4 - > > + * xl vcpu-pin 0 3 - 6-9 > > + * xl vcpu-pin 0 3 3,4 6-9 > > + */ > > + if (argc <= 4 || (argc == 5 && !strcmp(argv[optind+3], "-"))) > > You are mixing raw argc values and offsets from optind here, which is a > bit confusing. > > It would be valid to do > argc -= optind; > argv += optind; > optind = 0; > and then use argv[0] ...[1] etc. > I agree it's confusing, and I like this solution above, I'll go for it. > > + soft = NULL; > > + if (argc == 5 && !strcmp(argv[optind+2], "-")) > > + hard = NULL; > > + > > + if (hard && vcpupin_parse(argv[optind+2], &cpumap)) > > + goto out; > > + if (soft && vcpupin_parse(argv[optind+3], &cpumap_soft)) > > goto out; > > You've just parsed argv[option+2] and [...+3] into hard and soft > respectively. > > Might some of this be simplified by making vcpupin_parse accept NULL > and/or making it handle "-"? e.g. > hard = argv[opting+2] > soft = argc > XXX > argc[optind+3] : NULL > vcpupin_parse(&hard, &cpumap); > vcpupin_parse(&soft, &cpumap); > > (sets hard/soft == NULL on input of "-", returns silently on hard/soft > == NULL. > I think this will make it simpler. I'll give it a try. > > diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c > > index 4279b9f..d03c52a 100644 > > --- a/tools/libxl/xl_cmdtable.c > > +++ b/tools/libxl/xl_cmdtable.c > > @@ -218,7 +218,7 @@ struct cmd_spec cmd_table[] = { > > { "vcpu-pin", > > &main_vcpupin, 1, 1, > > "Set which CPUs a VCPU can use", > > - "<Domain> <VCPU|all> <CPUs|all>", > > + "<Domain> <VCPU|all> <Hard affinity|all> <Soft affinity|all", > > Missing a closing > > Ok. > Also, I think "-" is a valid alternative now, right? > Yes it is. Thanks and Regards, Dario -- <<This happens because I choose it to happen!>> (Raistlin Majere) ----------------------------------------------------------------- Dario Faggioli, Ph.D, http://about.me/dario.faggioli Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK) Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |