|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 5/5] libxl, hvmloader: Don't relocate memory for MMIO hole
On Thu, 20 Jun 2013, George Dunlap wrote:
> On 20/06/13 11:12, Jan Beulich wrote:
> > > > > On 20.06.13 at 11:22, George Dunlap <george.dunlap@xxxxxxxxxxxxx>
> > > > > wrote:
> > > On 19/06/13 18:18, Stefano Stabellini wrote:
> > > > On Tue, 18 Jun 2013, George Dunlap wrote:
> > > > > + s = xenstore_read(HVM_XS_ALLOW_MEMORY_RELOCATE, NULL);
> > > > > + if ( s )
> > > > > + allow_memory_relocate = (bool)strtoll(s, NULL, 0);
> > > > > + printf("Relocating guest memory for lowmem MMIO space %s\n",
> > > > > + allow_memory_relocate?"enabled":"disabled");
> > > > It doesn't take a strtoll to parse a boolean.
> > > As discussed in v1, strtoll is the only "XtoY" function available in
> > > hvmloader. :-) The only other option would be to explicitly compare for
> > > "1" or "0" (or do some half-baked *s-'0' thing).
> > >
> > > This does make me think though -- what is the semantics of casting to a
> > > bool? Is it !!, or will it essentially clip off the high bits? (e.g.,
> > > would "2" become "1", or "0"?)
> > If bool is a typedef or #define of _Bool, and _Bool is a complier
> > supplied type, then the cast will do the right thing. But doing the
> > assignment without the cast would too, i.e. the cast is pointless
> > (as I think IanJ had already pointed out).
>
> Thanks for the info.
>
> It may be pointless from a functionality perspective, but it's also harmless.
> It won't add a single byte to the compiled code, but the 6 characters will
> remind a developer reading the source that there is a cast being done here,
> just in case it should ever become important. Not super important, but I'd
> rather leave it in.
>
> > However, if we want to be on the safe side and also make the
> > code work with a compiler that doesn't have a built-in _Bool, I'd
> > think
> >
> > allow_memory_relocate = !s || strtoll(s, NULL, 0);
> >
> > would be the better statement (without any if() surrounding it,
> > and without the variable declaration having an initializer.
>
> Doing this would effectively hide the "default" value. This is bad because 1)
> it's not clear what the default is to someone just scanning the code, 2) it's
> hard to change. (Consider how you'd modify the above statement if you wanted
> to default to 0 instead.)
I would avoid the strtoll altogether:
if (s != NULL && s[0] != '0')
allow_memory_relocate = 1;
else
allow_memory_relocate = 0;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |