On Mon, Jun 28, 2010 at 4:03 PM, Jes Sorensen <jes.soren...@redhat.com> wrote:
> On 06/28/10 17:42, Blue Swirl wrote:
>> On Mon, Jun 28, 2010 at 2:50 PM, Jes Sorensen <jes.soren...@redhat.com> 
>> wrote:
>>> I figured out what was causing it. qemu-options.def has an
>>> #ifdef MAP_POPULATE in it, which isn't being set without sys/mmap.h
>>> being included. Pretty much every other #ifdef in qemu-options.def are
>>> based on CONFIG_foo settings or things like _WIN32 which do not change
>>> depending on header file inclusion.
>>>
>>> I think the easiest fix is to just add sys/mmap.h to the include list in
>>> os-posix.c, so I just posted a patch for that. Though, in principle we
>>> really shouldn't base qemu-options.def settings on defines pulled in
>>> from system header files.
>>
>> I think more flags should be added to arch_mask field, like
>> QEMU_ARCH_LINUX, QEMU_ARCH_POSIX and QEMU_ARCH_WIN32. Then the #ifdefs
>> should be removed. Prealloc command line flag stuff should be
>> conditional to CONFIG_LINUX only, there should be another check for
>> MAP_POPULATE where mem_preallocate is set.
>>
>> Alternatively, we could have more arch_mask flags like QEMU_MAP_POPULATE.
>
> Yeah, the problem with tying it to CONFIG_LINUX is that older version of
> Linux may not support it. Looking through the list, MAP_POPULATE is
> really an oddball in there though, so maybe it would be cleaner to catch
> it via configure and then use CONFIG_MAP_POPULATE or something like that?

There'd be 1:1 relation between MAP_POPULATE and CONFIG_MAP_POPULATE,
so maybe not.

Reply via email to