mirror of
https://github.com/qemu/qemu.git
synced 2024-11-24 19:33:39 +08:00
util: Use meson checks for valloc() and memalign() presence
Instead of assuming that all CONFIG_BSD have valloc() and anything else is memalign(), explicitly check for those functions in meson.build and use the "is the function present" define. Tests for specific functionality are better than which-OS checks; this also lets us give a helpful error message if somehow there's no usable function present. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20220226180723.1706285-8-peter.maydell@linaro.org
This commit is contained in:
parent
5c8c714a0a
commit
88454f844e
@ -1623,6 +1623,8 @@ config_host_data.set('CONFIG_POSIX_FALLOCATE', cc.has_function('posix_fallocate'
|
||||
# thinking that Windows has posix_memalign()
|
||||
config_host_data.set('CONFIG_POSIX_MEMALIGN', cc.has_function('posix_memalign', prefix: '#include <stdlib.h>'))
|
||||
config_host_data.set('CONFIG_ALIGNED_MALLOC', cc.has_function('_aligned_malloc'))
|
||||
config_host_data.set('CONFIG_VALLOC', cc.has_function('valloc'))
|
||||
config_host_data.set('CONFIG_MEMALIGN', cc.has_function('memalign'))
|
||||
config_host_data.set('CONFIG_PPOLL', cc.has_function('ppoll'))
|
||||
config_host_data.set('CONFIG_PREADV', cc.has_function('preadv', prefix: '#include <sys/uio.h>'))
|
||||
config_host_data.set('CONFIG_SEM_TIMEDWAIT', cc.has_function('sem_timedwait', dependencies: threads))
|
||||
|
@ -56,10 +56,12 @@ void *qemu_try_memalign(size_t alignment, size_t size)
|
||||
}
|
||||
#elif defined(CONFIG_ALIGNED_MALLOC)
|
||||
ptr = _aligned_malloc(size, alignment);
|
||||
#elif defined(CONFIG_BSD)
|
||||
#elif defined(CONFIG_VALLOC)
|
||||
ptr = valloc(size);
|
||||
#else
|
||||
#elif defined(CONFIG_MEMALIGN)
|
||||
ptr = memalign(alignment, size);
|
||||
#else
|
||||
#error No function to allocate aligned memory available
|
||||
#endif
|
||||
trace_qemu_memalign(alignment, size, ptr);
|
||||
return ptr;
|
||||
|
Loading…
Reference in New Issue
Block a user