[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 7/9] util: Use meson checks for valloc() and memalign() presen
From: |
Peter Maydell |
Subject: |
[PATCH v2 7/9] util: Use meson checks for valloc() and memalign() presence |
Date: |
Fri, 4 Mar 2022 11:21:24 +0000 |
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
---
meson.build | 2 ++
util/memalign.c | 6 ++++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index eae0e4febb3..74f4e05c82b 100644
--- a/meson.build
+++ b/meson.build
@@ -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))
diff --git a/util/memalign.c b/util/memalign.c
index c3280528d24..2a139a5695d 100644
--- a/util/memalign.c
+++ b/util/memalign.c
@@ -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;
--
2.25.1
- [PATCH v2 4/9] util: Return valid allocation for qemu_try_memalign() with zero size, (continued)
- [PATCH v2 4/9] util: Return valid allocation for qemu_try_memalign() with zero size, Peter Maydell, 2022/03/04
- [PATCH v2 5/9] meson.build: Don't misdetect posix_memalign() on Windows, Peter Maydell, 2022/03/04
- [PATCH v2 6/9] util: Share qemu_try_memalign() implementation between POSIX and Windows, Peter Maydell, 2022/03/04
- [PATCH v2 8/9] util: Put qemu_vfree() in memalign.c, Peter Maydell, 2022/03/04
- [PATCH v2 7/9] util: Use meson checks for valloc() and memalign() presence,
Peter Maydell <=
- [PATCH v2 9/9] osdep: Move memalign-related functions to their own header, Peter Maydell, 2022/03/04